1. ensure FatBank prioritze Ack read over Ack write to downstream
coalescer
2. Between FatBank and L2, use the new sourceGenerator to allow both Read and
Write Reqs sharing the same pool of available src_ids
Issues addressed:
1. FatBank ack to downstream coalescer with the correct size on ChannelD
2. FatBank ack to downstream coalescer immediately after W Req
3. FatBank generates unique ID for W Req to L2
4. Allows coalescer to config max Coal to L1 ReadSize at compile time
Ungoing issues:
1. Magic Number
2. Verification
3. Multi-Bank Integration
This makes it trickier to hook the driver up to sbus since we need to
assert its io.start. We still need io.finished coming out of it to tell
when the trace finished.
Useful for testing with different memtraces without having to recompile
design. This worked before for the trace driver but not for trace
logger.
Usage: make CONFIG=MemtraceCoreConfig run-binary-debug BINARY=none \
EXTRA_SIM_FLAGS="+memtracefile=nvbit.vecadd.n100000.filter_sm0.lane4.broken.trace"
Now uncoalescer no longer handles constructing and enqueueing entries
to the inflight table; it simply queries the table and works with the
found row. Enqueueing / looking-up of the table is clearly split
between request and response flow.
TODO: delegate sourceId gen to inflight table and remove CoalSourceGen
Otherwise memtrace driver might send single-warp requests split into
multiple cycles, and coalescer (CoalShiftQueue) thinks they belong to
different warps.
Now do proper sourcegen for the tlCoal edge that's coming out
of the coalescer manager node. This also prevents inflight table from
being full.
This means we move setting source ID of coalReq to outside the
coalescer, because sourceGen needs looking into response bits as well,
which is easier to do outside coalescer at the toplevel.
FIXME: coalescer unit test is still broken.
This requires config.addressWidth to be increased to 32.
FIXME: This breaks CoalescerUnitTest with unsatisfied requirement
`Link's max transfer (8) < List<...>'s beatBytes (32)`.
Connect coalescer output directly to the uncoalescer at the toplevel, and do
table entry construction entirely inside the module.
WIP: unittest is very broken as a result of this.