Merge remote-tracking branch 'origin/dev' into diplomatic-clocks-mbus-crossing

This commit is contained in:
David Biancolin
2020-10-14 15:29:00 -07:00
7 changed files with 26 additions and 10 deletions

View File

@@ -5,12 +5,13 @@ import chisel3._
import scala.collection.mutable.{ArrayBuffer} import scala.collection.mutable.{ArrayBuffer}
import freechips.rocketchip.prci._ import freechips.rocketchip.prci._
import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey, InstantiatesTiles}
import freechips.rocketchip.config.{Parameters, Field, Config} import freechips.rocketchip.config.{Parameters, Field, Config}
import freechips.rocketchip.diplomacy.{OutwardNodeHandle, InModuleBody, LazyModule} import freechips.rocketchip.diplomacy.{OutwardNodeHandle, InModuleBody, LazyModule}
import freechips.rocketchip.util.{ResetCatchAndSync} import freechips.rocketchip.util.{ResetCatchAndSync}
import barstools.iocell.chisel._ import barstools.iocell.chisel._
import testchipip.{TLTileResetCtrl}
import chipyard.clocking._ import chipyard.clocking._
@@ -109,9 +110,20 @@ object ClockingSchemeGenerators {
l.asyncClockGroupsNode l.asyncClockGroupsNode
} }
// Add a control register for each tile's reset
val resetSetter = chiptop.lazySystem match {
case sys: BaseSubsystem with InstantiatesTiles => TLTileResetCtrl(sys)
case _ => ClockGroupEphemeralNode()
}
val aggregator = LazyModule(new ClockGroupAggregator("allClocks")).node val aggregator = LazyModule(new ClockGroupAggregator("allClocks")).node
chiptop.implicitClockSinkNode := ClockGroup() := aggregator (chiptop.implicitClockSinkNode
systemAsyncClockGroup :*= ClockGroupNamePrefixer() :*= aggregator := ClockGroup()
:= aggregator)
(systemAsyncClockGroup
:*= resetSetter
:*= ClockGroupNamePrefixer()
:*= aggregator)
val referenceClockSource = ClockSourceNode(Seq(ClockSourceParameters())) val referenceClockSource = ClockSourceNode(Seq(ClockSourceParameters()))
(aggregator (aggregator

View File

@@ -117,6 +117,7 @@ class LoopbackNICRocketConfig extends Config(
// DOC include start: l1scratchpadrocket // DOC include start: l1scratchpadrocket
class ScratchpadOnlyRocketConfig extends Config( class ScratchpadOnlyRocketConfig extends Config(
new testchipip.WithSerialPBusMem ++
new freechips.rocketchip.subsystem.WithNMemoryChannels(0) ++ // remove offchip mem port new freechips.rocketchip.subsystem.WithNMemoryChannels(0) ++ // remove offchip mem port
new freechips.rocketchip.subsystem.WithNBanks(0) ++ new freechips.rocketchip.subsystem.WithNBanks(0) ++
new freechips.rocketchip.subsystem.WithNoMemPort ++ new freechips.rocketchip.subsystem.WithNoMemPort ++

View File

@@ -9,7 +9,7 @@ import freechips.rocketchip.config.{Field, Config, Parameters}
import freechips.rocketchip.diplomacy.{LazyModule} import freechips.rocketchip.diplomacy.{LazyModule}
import freechips.rocketchip.devices.debug.{Debug, HasPeripheryDebugModuleImp} import freechips.rocketchip.devices.debug.{Debug, HasPeripheryDebugModuleImp}
import freechips.rocketchip.amba.axi4.{AXI4Bundle} import freechips.rocketchip.amba.axi4.{AXI4Bundle}
import freechips.rocketchip.subsystem.{CanHaveMasterAXI4MemPort, HasExtInterruptsModuleImp, BaseSubsystem, HasTilesModuleImp} import freechips.rocketchip.subsystem.{CanHaveMasterAXI4MemPort, HasExtInterruptsModuleImp, BaseSubsystem, HasTilesModuleImp, ExtMem}
import freechips.rocketchip.tile.{RocketTile} import freechips.rocketchip.tile.{RocketTile}
import sifive.blocks.devices.uart._ import sifive.blocks.devices.uart._
@@ -67,9 +67,10 @@ class WithFireSimIOCellModels extends Config((site, here, up) => {
class WithSerialBridge extends OverrideHarnessBinder({ class WithSerialBridge extends OverrideHarnessBinder({
(system: CanHavePeripheryTLSerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => { (system: CanHavePeripheryTLSerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
ports.map { p => ports.map { port =>
val ram = SerialAdapter.connectHarnessRAM(system.serdesser.get, p, th.harnessReset) implicit val p = GetSystemParameters(system)
SerialBridge(p.clock, ram.module.io.tsi_ser, MainMemoryConsts.globalName)(GetSystemParameters(system)) val ram = SerialAdapter.connectHarnessRAM(system.serdesser.get, port, th.harnessReset)
SerialBridge(port.clock, ram.module.io.tsi_ser, p(ExtMem).map(_ => MainMemoryConsts.globalName))
} }
Nil Nil
} }

View File

@@ -83,6 +83,8 @@ object GenerateSimFiles extends App with HasGenerateSimConfig {
} }
def resources(sim: Simulator): Seq[String] = Seq( def resources(sim: Simulator): Seq[String] = Seq(
"/testchipip/csrc/SimSerial.cc", "/testchipip/csrc/SimSerial.cc",
"/testchipip/csrc/testchip_tsi.cc",
"/testchipip/csrc/testchip_tsi.h",
"/testchipip/csrc/SimDRAM.cc", "/testchipip/csrc/SimDRAM.cc",
"/testchipip/csrc/mm.h", "/testchipip/csrc/mm.h",
"/testchipip/csrc/mm.cc", "/testchipip/csrc/mm.cc",