-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
How to add scratchpad memory to Sbus of NoC ? I try to modified the MultiNoCConfig and add WithSubusScratchpad but the chipyard cannot generate the RTL code. What material or documents can help me ?
The Config is showed as the following.
class MultiNoCScratchpadConfig extends Config(
new constellation.soc.WithCbusNoC(constellation.protocol.SimpleTLNoCParams(
constellation.protocol.DiplomaticNetworkNodeMapping(
inNodeMapping = ListMap(
"serial_tl" -> 0),
outNodeMapping = ListMap(
"error" -> 1, "ctrls[0]" -> 2, "pbus" -> 3, "plic" -> 4,
"clint" -> 5, "dmInner" -> 6, "bootrom" -> 7, "clock" -> 8)),
NoCParams(
topology = TerminalRouter(BidirectionalLine(9)),
channelParamGen = (a, b) => UserChannelParams(Seq.fill(5) { UserVirtualChannelParams(4) }),
routingRelation = NonblockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalLineRouting()), 5, 1))
)) ++
new constellation.soc.WithMbusNoC(constellation.protocol.SimpleTLNoCParams(
constellation.protocol.DiplomaticNetworkNodeMapping(
inNodeMapping = ListMap(
"TLBroadcast[0]" -> 1),
outNodeMapping = ListMap(
"system[0]" -> 0, "system[1]" -> 2, "system[2]" -> 3 , "system[3]" -> 4,
"ram[0]" -> 0)),
NoCParams(
topology = TerminalRouter(BidirectionalTorus1D(5)),
channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }),
routingRelation = BlockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalTorus1DShortestRouting()), 5, 2))
)) ++
new constellation.soc.WithSbusNoC(constellation.protocol.SimpleTLNoCParams(
constellation.protocol.DiplomaticNetworkNodeMapping(
inNodeMapping = ListMap(
"Core 0 " -> 0, "Core 1 " -> 0, "Core 2 " -> 0 , "Core 3 " -> 0,
"Core 4 " -> 0, "Core 5 " -> 0, "Core 6 " -> 0, "Core 7 " -> 0,
"Core 8 " -> 2, "Core 9 " -> 2, "Core 10 " -> 2 ,"Core 11 " -> 2,
"Core 12 " -> 2, "Core 13 " -> 2, "Core 14 " -> 2 ,"Core 15 " -> 2,
"serial_tl" -> 0),
outNodeMapping = ListMap(
"system[0]" -> 5, "system[1]" -> 6, "system[2]" -> 9, "system[3]" -> 10, "ram[0]" -> 0,
"pbus" -> 3)),
NoCParams(
topology = TerminalRouter(Mesh2D(3, 4)),
channelParamGen = (a, b) => UserChannelParams(Seq.fill(6) { UserVirtualChannelParams(4) }),
routingRelation = BlockingVirtualSubnetworksRouting(TerminalRouterRouting(Mesh2DEscapeRouting()), 5, 1))
)) ++
new freechips.rocketchip.rocket.WithNBigCores(16) ++
new chipyard.config.WithSystemBusWidth(256) ++
new freechips.rocketchip.subsystem.WithNMemoryChannels(4) ++
new testchipip.soc.WithSbusScratchpad(base=0x70300000L, size=576<<10, banks=1) ++
new chipyard.config.AbstractConfig
)
The error message
0 <- debug[0],serial_tl_0_0[0],serial_tl_0_1[0],serial_tl_0_2[0],serial_tl_0_3[0]|
0 <- Core 0 DCache[0],Core 0 DCache MMIO[0],Core 0 ICache[0]|
0 <- Core 1 DCache[0],Core 1 DCache MMIO[0],Core 1 ICache[0]|
0 <- Core 2 DCache[0],Core 2 DCache MMIO[0],Core 2 ICache[0]|
0 <- Core 3 DCache[0],Core 3 DCache MMIO[0],Core 3 ICache[0]|
0 <- Core 4 DCache[0],Core 4 DCache MMIO[0],Core 4 ICache[0]|
0 <- Core 5 DCache[0],Core 5 DCache MMIO[0],Core 5 ICache[0]|
0 <- Core 6 DCache[0],Core 6 DCache MMIO[0],Core 6 ICache[0]|
0 <- Core 7 DCache[0],Core 7 DCache MMIO[0],Core 7 ICache[0]|
2 <- Core 8 DCache[0],Core 8 DCache MMIO[0],Core 8 ICache[0]|
2 <- Core 9 DCache[0],Core 9 DCache MMIO[0],Core 9 ICache[0]|
2 <- Core 10 DCache[0],Core 10 DCache MMIO[0],Core 10 ICache[0]|
2 <- Core 11 DCache[0],Core 11 DCache MMIO[0],Core 11 ICache[0]|
2 <- Core 12 DCache[0],Core 12 DCache MMIO[0],Core 12 ICache[0]|
2 <- Core 13 DCache[0],Core 13 DCache MMIO[0],Core 13 ICache[0]|
2 <- Core 14 DCache[0],Core 14 DCache MMIO[0],Core 14 ICache[0]|
2 <- Core 15 DCache[0],Core 15 DCache MMIO[0],Core 15 ICache[0]|
Constellation: TLNoC TLNoC outwards mapping:
3 <- error[0],pbus[0],uart_0[0],clint[0],plic[0],dmInner[0],bootrom[0],clock_gater[0],reset_setter[0]|
X <- system[0],system[0],system[0],system[0],ram[0]|
0 <- ram[0]|
Exception in thread "main" java.lang.reflect.InvocationTargetException
at ... ()
at chipyard.stage.phases.PreElaboration.$anonfun$transform$1(PreElaboration.scala:35)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at chisel3.stage.phases.Elaborate.$anonfun$transform$2(Elaborate.scala:52)
at chisel3.internal.Builder$.$anonfun$buildImpl$1(Builder.scala:1042)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at chisel3.internal.Builder$.buildImpl(Builder.scala:1032)
at chisel3.internal.Builder$.$anonfun$build$1(Builder.scala:1023)
at logger.Logger$.$anonfun$makeScope$4(Logger.scala:148)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at logger.Logger$.makeScope(Logger.scala:146)
at logger.Logger$.makeScope(Logger.scala:133)
at ... ()
at ... (Stack trace trimmed to user code only. Rerun with --full-stacktrace to see the full stack trace)
Caused by: java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:324)
at constellation.protocol.TileLinkProtocolParams.$init$(Tilelink.scala:223)
at constellation.protocol.TileLinkABCDEProtocolParams.<init>(Tilelink.scala:248)
at constellation.protocol.TLNoC$$anon$13.<init>(Tilelink.scala:558)
at constellation.protocol.TLNoC.$anonfun$module$1(Tilelink.scala:546)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at constellation.protocol.TLNoC.module$lzycompute(Tilelink.scala:546)
at constellation.protocol.TLNoC.module(Tilelink.scala:546)
at constellation.protocol.TLNoC.module(Tilelink.scala:542)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$15(LazyModuleImp.scala:71)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$14(LazyModuleImp.scala:71)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$13(LazyModuleImp.scala:70)
at scala.Option.getOrElse(Option.scala:201)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$1(LazyModuleImp.scala:68)
at scala.collection.immutable.List.flatMap(List.scala:293)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate(LazyModuleImp.scala:46)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate$(LazyModuleImp.scala:43)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.instantiate(LazyModuleImp.scala:149)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.$anonfun$x$6$2(LazyModuleImp.scala:166)
at chisel3.withClockAndReset$.apply(MultiClock.scala:35)
at chisel3.withClockAndReset$.apply(MultiClock.scala:18)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.$anonfun$x$6$1(LazyModuleImp.scala:166)
at chisel3.internal.plugin.package$.autoNameRecursivelyProduct(package.scala:48)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.<init>(LazyModuleImp.scala:165)
at freechips.rocketchip.prci.Domain$Impl.<init>(ClockDomain.scala:14)
at freechips.rocketchip.prci.Domain.$anonfun$module$1(ClockDomain.scala:13)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at freechips.rocketchip.prci.Domain.module$lzycompute(ClockDomain.scala:13)
at freechips.rocketchip.prci.Domain.module(ClockDomain.scala:13)
at freechips.rocketchip.prci.Domain.module(ClockDomain.scala:9)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$15(LazyModuleImp.scala:71)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$14(LazyModuleImp.scala:71)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$13(LazyModuleImp.scala:70)
at scala.Option.getOrElse(Option.scala:201)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$1(LazyModuleImp.scala:68)
at scala.collection.immutable.List.flatMap(List.scala:293)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate(LazyModuleImp.scala:46)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate$(LazyModuleImp.scala:43)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.instantiate(LazyModuleImp.scala:149)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.$anonfun$x$6$1(LazyModuleImp.scala:168)
at chisel3.internal.plugin.package$.autoNameRecursivelyProduct(package.scala:48)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.<init>(LazyModuleImp.scala:165)
at freechips.rocketchip.subsystem.BareSubsystemModuleImp.<init>(BaseSubsystem.scala:50)
at freechips.rocketchip.subsystem.BaseSubsystemModuleImp.<init>(BaseSubsystem.scala:143)
at chipyard.ChipyardSubsystemModuleImp.<init>(Subsystem.scala:123)
at chipyard.ChipyardSystemModule.<init>(System.scala:44)
at chipyard.DigitalTopModule.<init>(DigitalTop.scala:47)
at chipyard.DigitalTop.$anonfun$module$1(DigitalTop.scala:44)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at chipyard.DigitalTop.module$lzycompute(DigitalTop.scala:44)
at chipyard.DigitalTop.module(DigitalTop.scala:44)
at chipyard.DigitalTop.module(DigitalTop.scala:15)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$15(LazyModuleImp.scala:71)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$14(LazyModuleImp.scala:71)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$13(LazyModuleImp.scala:70)
at scala.Option.getOrElse(Option.scala:201)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.$anonfun$instantiate$1(LazyModuleImp.scala:68)
at scala.collection.immutable.List.flatMap(List.scala:293)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate(LazyModuleImp.scala:46)
at org.chipsalliance.diplomacy.lazymodule.LazyModuleImpLike.instantiate$(LazyModuleImp.scala:43)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.instantiate(LazyModuleImp.scala:149)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.$anonfun$x$6$1(LazyModuleImp.scala:168)
at chisel3.internal.plugin.package$.autoNameRecursivelyProduct(package.scala:48)
at org.chipsalliance.diplomacy.lazymodule.LazyRawModuleImp.<init>(LazyModuleImp.scala:165)
at chipyard.ChipTop$$anon$1.<init>(ChipTop.scala:33)
at chipyard.ChipTop.$anonfun$module$1(ChipTop.scala:33)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at chipyard.ChipTop.module$lzycompute(ChipTop.scala:33)
at chipyard.ChipTop.module(ChipTop.scala:33)
at chipyard.harness.HasHarnessInstantiators.$anonfun$instantiateChipTops$5(HasHarnessInstantiators.scala:87)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at chipyard.harness.HasHarnessInstantiators.$anonfun$instantiateChipTops$4(HasHarnessInstantiators.scala:87)
at scala.collection.immutable.List.map(List.scala:246)
at scala.collection.immutable.List.map(List.scala:79)
at chipyard.harness.HasHarnessInstantiators.$anonfun$instantiateChipTops$3(HasHarnessInstantiators.scala:87)
at chisel3.internal.plugin.package$.autoNameRecursively(package.scala:33)
at chipyard.harness.HasHarnessInstantiators.instantiateChipTops(HasHarnessInstantiators.scala:87)
at chipyard.harness.HasHarnessInstantiators.instantiateChipTops$(HasHarnessInstantiators.scala:80)
at chipyard.harness.TestHarness.instantiateChipTops(TestHarness.scala:19)
at chipyard.harness.TestHarness.<init>(TestHarness.scala:36)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
at chipyard.stage.phases.PreElaboration.$anonfun$transform$1(PreElaboration.scala:35)
at chisel3.Module$.evaluate(Module.scala:88)
at chisel3.Module$.do_apply(Module.scala:35)
at chisel3.stage.phases.Elaborate.$anonfun$transform$2(Elaborate.scala:52)
at chisel3.internal.Builder$.$anonfun$buildImpl$1(Builder.scala:1042)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at chisel3.internal.Builder$.buildImpl(Builder.scala:1032)
at chisel3.internal.Builder$.$anonfun$build$1(Builder.scala:1023)
at logger.Logger$.$anonfun$makeScope$4(Logger.scala:148)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at logger.Logger$.makeScope(Logger.scala:146)
at logger.Logger$.makeScope(Logger.scala:133)
at chisel3.internal.Builder$.build(Builder.scala:1023)
at chisel3.stage.phases.Elaborate.$anonfun$transform$1(Elaborate.scala:52)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at chisel3.stage.phases.Elaborate.transform(Elaborate.scala:35)
at chisel3.stage.phases.Elaborate.transform(Elaborate.scala:25)
at firrtl.options.DependencyManager.$anonfun$transform$5(DependencyManager.scala:280)
at firrtl.Utils$.time(Utils.scala:53)
at firrtl.options.DependencyManager.$anonfun$transform$3(DependencyManager.scala:280)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at firrtl.options.DependencyManager.transform(DependencyManager.scala:269)
at firrtl.options.DependencyManager.transform$(DependencyManager.scala:255)
at firrtl.options.PhaseManager.transform(DependencyManager.scala:443)
at chipyard.stage.ChipyardChiselStage.run(ChipyardStage.scala:33)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:42)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:42)
at firrtl.options.Stage.$anonfun$transform$3(Stage.scala:45)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at firrtl.options.Stage.$anonfun$transform$2(Stage.scala:45)
at logger.Logger$.$anonfun$makeScope$4(Logger.scala:148)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at logger.Logger$.makeScope(Logger.scala:146)
at logger.Logger$.makeScope(Logger.scala:125)
at firrtl.options.Stage.transform(Stage.scala:45)
at firrtl.options.Stage.transform(Stage.scala:17)
at firrtl.options.DependencyManager.$anonfun$transform$5(DependencyManager.scala:280)
at firrtl.Utils$.time(Utils.scala:53)
at firrtl.options.DependencyManager.$anonfun$transform$3(DependencyManager.scala:280)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at firrtl.options.DependencyManager.transform(DependencyManager.scala:269)
at firrtl.options.DependencyManager.transform$(DependencyManager.scala:255)
at firrtl.options.PhaseManager.transform(DependencyManager.scala:443)
at chipyard.stage.ChipyardStage.run(ChipyardStage.scala:64)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:42)
at firrtl.options.Stage$$anon$1.transform(Stage.scala:42)
at firrtl.options.Stage.$anonfun$transform$3(Stage.scala:45)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at firrtl.options.Stage.$anonfun$transform$2(Stage.scala:45)
at logger.Logger$.$anonfun$makeScope$4(Logger.scala:148)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at logger.Logger$.makeScope(Logger.scala:146)
at logger.Logger$.makeScope(Logger.scala:125)
at firrtl.options.Stage.transform(Stage.scala:45)
at firrtl.options.Stage.execute(Stage.scala:56)
at firrtl.options.StageMain.main(Stage.scala:69)
at chipyard.Generator.main(Generator.scala)
Metadata
Metadata
Assignees
Labels
No labels