Properly count per-lane req/resps
This commit is contained in:
@@ -273,6 +273,7 @@ class CoalescingUnitImp(outer: CoalescingUnit, numLanes: Int) extends LazyModule
|
|||||||
)
|
)
|
||||||
|
|
||||||
println(s"=========== table sourceWidth: ${sourceWidth}")
|
println(s"=========== table sourceWidth: ${sourceWidth}")
|
||||||
|
println(s"=========== table sizeBits: ${sizeBits}")
|
||||||
|
|
||||||
newEntry.source := coalSourceId
|
newEntry.source := coalSourceId
|
||||||
newEntry.lanes.foreach { l =>
|
newEntry.lanes.foreach { l =>
|
||||||
@@ -674,7 +675,7 @@ class TraceLine extends Bundle with HasTraceLine {
|
|||||||
val source = UInt(32.W)
|
val source = UInt(32.W)
|
||||||
val address = UInt(64.W)
|
val address = UInt(64.W)
|
||||||
val is_store = Bool()
|
val is_store = Bool()
|
||||||
val size = UInt(32.W) // this is log2(bytesize) as in TL A bundle
|
val size = UInt(8.W) // this is log2(bytesize) as in TL A bundle
|
||||||
val data = UInt(64.W)
|
val data = UInt(64.W)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -940,18 +941,26 @@ class MemTraceLogger(
|
|||||||
// the entire bits.
|
// the entire bits.
|
||||||
resp.address := 0.U
|
resp.address := 0.U
|
||||||
resp.data := tlOut.d.bits.data
|
resp.data := tlOut.d.bits.data
|
||||||
|
|
||||||
// stats
|
|
||||||
when(req.valid) {
|
|
||||||
numReqs := numReqs + 1.U
|
|
||||||
reqBytes := reqBytes + (1.U << tlIn.a.bits.size)
|
|
||||||
}
|
|
||||||
when(resp.valid) {
|
|
||||||
numResps := numResps + 1.U
|
|
||||||
respBytes := respBytes + (1.U << tlOut.d.bits.size)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stats
|
||||||
|
val numReqsThisCycle =
|
||||||
|
laneReqs.map { l => Mux(l.valid, 1.U(64.W), 0.U(64.W)) }.reduce { (v0, v1) => v0 + v1 }
|
||||||
|
val numRespsThisCycle =
|
||||||
|
laneResps.map { l => Mux(l.valid, 1.U(64.W), 0.U(64.W)) }.reduce { (v0, v1) => v0 + v1 }
|
||||||
|
val reqBytesThisCycle =
|
||||||
|
laneReqs.map { l => Mux(l.valid, 1.U(64.W) << l.size, 0.U(64.W)) }.reduce { (b0, b1) =>
|
||||||
|
b0 + b1
|
||||||
|
}
|
||||||
|
val respBytesThisCycle =
|
||||||
|
laneResps.map { l => Mux(l.valid, 1.U(64.W) << l.size, 0.U(64.W)) }.reduce { (b0, b1) =>
|
||||||
|
b0 + b1
|
||||||
|
}
|
||||||
|
numReqs := numReqs + numReqsThisCycle
|
||||||
|
numResps := numResps + numRespsThisCycle
|
||||||
|
reqBytes := reqBytes + reqBytesThisCycle
|
||||||
|
respBytes := respBytes + respBytesThisCycle
|
||||||
|
|
||||||
// Flatten per-lane signals to the Verilog blackbox input.
|
// Flatten per-lane signals to the Verilog blackbox input.
|
||||||
//
|
//
|
||||||
// This is a clunky workaround of the fact that Chisel doesn't allow partial
|
// This is a clunky workaround of the fact that Chisel doesn't allow partial
|
||||||
|
|||||||
Reference in New Issue
Block a user