Skip to content

Commit ef4f68a

Browse files
rroohhhwhitequark
authored andcommitted
hdl._dsl: use Enum for fsm state signal
1 parent b6bf515 commit ef4f68a

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

amaranth/hdl/_dsl.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -581,17 +581,17 @@ def _pop_ctrl(self):
581581
data["name"], data["init"], data["encoding"], data["decoding"], data["states"], data["ongoing"]
582582
fsm_state_src_locs = data["state_src_locs"]
583583
if not fsm_states:
584-
data["signal"] = Signal(0, name=f"{fsm_name}_state", src_loc_at=2)
584+
data["signal"] = Signal(0, name=f"{fsm_name}_state", src_loc_at=3)
585585
return
586586
if fsm_init is None:
587587
init = fsm_encoding[next(iter(fsm_states))]
588588
else:
589589
init = fsm_encoding[fsm_init]
590590
# The FSM is encoded such that the state with encoding 0 is always the init state.
591591
fsm_decoding.update((n, s) for s, n in fsm_encoding.items())
592-
data["signal"] = fsm_signal = Signal(range(len(fsm_encoding)), init=init,
593-
name=f"{fsm_name}_state", src_loc_at=2,
594-
decoder=lambda n: f"{fsm_decoding[n]}/{n}")
592+
data["signal"] = fsm_signal = Signal(
593+
Enum(f"{fsm_name}State", [(f"{fsm_decoding[n]}/{n}", n) for n in range(len(fsm_decoding))]),
594+
init=init, name=f"{fsm_name}_state", src_loc_at=3)
595595

596596
for name, sig in fsm_ongoing.items():
597597
self._top_comb_statements.append(

0 commit comments

Comments
 (0)