coreplex: make HasTiles more generic
HasTiles now deals with only extremely general tile IOs. Some RocketTiles specific behavior moved into RocketCoreplex. BaseTile now has optional LocalInterruptNode.
This commit is contained in:
		| @@ -6,6 +6,7 @@ import Chisel._ | ||||
|  | ||||
| import freechips.rocketchip.config._ | ||||
| import freechips.rocketchip.diplomacy._ | ||||
| import freechips.rocketchip.interrupts._ | ||||
| import freechips.rocketchip.rocket._ | ||||
| import freechips.rocketchip.tilelink._ | ||||
| import freechips.rocketchip.util._ | ||||
| @@ -111,6 +112,7 @@ trait CanHaveInstructionTracePort extends Bundle with HasTileParameters { | ||||
| abstract class BaseTile(tileParams: TileParams)(implicit p: Parameters) extends BareTile | ||||
|     with HasTileParameters { | ||||
|   def module: BaseTileModule[BaseTile, BaseTileBundle[BaseTile]] | ||||
|   val localIntNode: Option[IntInwardNode] | ||||
| } | ||||
|  | ||||
| abstract class BaseTileBundle[+L <: BaseTile](_outer: L) extends BareTileBundle(_outer) | ||||
|   | ||||
| @@ -5,7 +5,7 @@ package freechips.rocketchip.tile | ||||
| import Chisel._ | ||||
|  | ||||
| import freechips.rocketchip.config.Parameters | ||||
| import freechips.rocketchip.interrupts.{IntSinkNode, IntSinkPortSimple} | ||||
| import freechips.rocketchip.interrupts._ | ||||
| import freechips.rocketchip.util._ | ||||
|  | ||||
| class TileInterrupts(implicit p: Parameters) extends CoreBundle()(p) { | ||||
| @@ -23,6 +23,7 @@ trait HasExternalInterrupts extends HasTileParameters { | ||||
|   val module: HasExternalInterruptsModule | ||||
|  | ||||
|   val intNode = IntSinkNode(IntSinkPortSimple()) | ||||
|   val localIntNode: Option[IntInwardNode] = None | ||||
|  | ||||
|   // TODO: the order of the following two functions must match, and | ||||
|   //         also match the order which things are connected to the | ||||
|   | ||||
| @@ -230,6 +230,7 @@ class RocketTileWrapper( | ||||
|   } | ||||
|  | ||||
|   val intXbar = LazyModule(new IntXbar) | ||||
|   val localIntNode = Some(intXbar.intnode) | ||||
|   rocket.intNode := intXbar.intnode | ||||
|  | ||||
|   override lazy val module = new BaseTileModule(this, () => new RocketTileWrapperBundle(this)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user