Commit Graph

133 Commits

Author SHA1 Message Date
Hansung Kim
a7baf57e49 Left out fix 2023-04-23 12:09:47 -07:00
Hansung Kim
a71c0aed73 Don't set default filename in class initializers 2023-04-23 12:07:52 -07:00
Hansung Kim
b6115cc394 Fix generating PutPartialData from toTLA
Including mask in the argument calls the method override that generates
PutPartialData.
2023-04-23 11:53:42 -07:00
Hansung Kim
0c0a8ec553 SimMemTraceLogger: store handle in class 2023-04-23 11:27:06 -07:00
Richard Yan
a84757f8f8 restructure parameters into config object && cleanup 2023-04-23 03:09:20 -07:00
Richard Yan
d28216182c merge graphics 2023-04-23 00:54:24 -07:00
Richard Yan
684f732a9a it compiles (& coal gen reorg) 2023-04-23 00:41:35 -07:00
Hansung Kim
2a82e8d119 Fix TL data mask stencil logic in MemTraceLogger 2023-04-23 00:39:59 -07:00
Hansung Kim
6cd27faed2 Respect old req size in uncoalescer 2023-04-22 23:04:47 -07:00
Richard Yan
85e3a6a940 somehow merged 2023-04-22 21:56:57 -07:00
Richard Yan
b895d304bb pre-merge 2023-04-22 21:28:38 -07:00
Hansung Kim
90a797e71a Make MemTraceDriver generate word-sized requests
Try to model the core's behavior which accesses cache in word granularity.  This
also simplifies the coalescer design as coalescer no longer needs to uncoalesce
response data chunk into single bytes (and therefore fewer muxes).
2023-04-22 21:04:45 -07:00
Hansung Kim
c5d722112b Make word size global object 2023-04-22 14:58:02 -07:00
Hansung Kim
8a7e6f1391 Replace hardcoded trace widths with proper params 2023-04-21 18:20:16 -07:00
Hansung Kim
bbe62a8583 Properly count per-lane req/resps 2023-04-21 17:24:43 -07:00
Hansung Kim
db06bda674 Count req/resp lines and bytes to coalescer and test match
Note total bytes in requests and responses (i.e. traffic) don't
need to match because of redundant requests to the same address may get
coalesced.
2023-04-21 16:49:19 -07:00
Hansung Kim
3ba566b9f7 Give slack time after trace EOF before sim termination
... so that we make sure to receive all outstanding responses.
This fixes the response traces being truncated too early.
2023-04-21 16:27:20 -07:00
Hansung Kim
3f9f7a1d67 Generate proper AccessAck/AccessAckData from response queue 2023-04-21 16:14:52 -07:00
Hansung Kim
e04ffe2130 Generate separate traces per logger/req/resp 2023-04-21 15:53:15 -07:00
Hansung Kim
6ae08b6541 Add missing sizeWidth to uncoalescer test 2023-04-21 11:24:57 -07:00
Hansung Kim
de478dcca9 Generate both Put/Get for non-coalesced requests 2023-04-20 21:57:40 -07:00
Hansung Kim
a9719d5e36 Split tl*OpcodeIsStore out to global scope 2023-04-20 21:42:56 -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
7e405b5355 Re-enable coalescer in TLRAMCoalescerLoggerTest
Now that the driver and logger are working (kinda).
2023-04-20 21:11:12 -07:00
Hansung Kim
b2ab45f5e2 Change parameters to spatial-only coalescing 2023-04-20 21:09:19 -07:00
Richard Yan
8715bede37 WIP coalescer restructure 2023-04-19 01:03:30 -07:00
Hansung Kim
322f340657 Manage to make new bugs while doing that 2023-04-18 00:14:33 -07:00
Hansung Kim
65a22b7fcb Use TLMessages constants instead of numbers 2023-04-18 00:09:48 -07:00
Hansung Kim
2ac5ee398a Doc 2023-04-17 21:31:13 -07:00
Hansung Kim
334d05b222 Remove leftover printf 2023-04-17 21:17:23 -07:00
Hansung Kim
02ce969c67 Fix width mismatch for source logger 2023-04-17 18:52:38 -07:00
Hansung Kim
d4a51cfee5 Log source ID in the trace 2023-04-17 18:43:17 -07:00
Hansung Kim
41d520a991 Log both request and response in trace logger
Inside DPI code, have a vector of unique_ptrs that act as handles to multiple
different trace logger instances.  Each logger instance is instantiated in a
single instance of the Verilog module, and multiple of these Verilog modules may
be instantiated in the Chisel module (see simReq and simResp in MemTraceLogger).
2023-04-17 18:10:13 -07:00
Hansung Kim
8978c2a812 trait HasTraceReq 2023-04-17 16:51:37 -07:00
Hansung Kim
f60602fc34 Write trace from logger in the same format as driver 2023-04-17 16:26:25 -07:00
Hansung Kim
282434eb7d Basic C++ file IO for trace logger 2023-04-17 16:20:27 -07:00
Hansung Kim
1a90ad52ac Cleanup tracer debug prints 2023-04-17 15:50:46 -07:00
Hansung Kim
8e6a5f4bce Fix address & data handling in memtrace driver and logger
* TileLink doesn't alter the `address` field from what we originally used in the
  Get/Put call.
* Same goes for the `data` field.
* The only thing TL generates by itself is `mask`.  This means we have to align
  data to the beatBytes boundary ourselves when Putting, and also taking
  the right sublanes using the mask when Getting.
2023-04-17 15:30:30 -07:00
Hansung Kim
57874a564e Set TL size according to trace from driver
Mask will be set accordingly by the TL generator methods (Get/Put).
2023-04-12 14:23:17 -07:00
Hansung Kim
8e763b512a Relay full trace line info to DPI 2023-04-12 13:54:59 -07:00
Hansung Kim
1057ed59d3 Parse log2(size) from trace; set is_store from TL opcode 2023-04-11 18:23:50 -07:00
Hansung Kim
71f334bb22 Fix size parsing from memtrace 2023-04-11 17:36:45 -07:00
Hansung Kim
62f940618e Convert manual bitshift to Chisel bitfield access 2023-04-10 21:04:04 -07:00
Hansung Kim
dca52ace0b Fix verilog lint error 2023-04-10 20:37:26 -07:00
Hansung Kim
b53711965e Connect TL edge data to SimMemTraceLogger
TODO: since TileLink rounds all address down to a multiple of its beat
size (8 in the current code), we can't directly compare the memory trace
input to its output.  Need to take masks into account.
2023-04-10 20:24:27 -07:00
Hansung Kim
af29acdcda Placeholder for MemTraceLogger C++ code 2023-04-09 14:53:02 -07:00
Hansung Kim
452cc40eb7 Make MemTraceLogger pass-through node
Instead of making MemTraceLogger a TL slave, make it an IdentityNode
that simply snoops on the TL edges and generates logs.
We can attach a TLRAM at the downstream to actually get response back,
rather than MemTraceLogger simply absorbing all requests.
2023-04-07 17:22:52 -07:00
Hansung Kim
109ad2cac0 Write MemTraceLogger and new synthesizable unittest 2023-04-07 16:23:14 -07:00
Hansung Kim
abecd30b2b Store sourceId for every old req entry in table 2023-04-07 14:50:40 -07:00
Vamber Yang
8e5254292b Attach MemTracer to SBus , all physical addr hashed between 0X80000000->0X90000000 2023-04-05 23:43:22 -07:00