# these are the handshake signals between fetch and decode/execute
# fetch FSM can run as soon as the PC is valid
# these are the handshake signals between fetch and decode/execute
# fetch FSM can run as soon as the PC is valid
- # actually use a nmigen FSM for the first time (w00t)
- # this FSM is perhaps unusual in that it detects conditions
- # then "holds" information, combinatorially, for the core
+ # the FSMs here are perhaps unusual in that they detect conditions
+ # then "hold" information, combinatorially, for the core
# (as opposed to using sync - which would be on a clock's delay)
# this includes the actual opcode, valid flags and so on.
# (as opposed to using sync - which would be on a clock's delay)
# this includes the actual opcode, valid flags and so on.
self.fetch_fsm(m, core, pc, svstate, nia,
fetch_pc_ready_o, fetch_pc_valid_i,
fetch_insn_valid_o, fetch_insn_ready_i)
self.fetch_fsm(m, core, pc, svstate, nia,
fetch_pc_ready_o, fetch_pc_valid_i,
fetch_insn_valid_o, fetch_insn_ready_i)
self.issue_fsm(m, core, pc_changed, sv_changed, nia,
dbg, core_rst,
fetch_pc_ready_o, fetch_pc_valid_i,
self.issue_fsm(m, core, pc_changed, sv_changed, nia,
dbg, core_rst,
fetch_pc_ready_o, fetch_pc_valid_i,