Avoid a combinatorial loop on valid_o
authorCesar Strauss <cestrauss@gmail.com>
Tue, 9 Jun 2020 11:57:31 +0000 (08:57 -0300)
committerCesar Strauss <cestrauss@gmail.com>
Tue, 9 Jun 2020 12:15:50 +0000 (09:15 -0300)
commitc8c13adf3da9a6ca8b7765edc597ec7fdf19e8d8
tree18190ebe1cade697c9cd1402a40e4b04419d7e17
parent12297566322355ce5fed2e2a5460bea54f69e79e
Avoid a combinatorial loop on valid_o

The path was:

all_rd (1) -> all_rd_pulse (1) -> alui_l.s (1) ->
-> alu.p.valid_i (1) -> ALU (zero-delay) -> alu.n.valid_o (1) ->
-> rok_l.r (1) -> all_rd (0)

Decided to break the loop on the reset of the read-done, write proceed
latch (rok_l.r), with no ill effects on performance.

Added a test case for this, using the zero-delay ALU (OP_NOP).
src/soc/experiment/compalu_multi.py
src/soc/experiment/test/test_compalu_multi.py