build.dsl: clean up inversion logic.

* Add invert= argument to DiffPairs() constructor, like in Pins().
  * Make PinsN() and DiffPairsN() pass invert= to the corresponding
    construtor instead of mutating.
This commit is contained in:
whitequark 2020-10-26 19:50:21 +00:00
parent 87454b0b6f
commit e3207b74f4
2 changed files with 8 additions and 8 deletions

View file

@ -55,13 +55,11 @@ class Pins:
def PinsN(*args, **kwargs):
pins = Pins(*args, **kwargs)
pins.invert = True
return pins
return Pins(*args, invert=True, **kwargs)
class DiffPairs:
def __init__(self, p, n, *, dir="io", conn=None, assert_width=None):
def __init__(self, p, n, *, dir="io", invert=False, conn=None, assert_width=None):
self.p = Pins(p, dir=dir, conn=conn, assert_width=assert_width)
self.n = Pins(n, dir=dir, conn=conn, assert_width=assert_width)
@ -71,7 +69,7 @@ class DiffPairs:
.format(self.p, self.n))
self.dir = dir
self.invert = False
self.invert = bool(invert)
def __len__(self):
return len(self.p.names)
@ -85,9 +83,7 @@ class DiffPairs:
def DiffPairsN(*args, **kwargs):
diff_pairs = DiffPairs(*args, **kwargs)
diff_pairs.invert = True
return diff_pairs
return DiffPairs(*args, invert=True, **kwargs)
class Attrs(OrderedDict):

View file

@ -94,6 +94,10 @@ class DiffPairsTestCase(FHDLTestCase):
self.assertEqual(dp.n.names, ["B0"])
self.assertEqual(dp.invert, True)
def test_invert_arg(self):
dp = DiffPairs(p="A0", n="B0", invert=True)
self.assertEqual(dp.invert, True)
def test_conn(self):
dp = DiffPairs(p="0 1 2", n="3 4 5", conn=("pmod", 0))
self.assertEqual(list(dp), [