Fix/prologue synchronization#296
Conversation
|
|
||
| s.recv_const.rdy @= reduce_or(s.fu_recv_const_rdy_vector) | ||
| s.recv_const.rdy @= reduce_or(s.fu_recv_const_rdy_vector) | \ | ||
| ((s.prologue_count_inport != 0) & |
There was a problem hiding this comment.
Why the constant should be consumed during prologue?
There was a problem hiding this comment.
And why preloading those consts to the const mem and then skipping them?
There was a problem hiding this comment.
The const queue is driven by the control stream, not by whether the FU operation is actually executed after prologue masking.
Concrete example: suppose ctrl slot 0 is ADD_CONST with prologue_count=1, and ctrl slot 1 is another const-consuming op. The first dynamic visit to slot 0 is skipped by prologue, but the control stream still advances. If we do not consume the const for slot 0, that stale const remains at the head of the const queue, so slot 1 reads the wrong const.
So this fix keeps the const queue aligned with the scheduled control words. The FU op is masked to OPT_NAH for the prologue cycle, but the corresponding const token is still consumed.
| # A prologued input is consumed but not forwarded. This keeps the | ||
| # channel aligned with the control schedule. | ||
| if s.in_dir[i] > 0: | ||
| s.recv_required_vector[s.in_dir_local[i]] @= 1 |
There was a problem hiding this comment.
I don't get this, why crossbar can consume data during prologue?
I mean no offense, but branch kernel-submit is 32 commits behind branch master, can you sync with the master first? CrossbarRTL has been updated during these commits.
There was a problem hiding this comment.
I removed the Crossbar change from this PR. It now only touches FlexibleFuRTL.py and its focused test for const-queue alignment during prologue.
92bd204 to
4d0f9ae
Compare
4d0f9ae to
07a826a
Compare
|
Concrete example: cycle 0: ctrl = ADD, prologue_count = 1 cycle 1: prologue_count = 0 |
Summary
Addresses #292 with a minimized prologue fix. This PR only updates
FlexibleFuRTL.pyand its focused test.Changes
OPT_NAHfor the skipped cycle.No new ports or interfaces are introduced.