hdl.dsl: gracefully handle FSM with no states.
This commit is contained in:
parent
146f3cb684
commit
3388b5b085
|
@ -337,6 +337,8 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
||||||
if name == "FSM":
|
if name == "FSM":
|
||||||
fsm_signal, fsm_reset, fsm_encoding, fsm_decoding, fsm_states = \
|
fsm_signal, fsm_reset, fsm_encoding, fsm_decoding, fsm_states = \
|
||||||
data["signal"], data["reset"], data["encoding"], data["decoding"], data["states"]
|
data["signal"], data["reset"], data["encoding"], data["decoding"], data["states"]
|
||||||
|
if not fsm_states:
|
||||||
|
return
|
||||||
fsm_signal.nbits = bits_for(len(fsm_encoding) - 1)
|
fsm_signal.nbits = bits_for(len(fsm_encoding) - 1)
|
||||||
if fsm_reset is None:
|
if fsm_reset is None:
|
||||||
fsm_signal.reset = fsm_encoding[next(iter(fsm_states))]
|
fsm_signal.reset = fsm_encoding[next(iter(fsm_states))]
|
||||||
|
|
|
@ -449,6 +449,14 @@ class DSLTestCase(FHDLTestCase):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def test_FSM_empty(self):
|
||||||
|
m = Module()
|
||||||
|
with m.FSM():
|
||||||
|
pass
|
||||||
|
self.assertRepr(m._statements, """
|
||||||
|
()
|
||||||
|
""")
|
||||||
|
|
||||||
def test_FSM_wrong_redefined(self):
|
def test_FSM_wrong_redefined(self):
|
||||||
m = Module()
|
m = Module()
|
||||||
with m.FSM():
|
with m.FSM():
|
||||||
|
|
Loading…
Reference in a new issue