fhdl.ast: fix Switch with constant test.
This commit is contained in:
parent
a0d555a9fc
commit
50ba443f92
|
@ -678,9 +678,9 @@ class Switch(Statement):
|
||||||
self.cases = OrderedDict()
|
self.cases = OrderedDict()
|
||||||
for key, stmts in cases.items():
|
for key, stmts in cases.items():
|
||||||
if isinstance(key, (bool, int)):
|
if isinstance(key, (bool, int)):
|
||||||
key = "{:0{}b}".format(key, len(test))
|
key = "{:0{}b}".format(key, len(self.test))
|
||||||
elif isinstance(key, str):
|
elif isinstance(key, str):
|
||||||
assert len(key) == len(test)
|
assert len(key) == len(self.test)
|
||||||
else:
|
else:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
if not isinstance(stmts, Iterable):
|
if not isinstance(stmts, Iterable):
|
||||||
|
|
|
@ -263,6 +263,20 @@ class DSLTestCase(FHDLTestCase):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def test_Switch_const_test(self):
|
||||||
|
m = Module()
|
||||||
|
with m.Switch(1):
|
||||||
|
with m.Case(1):
|
||||||
|
m.d.comb += self.c1.eq(1)
|
||||||
|
m._flush()
|
||||||
|
self.assertRepr(m._statements, """
|
||||||
|
(
|
||||||
|
(switch (const 1'd1)
|
||||||
|
(case 1 (eq (sig c1) (const 1'd1)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
def test_Case_width_wrong(self):
|
def test_Case_width_wrong(self):
|
||||||
m = Module()
|
m = Module()
|
||||||
with m.Switch(self.w1):
|
with m.Switch(self.w1):
|
||||||
|
|
Loading…
Reference in a new issue