Commit Graph

30 Commits

Author SHA1 Message Date
Richard Yan
c655874470 width widget in DummyCoalescingUnitTB 2023-04-28 20:47:47 -07:00
Richard Yan
900f5adb20 running coalescing flow 2023-04-26 01:23:21 -07:00
Richard Yan
99348e1e40 mostly running coalescing test 2023-04-25 02:50:14 -07:00
Richard Yan
3a0fdb2c67 WIP diplomacy set up for coal unit test 2023-04-25 02:26:13 -07:00
Richard Yan
be40c77d06 merge graphics 2023-04-25 00:10:51 -07:00
Richard Yan
37620400db WIP coalescing flow test 2023-04-25 00:09:23 -07:00
Hansung Kim
31e04e9402 Fix CoalShiftQueue invalidate logic
IO type change to Valid[UInt] was not reflected in the valid bit logic.
2023-04-24 14:01:39 -07:00
Hansung Kim
7539c39c45 Store SizeEnum in entry instead of UInt 2023-04-23 22:34:19 -07:00
Hansung Kim
0f2e4ee8aa Store UInt instead of ChiselEnum in entry; pass tests
Scala isn't happy with storing ChiselEnum type for some reason
2023-04-23 15:28:12 -07:00
Hansung Kim
8cee61a591 Uncoalesce using table size enum 2023-04-23 14:42:10 -07:00
Hansung Kim
ccf9b95fb5 Create custom response bundle to decouple from TileLink
... and easier unit testing.
2023-04-23 13:37:10 -07:00
Hansung Kim
6ae08b6541 Add missing sizeWidth to uncoalescer test 2023-04-21 11:24:57 -07:00
Hansung Kim
de6d6eee1a Fix request shift queue not enqueuing when empty
The queue was enabling shifting of the registers whenever deq.ready
was 1, even when the queue was empty.  This caused `wen` to disable
writing enq.bits to any of the entries in the queue.  Fixed by setting
`shift` to 0 when queue is empty.
2023-04-20 21:12:19 -07:00
Hansung Kim
abecd30b2b Store sourceId for every old req entry in table 2023-04-07 14:50:40 -07:00
Hansung Kim
d62732fb89 Invalidate outgoing per-lane requests that got coalesced
Now the response queue no longer blocks the flow!
2023-04-01 14:33:46 -07:00
Hansung Kim
d9f6e27a04 Move coalescer chiseltest to its own package 2023-03-31 20:51:34 -07:00
Hansung Kim
4aabbecda1 Do not deassert deq.valid right after invalidate(head)
... to avoid combinational cycle.
2023-03-31 20:40:12 -07:00
Hansung Kim
1c0c8fa112 Complete test for enqueuing to invalidated tail 2023-03-31 20:15:49 -07:00
Hansung Kim
3ee639f376 Eliminate unnecessary delay when invalidating head
When invalidate signal is given for queue head, that head should be
gone immediately at the next cycle, regardless of what deq.ready was
at the previous cycle.
2023-03-31 19:55:36 -07:00
Hansung Kim
6ca22a39e0 Implement automatic dequeuing of invalid entries 2023-03-31 19:40:10 -07:00
Hansung Kim
f44dfc8d5a Implement invalidation for the queue 2023-03-31 19:25:45 -07:00
Hansung Kim
a0d75530cb Use used mask in CoalShiftQueue
Easier to use than wptr when enqueuing & dequeueing at the same time.
2023-03-31 17:10:09 -07:00
Hansung Kim
303c43a5e2 Make CoalShiftQueue use wptr; add unit test
Cannot solely rely on valid mask because there may be holes in the
middle.
2023-03-29 19:06:08 -07:00
Hansung Kim
12b3b67687 Store multiple oldSrcId reqs per lane in a table row
The number of the per-lane reqs is controlled by `numPerLaneReqs`
rather than being set to 2 ** sourceWidth to allow some flexibility.
2023-03-29 14:02:41 -07:00
Hansung Kim
3b335bda18 Basic unit test for the uncoalescer 2023-03-29 00:50:13 -07:00
Hansung Kim
9bc8f0074b Make uncoalescer a separate module for better testability 2023-03-28 17:07:54 -07:00
Hansung Kim
23d8fa3be1 Write simple test for MultiPortQueue
... and comment out old CAM-based inflight table test.
2023-03-27 15:21:01 -07:00
Hansung Kim
2e06898dc0 Handle enqueue and lookup at the same cycle
This fixes the inflight table filling up to full after some time in the
memtrace simulation.
2023-03-13 16:22:22 -07:00
Hansung Kim
400b356cfb Fix lookup succeeding on invalid entry; add test case
also enable VCS FSDB annotation in chiseltest
2023-03-12 03:26:09 -07:00
Hansung Kim
6de95587de Add chiseltest for inflight table 2023-03-11 23:20:50 -08:00