Add tile-resetter to all designs
This commit is contained in:
@@ -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, Pow2ClockDivider}
|
import freechips.rocketchip.util.{ResetCatchAndSync, Pow2ClockDivider}
|
||||||
|
|
||||||
import barstools.iocell.chisel._
|
import barstools.iocell.chisel._
|
||||||
|
import testchipip.{TLTileResetCtrl}
|
||||||
|
|
||||||
import chipyard.clocking.{DividerOnlyClockGenerator, ClockGroupNamePrefixer, ClockGroupFrequencySpecifier}
|
import chipyard.clocking.{DividerOnlyClockGenerator, ClockGroupNamePrefixer, ClockGroupFrequencySpecifier}
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|||||||
Submodule generators/testchipip updated: bdca33ec16...89b528decf
Reference in New Issue
Block a user