Remove software-based barrier MMIO
This commit is contained in:
@@ -110,41 +110,5 @@ class RadianceClusterModuleImp(outer: RadianceCluster) extends ClusterModuleImp(
|
|||||||
b.resp <> synchronizer.io.resp // broadcast
|
b.resp <> synchronizer.io.resp // broadcast
|
||||||
}
|
}
|
||||||
|
|
||||||
// outer.barrierSlaveNode.in.foreach { case (b, e) =>
|
|
||||||
// val fakeBarrierRespId = RegNext(b.req.bits.barrierId)
|
|
||||||
// val fakeBarrierRespValid = RegNext(b.req.fire)
|
|
||||||
// b.req.ready := true.B // barrier module is always ready
|
|
||||||
// b.resp.valid := fakeBarrierRespValid
|
|
||||||
// b.resp.bits.barrierId := fakeBarrierRespId
|
|
||||||
// }
|
|
||||||
|
|
||||||
val allSyncedRegs = Seq.fill(numBarriers)(Wire(UInt(32.W)))
|
|
||||||
val perCoreSyncedRegs = Seq.fill(numBarriers)(Seq.fill(outer.numCores)(RegInit(0.U(32.W))))
|
|
||||||
(allSyncedRegs zip perCoreSyncedRegs).foreach{ case (all, per) =>
|
|
||||||
all := per.reduce((x0, x1) => (x0 =/= 0.U) && (x1 =/= 0.U))
|
|
||||||
|
|
||||||
val allPassed = per.map(_ === 2.U).reduce(_ && _)
|
|
||||||
when(allPassed) {
|
|
||||||
per.foreach(_ := 0.U)
|
|
||||||
}
|
|
||||||
|
|
||||||
dontTouch(all)
|
|
||||||
}
|
|
||||||
// FIXME: 4 cores per cluster hardcoded
|
|
||||||
outer.regNode.regmap(
|
|
||||||
0x00 -> Seq(RegField.r(32, allSyncedRegs(0))),
|
|
||||||
0x04 -> Seq(RegField(32, perCoreSyncedRegs(0)(0))),
|
|
||||||
0x08 -> Seq(RegField(32, perCoreSyncedRegs(0)(1))),
|
|
||||||
0x10 -> Seq(RegField.r(32, allSyncedRegs(1))),
|
|
||||||
0x14 -> Seq(RegField(32, perCoreSyncedRegs(1)(0))),
|
|
||||||
0x18 -> Seq(RegField(32, perCoreSyncedRegs(1)(1))),
|
|
||||||
0x20 -> Seq(RegField.r(32, allSyncedRegs(2))),
|
|
||||||
0x24 -> Seq(RegField(32, perCoreSyncedRegs(2)(0))),
|
|
||||||
0x28 -> Seq(RegField(32, perCoreSyncedRegs(2)(1))),
|
|
||||||
0x30 -> Seq(RegField.r(32, allSyncedRegs(3))),
|
|
||||||
0x34 -> Seq(RegField(32, perCoreSyncedRegs(3)(0))),
|
|
||||||
0x38 -> Seq(RegField(32, perCoreSyncedRegs(3)(1))),
|
|
||||||
)
|
|
||||||
|
|
||||||
println(s"======== barrierSlaveNode: ${outer.barrierSlaveNode.in(0)._2.barrierIdBits}")
|
println(s"======== barrierSlaveNode: ${outer.barrierSlaveNode.in(0)._2.barrierIdBits}")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user