Merge WAIT_RESET into INSN_FETCH on the Issue FSM
authorCesar Strauss <cestrauss@gmail.com>
Sun, 7 Mar 2021 11:49:55 +0000 (08:49 -0300)
committerCesar Strauss <cestrauss@gmail.com>
Sun, 7 Mar 2021 12:39:05 +0000 (09:39 -0300)
commite4b8ab4151fd21af0c9a7958df3c05026332b760
tree6787c1ddb4f8e8b0fe0a9639be54eaf75a90e065
parentd94c6838cc15b0c98e8609b299e68151aa72cec8
Merge WAIT_RESET into INSN_FETCH on the Issue FSM

In a VL==0 loop, while we are skipping vector instructions, there needs to
be a way to stop the core. Unfortunately, this means duplicating the
corresponding code at instruction end, since there is no state in common
on either loop (the VL==0 instruction skip loop and the VL>1 vector loop).

This does makes it a little non-deterministic.

Normally, we would stop the core at instruction end, but could instead end
up stopping at instruction start. For this to happen, you need to stop the
core at the right moment, just after the instruction ended and before
the next instruction begins.

A way to avoid this, if necessary, would be to create a duplicate of the
INSN_FETCH state, that doesn't wait on "core stop" release.

Since we are now waiting on "core stop" release at instruction start
anyway, there is no need for the special WAIT_RESET state anymore.
src/soc/simple/issuer.py