Skip to content

Commit

Permalink
cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolu1990 committed Jan 8, 2024
1 parent 27d582e commit 9ee8e35
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/main/scala/vexiiriscv/decode/DecoderPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ class DecoderPlugin(var decodeAt : Int) extends FiberPlugin with DecoderService
}

val interrupt = new Area {
val async = B(host[PrivilegedPlugin].miaou.csrs.map(_.int.pending))
val async = B(host[PrivilegedPlugin].logic.harts.map(_.int.pending))
//We need to buffer interrupts request to ensure we don't generate sporadic flushes while the ctrl is stuck
val buffered = RegNextWhen(async, !decodeCtrl.link.up.valid || decodeCtrl.link.up.ready || decodeCtrl.link.up.isCanceling) init(0)
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/scala/vexiiriscv/memory/MmuPLugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
//import spinal.lib._
//import spinal.lib.fsm._
//import spinal.lib.misc.plugin.FiberPlugin
//import spinal.lib.pipeline.{Payload, Stage}
//import spinal.lib.misc.pipeline._
//import vexiiriscv._
//import Global._
//import spinal.lib.misc.pipeline.{NodeBaseApi, Payload}
Expand Down Expand Up @@ -104,7 +104,7 @@
// storageSpecs.addRet(StorageSpec(p))
// }
//
// override def newTranslationPort(stages: Seq[Stage],
// override def newTranslationPort(stages: Seq[NodeBaseApi],
// preAddress: Payload[UInt],
// allowRefill : Payload[Bool],
// usage : AddressTranslationPortUsage,
Expand Down Expand Up @@ -180,7 +180,7 @@
// val status = new Area{
// val mxr = RegInit(False)
// val sum = RegInit(False)
// val mprv = RegInit(False) clearWhen(priv.io.harts(0).xretAwayFromMachine)
// val mprv = RegInit(False) clearWhen(priv.hart(0).xretAwayFromMachine)
// }
//
// for(offset <- List(CSR.MSTATUS, CSR.SSTATUS)) csr.readWrite(offset, 19 -> status.mxr, 18 -> status.sum)
Expand Down
14 changes: 8 additions & 6 deletions src/main/scala/vexiiriscv/misc/PrivilegedPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,23 @@ class PrivilegedPlugin(val p : PrivilegedParam, hartIds : Seq[Int]) extends Fibe
def implementUser = p.withUser
def implementUserTrap = p.withUserTrap

def getPrivilege(hartId : UInt) : UInt = miaou.csrs.map(_.privilege).read(hartId)
def getPrivilege(hartId : UInt) : UInt = logic.harts.map(_.privilege).read(hartId)

case class Delegator(var enable: Bool, privilege: Int)
case class InterruptSpec(var cond: Bool, id: Int, privilege: Int, delegators: List[Delegator])
case class ExceptionSpec(id: Int, delegators: List[Delegator])
override def getCommitMask(hartId: Int): Bits = miaou.csrs(hartId).commitMask
override def hasInflight(hartId: Int): Bool = miaou.csrs(hartId).hasInflight
override def getCommitMask(hartId: Int): Bits = logic.harts(hartId).commitMask
override def hasInflight(hartId: Int): Bool = logic.harts(hartId).hasInflight

val misaIds = mutable.LinkedHashSet[Int]()
def addMisa(id: Char): Unit = addMisa(id - 'A')
def addMisa(id: Int) = {
misaIds += id
}

val miaou = during setup new Area {
def hart(id : Int) = logic.harts(id)

val logic = during setup new Area {
val cap = host[CsrAccessPlugin]
val pp = host[PipelineBuilderPlugin]
val pcs = host[PcService]
Expand All @@ -88,7 +90,7 @@ class PrivilegedPlugin(val p : PrivilegedParam, hartIds : Seq[Int]) extends Fibe
assert(HART_COUNT.get == 1)

val rdtime = in UInt (64 bits)
val csrs = for (hartId <- 0 until HART_COUNT) yield new Area {
val harts = for (hartId <- 0 until HART_COUNT) yield new Area {
val xretAwayFromMachine = False
val commitMask = Bits(host.list[ExecuteLanePlugin].size bits)
val hasInflight = Bool()
Expand Down Expand Up @@ -271,7 +273,7 @@ class PrivilegedPlugin(val p : PrivilegedParam, hartIds : Seq[Int]) extends Fibe
val defaultTrap = new Area {
val csrPrivilege = cap.onDecodeAddress(8, 2 bits)
val csrReadOnly = cap.onDecodeAddress(10, 2 bits) === U"11"
when(csrReadOnly && cap.onDecodeWrite || csrPrivilege > csrs.reader(cap.onDecodeHartId)(_.privilege)) {
when(csrReadOnly && cap.onDecodeWrite || csrPrivilege > harts.reader(cap.onDecodeHartId)(_.privilege)) {
cap.onDecodeTrap()
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/vexiiriscv/misc/TrapPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class TrapPlugin(trapAt : Int) extends FiberPlugin with TrapService {
trapLock.await()

val harts = for(hartId <- 0 until HART_COUNT) yield new Area{
val csr = priv.miaou.csrs(hartId)
val csr = priv.logic.harts(hartId)

val crsPorts = withRam generate new Area{
val read = crs.ramReadPort(CsrRamService.priority.TRAP)
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/vexiiriscv/test/WhiteboxerPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ class WhiteboxerPlugin extends FiberPlugin{
class InterruptsProxy {
val priv = host[PrivilegedPlugin]
val checkers = ArrayBuffer[InterruptChecker]()
for ((hart, hartId) <- priv.miaou.csrs.zipWithIndex) {
for ((hart, hartId) <- priv.logic.harts.zipWithIndex) {
checkers += new InterruptChecker(hartId, hart.int.m.timer, 7)
checkers += new InterruptChecker(hartId, hart.int.m.software, 3)
checkers += new InterruptChecker(hartId, hart.int.m.external, 11)
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/vexiiriscv/tester/TestBench.scala
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class TestOptions{
}
}

val priv = dut.host[PrivilegedPlugin].miaou.csrs(0)
val priv = dut.host[PrivilegedPlugin].logic.harts(0)
val peripheral = new PeripheralEmulator(0x10000000, priv.int.m.external, (priv.int.s != null) generate priv.int.s.external, mti = priv.int.m.timer, cd = cd){
override def getClintTime(): Long = probe.cycle
}
Expand Down

0 comments on commit 9ee8e35

Please sign in to comment.