Skip to content

Commit

Permalink
[rtl] fix responseFinish in Execution unit.
Browse files Browse the repository at this point in the history
  • Loading branch information
qinjun-li authored and sequencer committed Aug 26, 2024
1 parent 6929491 commit e1426a9
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions t1/src/laneStage/LaneExecutionBridge.scala
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,12 @@ class LaneExecutionBridge(parameter: LaneParameter, isLastSlot: Boolean, slotInd
// execution result from execute unit
val executionResult = RegInit(0.U(parameter.datapathWidth.W))
val crossWriteLSB: Option[UInt] = Option.when(isLastSlot)(RegInit(0.U(parameter.datapathWidth.W)))
val responseFinish: Bool = RegInit(true.B)
val outStandingRequestSize: Int = 4 max parameter.vfuInstantiateParameter.maxLatency + 3
val outStanding: UInt = RegInit(0.U(log2Ceil(outStandingRequestSize).W))
val outStandingUpdate: UInt = Mux(vfuRequest.fire, 1.U(outStanding.getWidth.W), (-1.S(outStanding.getWidth.W)).asUInt)
val responseFinish: Bool = outStanding === 0.U
when(vfuRequest.fire ^ dataResponse.fire) {
responseFinish := dataResponse.fire
outStanding := outStanding + outStandingUpdate
}

/** mask format result for current `mask group` */
Expand Down

0 comments on commit e1426a9

Please sign in to comment.