diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index e4169ec26e..afd04fa5e6 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -82,6 +82,18 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ } }) +class WithDMIBridge extends HarnessBinder({ + case (th: FireSim, port: DMIPort) => { + // This assumes that: + // If ExtMem for the target is defined, then FASED bridge will be attached + // If FASED bridge is attached, loadmem widget is present + val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined + val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) + val nDMIAddrBits = port.io.dmi.req.bits.addr.getWidth + DMIBridge(th.harnessBinderClock, port.io, mainMemoryName, th.harnessBinderReset.asBool, nDMIAddrBits) + } +}) + class WithNICBridge extends HarnessBinder({ case (th: FireSim, port: NICPort) => { NICBridge(port.io.clock, port.io.bits)(th.p) @@ -135,6 +147,7 @@ class WithSuccessBridge extends HarnessBinder({ // Shorthand to register all of the provided bridges above class WithDefaultFireSimBridges extends Config( new WithTSIBridgeAndHarnessRAMOverSerialTL ++ + new WithDMIBridge ++ new WithNICBridge ++ new WithUARTBridge ++ new WithBlockDeviceBridge ++ @@ -148,6 +161,7 @@ class WithDefaultFireSimBridges extends Config( // Shorthand to register all of the provided mmio-only bridges above class WithDefaultMMIOOnlyFireSimBridges extends Config( new WithTSIBridgeAndHarnessRAMOverSerialTL ++ + new WithDMIBridge ++ new WithUARTBridge ++ new WithBlockDeviceBridge ++ new WithFASEDBridge ++ diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 6f2a02913d..61ef97892d 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -90,9 +90,7 @@ class WithMinimalFireSimDesignTweaks extends Config( // Required: Existing FAME-1 transform cannot handle black-box clock gates new WithoutClockGating ++ // Required*: Removes thousands of assertions that would be synthesized (* pending PriorityMux bugfix) - new WithoutTLMonitors ++ - // Required: Do not support debug module w. JTAG until FIRRTL stops emitting @(posedge ~clock) - new chipyard.config.WithNoDebug + new WithoutTLMonitors ) // Non-frequency tweaks that are generally applied to all firesim configs @@ -256,6 +254,12 @@ class FireSimSmallSystemConfig extends Config( new freechips.rocketchip.subsystem.WithInclusiveCache(nWays = 2, capacityKB = 64) ++ new chipyard.RocketConfig) +class FireSimDmiRocketConfig extends Config( + new WithDefaultFireSimBridges ++ + new WithDefaultMemModel ++ + new WithFireSimConfigTweaks ++ + new chipyard.dmiRocketConfig) + //***************************************************************** // Boom config, base off chipyard's LargeBoomConfig //***************************************************************** diff --git a/sims/firesim b/sims/firesim index 73fe6a51b2..f96213ef5e 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 73fe6a51b28a2dbbe3f307bdbc6ba2407b311a27 +Subproject commit f96213ef5e368add0b16b0be40fe6fdad4c35f78 diff --git a/toolchains/riscv-tools/riscv-isa-sim b/toolchains/riscv-tools/riscv-isa-sim index 5a499ef718..b5d13f3605 160000 --- a/toolchains/riscv-tools/riscv-isa-sim +++ b/toolchains/riscv-tools/riscv-isa-sim @@ -1 +1 @@ -Subproject commit 5a499ef718bba2fc323e9771ebd7545c66825ff6 +Subproject commit b5d13f36053d08e310da01e92e8ebc2d29623483