From 0f47ae078e7dd33936adf275f6930718580d35dd Mon Sep 17 00:00:00 2001 From: Richard Yan Date: Mon, 25 Sep 2023 21:27:13 -0700 Subject: [PATCH] add operand roms, bump vortex --- src/main/resources/vsrc/vortex | 2 +- src/main/scala/tile/VortexTile.scala | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/resources/vsrc/vortex b/src/main/resources/vsrc/vortex index ea8c23b..f07149e 160000 --- a/src/main/resources/vsrc/vortex +++ b/src/main/resources/vsrc/vortex @@ -1 +1 @@ -Subproject commit ea8c23bc85918a623e79c16b4b56a09a0b025151 +Subproject commit f07149e1754027056b5b1afdc6a799d6ba73ddeb diff --git a/src/main/scala/tile/VortexTile.scala b/src/main/scala/tile/VortexTile.scala index c748680..a2fdfe1 100644 --- a/src/main/scala/tile/VortexTile.scala +++ b/src/main/scala/tile/VortexTile.scala @@ -114,6 +114,8 @@ class VortexTile private( imemNodes.foreach { tlMasterXbar.node := _ } dmemNodes.foreach { tlMasterXbar.node := _ } + /* below are copied from rocket */ + val bus_error_unit = vortexParams.beuAddr map { a => val beu = LazyModule(new BusErrorUnit(new L1BusErrors, BusErrorUnitParams(a))) intOutwardNode := beu.intNode @@ -206,6 +208,11 @@ class VortexTileModuleImp(outer: VortexTile) extends BaseTileModuleImp(outer) { coreMem.a <> tileNode.out.head._1.a } + + // pick source id and: + // - lie to core that response is not valid if source doesn't match picked + // - lie to downstream that core is not ready if source doesn't match picked + val arb = Module(new RRArbiter(core.io.dmem.head.d.bits.source.cloneType, 4)) val matchingSources = Wire(UInt(4.W)) val dmemDs = outer.dmemNodes.map(_.out.head._1.d) @@ -213,7 +220,6 @@ class VortexTileModuleImp(outer: VortexTile) extends BaseTileModuleImp(outer) { (arb.io.in zip dmemDs).zipWithIndex.foreach { case ((arbIn, tileNode), i) => arbIn.valid := tileNode.valid arbIn.bits := tileNode.bits.source - // assert(arbIn.ready, "source id arbiter should always be ready") } matchingSources := dmemDs.map(d => (d.bits.source === arb.io.out.bits) && arb.io.out.valid).asUInt arb.io.out.ready := true.B