Skip to content

Commit 92a86cc

Browse files
Remove regs and logic gates in top module (#642)
* xscore: remove reg and logic in xscore top module * XSCore: remove logic in top module * Fp/Int block: fix write back bug Co-authored-by: Yinan Xu <[email protected]>
1 parent 49c0787 commit 92a86cc

File tree

5 files changed

+11
-9
lines changed

5 files changed

+11
-9
lines changed

src/main/scala/system/SoC.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class XSSoc()(implicit p: Parameters) extends LazyModule with HasSoCParameter {
182182
xs_core(i).module.io.externalInterrupt.msip := clint.module.io.msip(i)
183183
// xs_core(i).module.io.externalInterrupt.meip := RegNext(RegNext(io.meip(i)))
184184
xs_core(i).module.io.externalInterrupt.meip := plic.module.io.extra.get.meip(i)
185-
l2prefetcher(i).module.io.enable := xs_core(i).module.io.l2_pf_enable
185+
l2prefetcher(i).module.io.enable := RegNext(xs_core(i).module.io.l2_pf_enable)
186186
l2prefetcher(i).module.io.in <> l2cache(i).module.io
187187
}
188188

src/main/scala/xiangshan/XSCore.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -413,16 +413,16 @@ class XSCoreImp(outer: XSCore) extends LazyModuleImp(outer)
413413
ctrlBlock.io.toLsBlock <> memBlock.io.fromCtrlBlock
414414
ctrlBlock.io.csrCtrl <> integerBlock.io.csrio.customCtrl
415415

416-
val memBlockWakeUpInt = memBlock.io.wakeUpOutInt.slow.map(x => intOutValid(x))
417-
val memBlockWakeUpFp = memBlock.io.wakeUpOutFp.slow.map(x => fpOutValid(x))
416+
val memBlockWakeUpInt = memBlock.io.wakeUpOutInt.slow.map(WireInit(_))
417+
val memBlockWakeUpFp = memBlock.io.wakeUpOutFp.slow.map(WireInit(_))
418418
memBlock.io.wakeUpOutInt.slow.foreach(_.ready := true.B)
419419
memBlock.io.wakeUpOutFp.slow.foreach(_.ready := true.B)
420420

421421
fpExuConfigs.zip(floatBlock.io.wakeUpOut.slow).filterNot(_._1.writeIntRf).map(_._2.ready := true.B)
422422
val fpBlockWakeUpInt = fpExuConfigs
423423
.zip(floatBlock.io.wakeUpOut.slow)
424424
.filter(_._1.writeIntRf)
425-
.map(_._2).map(x => intOutValid(x, connectReady = true))
425+
.map(_._2)
426426

427427
intExuConfigs.zip(integerBlock.io.wakeUpOut.slow).filterNot(_._1.writeFpRf).map(_._2.ready := true.B)
428428
val intBlockWakeUpFp = intExuConfigs.filter(_.hasUncertainlatency)
@@ -466,7 +466,7 @@ class XSCoreImp(outer: XSCore) extends LazyModuleImp(outer)
466466
integerBlock.io.fenceio.sbuffer <> memBlock.io.fenceToSbuffer
467467

468468
memBlock.io.csrCtrl <> integerBlock.io.csrio.customCtrl
469-
memBlock.io.tlbCsr <> RegNext(integerBlock.io.csrio.tlb)
469+
memBlock.io.tlbCsr <> integerBlock.io.csrio.tlb
470470
memBlock.io.lsqio.roq <> ctrlBlock.io.roqio.lsq
471471
memBlock.io.lsqio.exceptionAddr.lsIdx.lqIdx := ctrlBlock.io.roqio.exception.bits.uop.lqIdx
472472
memBlock.io.lsqio.exceptionAddr.lsIdx.sqIdx := ctrlBlock.io.roqio.exception.bits.uop.sqIdx
@@ -485,7 +485,7 @@ class XSCoreImp(outer: XSCore) extends LazyModuleImp(outer)
485485

486486
// if l2 prefetcher use stream prefetch, it should be placed in XSCore
487487
assert(l2PrefetcherParameters._type == "bop")
488-
io.l2_pf_enable := RegNext(integerBlock.io.csrio.customCtrl.l2_pf_enable)
488+
io.l2_pf_enable := integerBlock.io.csrio.customCtrl.l2_pf_enable
489489

490490
if (!env.FPGAPlatform) {
491491
val id = hartIdCore()

src/main/scala/xiangshan/backend/FloatBlock.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,9 @@ class FloatBlock
171171
NRFpWritePorts,
172172
isFp = true
173173
))
174-
fpWbArbiter.io.in.drop(exeUnits.length).zip(wakeUpInRecode).foreach(x => x._1 <> x._2)
174+
fpWbArbiter.io.in.drop(exeUnits.length).zip(wakeUpInRecode).foreach(
175+
x => x._1 <> fpOutValid(x._2, connectReady = true)
176+
)
175177

176178
for((exu, i) <- exeUnits.zipWithIndex){
177179
val out, outReg = Wire(DecoupledIO(new ExuOutput))

src/main/scala/xiangshan/backend/IntegerBlock.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ class IntegerBlock
260260
w.valid := e.io.out.valid
261261
}
262262
w
263-
}) ++ io.wakeUpIn.slow
263+
}) ++ io.wakeUpIn.slow.map(x => intOutValid(x, connectReady = true))
264264

265265
XSPerf("competition", intWbArbiter.io.in.map(i => !i.ready && i.valid).foldRight(0.U)(_+_))
266266

src/main/scala/xiangshan/backend/MemBlock.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class MemBlockImp(outer: MemBlock) extends LazyModuleImp(outer)
222222
// dtlb
223223
io.ptw <> dtlb.io.ptw
224224
dtlb.io.sfence <> io.sfence
225-
dtlb.io.csr <> io.tlbCsr
225+
dtlb.io.csr <> RegNext(io.tlbCsr)
226226
if (!env.FPGAPlatform) {
227227
difftestIO.fromSbuffer <> sbuffer.difftestIO
228228
difftestIO.fromSQ <> lsq.difftestIO.fromSQ

0 commit comments

Comments
 (0)