Skip to content

Commit 754dd2b

Browse files
committed
timing(MainPipe): fix critical path from Dir error to GrantBuffer
Consider the following timing path: The `error` signal returned by Directory is used by forwarding snoop to determine whether to allocate an MSHR. If there is an error, a SnpResp is returned directly; otherwise, an MSHR needs to be allocated. This signal also affects the opcode sent to GrantBuffer. GrantBuffer uses whether the opcode is HintAck to decide whether to enqueue. However, the opcode is, either the opcode pre-set by MSHR in MSHR requests, or `sink_req_s3.bits.opcode` generated in s3. It can be determined simply by using `mshr_req_s3` because when `valid` output to GrantBuffer is false, we do not need an accurate opcode.
1 parent 95e8de9 commit 754dd2b

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

src/main/scala/coupledL2/tl2chi/MainPipe.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ class MainPipe(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes
663663
txdat_s3.bits.task := source_req_s3
664664
txdat_s3.bits.data.data := data_s3
665665
d_s3.bits.task := source_req_s3
666+
d_s3.bits.opcode := Mux(mshr_req_s3, req_s3.opcode, sink_req_s3.bits.opcode)
666667
d_s3.bits.data.data := data_s3
667668

668669
when (task_s3.valid) {

0 commit comments

Comments
 (0)