[libre-riscv-dev] pipeline stages controlling delays
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Fri Apr 5 23:44:39 BST 2019
oink.
i realised overnight: the signals that need to be firebroken are not
p.o_ready and n.o_valid, it's p.i_valid and n.i_ready that need the
disconnect.
p.i_valid comes in from the previous stage as n.o_valid, and likewise
n.i_ready comes in from the *next* stage as p.o_ready, hence why i got
them confused.
by severing the "real" link between p.i_valid (external) and p.i_valid
(internal), the IO-control-handler (not going to call it a "Stage")
knows the difference between the *previous* stage having valid data
and the...
argh argh argh it's both, isn't it? if the stage is not ready, the
p.o_ready must not be sent, *and* the p.i_valid must be ignored.
hooray! that worked! there was already a function for checking
i_valid, i hooked into that and told it to return false if the stage
said that it's not ready.
ok.... so... i am guessing that the same trick needs to be applied to
the output.
l.
More information about the libre-riscv-dev
mailing list