parent
5ffb48b5fb
commit
e3324e1456
|
@ -328,6 +328,8 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
||||||
"expression, not {!r}"
|
"expression, not {!r}"
|
||||||
.format(pattern)) from e
|
.format(pattern)) from e
|
||||||
pattern_len = bits_for(pattern.value)
|
pattern_len = bits_for(pattern.value)
|
||||||
|
if pattern.value == 0:
|
||||||
|
pattern_len = 0
|
||||||
if pattern_len > len(switch_data["test"]):
|
if pattern_len > len(switch_data["test"]):
|
||||||
warnings.warn("Case pattern '{!r}' ({}'{:b}) is wider than switch value "
|
warnings.warn("Case pattern '{!r}' ({}'{:b}) is wider than switch value "
|
||||||
"(which has width {}); comparison will never be true"
|
"(which has width {}); comparison will never be true"
|
||||||
|
|
|
@ -502,6 +502,21 @@ class DSLTestCase(FHDLTestCase):
|
||||||
m.d.comb += dummy.eq(0)
|
m.d.comb += dummy.eq(0)
|
||||||
self.assertEqual(m._statements, {})
|
self.assertEqual(m._statements, {})
|
||||||
|
|
||||||
|
def test_Switch_zero_width(self):
|
||||||
|
m = Module()
|
||||||
|
s = Signal(0)
|
||||||
|
with m.Switch(s):
|
||||||
|
with m.Case(0):
|
||||||
|
m.d.comb += self.c1.eq(1)
|
||||||
|
m._flush()
|
||||||
|
self.assertRepr(m._statements["comb"], """
|
||||||
|
(
|
||||||
|
(switch (sig s)
|
||||||
|
(case (eq (sig c1) (const 1'd1)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
def test_Case_bits_wrong(self):
|
def test_Case_bits_wrong(self):
|
||||||
m = Module()
|
m = Module()
|
||||||
with m.Switch(self.w1):
|
with m.Switch(self.w1):
|
||||||
|
|
Loading…
Reference in a new issue