diff --git a/generators/chipyard/src/main/scala/Clocks.scala b/generators/chipyard/src/main/scala/Clocks.scala index 7d54f7f0..e0f2fc72 100644 --- a/generators/chipyard/src/main/scala/Clocks.scala +++ b/generators/chipyard/src/main/scala/Clocks.scala @@ -71,16 +71,16 @@ object ClockingSchemeGenerators { // Add a control register for each tile's reset val resetSetter = chiptop.lazySystem match { - case sys: BaseSubsystem with InstantiatesTiles => TLTileResetCtrl(sys) - case _ => ClockGroupEphemeralNode() + case sys: BaseSubsystem with InstantiatesTiles => Some(TLTileResetCtrl(sys)) + case _ => None } + val resetSetterResetProvider = resetSetter.map(_.tileResetProviderNode).getOrElse(ClockGroupEphemeralNode()) val aggregator = LazyModule(new ClockGroupAggregator("allClocks")).node (chiptop.implicitClockSinkNode := ClockGroup() := aggregator) (systemAsyncClockGroup - :*= resetSetter :*= ClockGroupNamePrefixer() :*= aggregator) @@ -88,10 +88,16 @@ object ClockingSchemeGenerators { (aggregator := ClockGroupFrequencySpecifier(p(ClockFrequencyAssignersKey), p(DefaultClockFrequencyKey)) := ClockGroupResetSynchronizer() + := resetSetterResetProvider := DividerOnlyClockGenerator() := referenceClockSource) + val asyncResetBroadcast = FixedClockBroadcast(None) + resetSetter.foreach(_.asyncResetSinkNode := asyncResetBroadcast) + val asyncResetSource = ClockSourceNode(Seq(ClockSourceParameters())) + asyncResetBroadcast := asyncResetSource + InModuleBody { val clock_wire = Wire(Input(Clock())) val reset_wire = GenerateReset(chiptop, clock_wire) @@ -103,6 +109,11 @@ object ClockingSchemeGenerators { o.reset := reset_wire } + asyncResetSource.out.unzip._1.map { o => + o.clock := false.B.asClock // async reset broadcast network does not provide a clock + o.reset := reset_wire + } + chiptop.harnessFunctions += ((th: HasHarnessSignalReferences) => { clock_io := th.harnessClock Nil }) diff --git a/generators/testchipip b/generators/testchipip index f2705592..282ca2e2 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit f27055929a2d4c091bfe10c3b64761e281844a2b +Subproject commit 282ca2e25e191e63051afafc8808561f6a54c695