Deriving input_ready - when can this stage accept?
input_ready = !output_valid || output_ready
ACCEPTED
0
BUBBLES
0
CYCLE
0
PRODUCER
always has data
sending
THIS STAGE
empty
DOWNSTREAM
taking
input_valid = 1
output_valid = 0
input_ready = 1
output_ready = 1
EMPTY - nothing to destroy, so accept
The only two cases where I can accept
output_valid
output_ready
input_ready
0
×
1
empty - nothing to destroy
1
1
1
draining - out and in, same edge
1
0
0
full and blocked - must hold
In gates
output_valid = 0
1
output_ready = 1
tied 0
OR
input_ready
1
!0 || 1 = 1
clk
output_ready
output_valid
input_ready
accepted
delivered
▶ Play
Step ▸
↺ Reset
Rule: CORRECT
speed
space = play/pause · → = step · R = reset · M = swap rule