Allow subsytem w/ multiple cores and w/o PLIC (or external PLIC) (#1681)

This commit is contained in:
Alex Solomatnikov 2018-10-30 10:02:06 -07:00 committed by GitHub
parent 5439edc4c4
commit 8f012cc6a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 3 deletions

View File

@ -27,7 +27,11 @@ trait HasTiles { this: BaseSubsystem =>
def sharedMemoryTLEdge = sbus.busView
val meipNode = p(PLICKey) match {
case Some(_) => None
case None => Some(IntSourceNode(IntSourcePortSimple(num = 1, ports = 1, sources = 1)))
case None => Some(IntNexusNode(
sourceFn = { _ => IntSourcePortParameters(Seq(IntSourceParameters(1))) },
sinkFn = { _ => IntSinkPortParameters(Seq(IntSinkParameters())) },
outputRequiresInput = false,
inputRequiresOutput = false))
}
private val lookupByHartId = new LookupByHartIdImpl {
@ -146,6 +150,10 @@ trait HasTilesModuleImp extends LazyModuleImp
tile.constants.reset_vector := wire.reset_vector
}
val meip = if(outer.meipNode.isDefined) Some(IO(Bool(INPUT))) else None
meip.foreach { (outer.meipNode.get.out(0)._1)(0) := _ }
val meip = if(outer.meipNode.isDefined) Some(IO(Vec(outer.meipNode.get.out.size, Bool()).asInput)) else None
meip.foreach { m =>
m.zipWithIndex.foreach{ case (pin, i) =>
(outer.meipNode.get.out(i)._1)(0) := pin
}
}
}