From f9faac32fc06b9c823bd7ee388b48f24a769fb53 Mon Sep 17 00:00:00 2001 From: Albert Magyar Date: Wed, 3 Jun 2020 17:19:42 -0700 Subject: [PATCH 1/2] [skip ci] Update reference to 'REBAR' in script comment --- scripts/firesim-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/firesim-setup.sh b/scripts/firesim-setup.sh index 959777d7..bb14f39e 100755 --- a/scripts/firesim-setup.sh +++ b/scripts/firesim-setup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Sets up FireSim for use as a library within REBAR +# Sets up FireSim for use as a library within Chipyard set -e set -o pipefail From a9d349cb851713d41064ce1a889fc7836bc4c62a Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Thu, 18 Jun 2020 01:31:15 -0700 Subject: [PATCH 2/2] Emit htif node in device tree --- .../chipyard/src/main/scala/Subsystem.scala | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index 99c31472..c22bbbee 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -10,7 +10,7 @@ import chisel3.internal.sourceinfo.{SourceInfo} import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.devices.tilelink._ -import freechips.rocketchip.devices.debug.{HasPeripheryDebug, HasPeripheryDebugModuleImp} +import freechips.rocketchip.devices.debug.{HasPeripheryDebug, HasPeripheryDebugModuleImp, ExportDebug} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomaticobjectmodel.model.{OMInterrupt} import freechips.rocketchip.diplomaticobjectmodel.logicaltree.{RocketTileLogicalTreeNode, LogicalModuleTree} @@ -24,7 +24,7 @@ import freechips.rocketchip.amba.axi4._ import boom.common.{BoomTile, BoomTilesKey, BoomCrossingKey, BoomTileParams} import ariane.{ArianeTile, ArianeTilesKey, ArianeCrossingKey, ArianeTileParams} -import testchipip.{DromajoHelper} +import testchipip.{DromajoHelper, CanHavePeripherySerial, SerialKey} trait HasChipyardTiles extends HasTiles with CanHavePeripheryPLIC @@ -87,8 +87,29 @@ trait HasChipyardTilesModuleImp extends HasTilesModuleImp val outer: HasChipyardTiles } +trait CanHaveHTIF { this: BaseSubsystem => + // Advertise HTIF if system can communicate with fesvr + if (this match { + case _: CanHavePeripherySerial if p(SerialKey) => true + case _: HasPeripheryDebug if p(ExportDebug).protocols.nonEmpty => true + case _ => false + }) { + ResourceBinding { + val htif = new Device { + def describe(resources: ResourceBindings): Description = { + val compat = resources("compat").map(_.value) + Description("htif", Map( + "compatible" -> compat)) + } + } + Resource(htif, "compat").bind(ResourceString("ucb,htif0")) + } + } +} + class Subsystem(implicit p: Parameters) extends BaseSubsystem with HasChipyardTiles + with CanHaveHTIF { override lazy val module = new SubsystemModuleImp(this)