Skip to content

Commit

Permalink
vexii fiber now support FetchL1Plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolu1990 committed Feb 5, 2024
1 parent 2be4506 commit 8d88427
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
20 changes: 20 additions & 0 deletions src/main/scala/vexiiriscv/fetch/FetchL1Bridge.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package vexiiriscv.fetch

import spinal.core._
import spinal.lib._
import spinal.lib.bus.tilelink
import spinal.lib.bus.tilelink.{DebugId, S2mSupport}
import spinal.lib.misc.plugin.FiberPlugin


class FetchFetchL1TileLinkPlugin(node : bus.tilelink.fabric.Node) extends FiberPlugin {
val logic = during build new Area{
val fcp = host[FetchL1Plugin]
fcp.logic.bus.setAsDirectionLess()
val down = fcp.logic.bus.toTilelink()
master(down)
node.m2s.forceParameters(down.p.node.m)
node.s2m.supported.load(S2mSupport.none())
node.bus.component.rework(node.bus << down)
}
}
11 changes: 7 additions & 4 deletions src/main/scala/vexiiriscv/soc/TilelinkVexiiRiscvFiber.scala
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import spinal.lib.sim.SparseMemory
import spinal.lib.system.tag.{MemoryConnection, PMA, PmaRegion}
import spinal.sim.{Signal, SimManagerContext}
import vexiiriscv.{ParamSimple, VexiiRiscv}
import vexiiriscv.execute.lsu.{LsuCachelessPlugin, LsuCachelessTileLinkPlugin}
import vexiiriscv.fetch.{FetchCachelessPlugin, FetchCachelessTileLinkPlugin}
import vexiiriscv.execute.lsu.{LsuCachelessPlugin, LsuCachelessTileLinkPlugin, LsuL1Plugin}
import vexiiriscv.fetch.{FetchCachelessPlugin, FetchCachelessTileLinkPlugin, FetchFetchL1TileLinkPlugin, FetchL1Plugin}
import vexiiriscv.memory.AddressTranslationService
import vexiiriscv.misc.PrivilegedPlugin

Expand Down Expand Up @@ -64,6 +64,7 @@ class TilelinkVexiiRiscvFiber(plugins : ArrayBuffer[Hostable]) extends Area{
// Add the plugins to bridge the CPU toward Tilelink
plugins.foreach {
case p: FetchCachelessPlugin => plugins += new FetchCachelessTileLinkPlugin(iBus)
case p: FetchL1Plugin => plugins += new FetchFetchL1TileLinkPlugin(iBus)
case p: LsuCachelessPlugin => plugins += new LsuCachelessTileLinkPlugin(dBus)
case _ =>
}
Expand All @@ -73,9 +74,11 @@ class TilelinkVexiiRiscvFiber(plugins : ArrayBuffer[Hostable]) extends Area{
val core = VexiiRiscv(plugins)
Fiber.awaitBuild()

def getRegion(node : Node) = MemoryConnection.getMemoryTransfers(node).asInstanceOf[ArrayBuffer[PmaRegion]]
plugins.foreach {
case p: FetchCachelessPlugin => p.regions.load(MemoryConnection.getMemoryTransfers(iBus).asInstanceOf[ArrayBuffer[PmaRegion]])
case p: LsuCachelessPlugin => p.regions.load(MemoryConnection.getMemoryTransfers(dBus).asInstanceOf[ArrayBuffer[PmaRegion]])
case p: FetchCachelessPlugin => p.regions.load(getRegion(iBus))
case p: FetchL1Plugin => p.regions.load(getRegion(iBus))
case p: LsuCachelessPlugin => p.regions.load(getRegion(dBus))
case _ =>
}

Expand Down

0 comments on commit 8d88427

Please sign in to comment.