diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/transforms/CheckCombLoops.scala | 14 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/CheckCombLoopsSpec.scala | 7 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/main/scala/firrtl/transforms/CheckCombLoops.scala b/src/main/scala/firrtl/transforms/CheckCombLoops.scala index 24aaed80..d1d98872 100644 --- a/src/main/scala/firrtl/transforms/CheckCombLoops.scala +++ b/src/main/scala/firrtl/transforms/CheckCombLoops.scala @@ -40,11 +40,11 @@ case class ExtModulePathAnnotation(source: ReferenceTarget, sink: ReferenceTarge } } -case class CombinationalPath(sink: ComponentName, sources: Seq[ComponentName]) extends Annotation { +case class CombinationalPath(sink: ReferenceTarget, sources: Seq[ReferenceTarget]) extends Annotation { override def update(renames: RenameMap): Seq[Annotation] = { - val newSources: Seq[IsComponent] = sources.flatMap { s => renames.get(s).getOrElse(Seq(s.toTarget)) }.collect {case x: IsComponent if x.isLocal => x} - val newSinks = renames.get(sink).getOrElse(Seq(sink.toTarget)).collect { case x: IsComponent if x.isLocal => x} - newSinks.map(snk => CombinationalPath(snk.toNamed, newSources.map(_.toNamed))) + val newSources = sources.flatMap { s => renames(s) }.collect {case x: ReferenceTarget if x.isLocal => x} + val newSinks = renames(sink).collect { case x: ReferenceTarget if x.isLocal => x} + newSinks.map(snk => CombinationalPath(snk, newSources)) } } @@ -249,10 +249,10 @@ class CheckCombLoops extends Transform with RegisteredTransform { } case m => throwInternalError(s"Module ${m.name} has unrecognized type") } - val mn = ModuleName(c.main, CircuitName(c.main)) + val mt = ModuleTarget(c.main, c.main) val annos = simplifiedModuleGraphs(c.main).getEdgeMap.collect { case (from, tos) if tos.nonEmpty => - val sink = ComponentName(from.name, mn) - val sources = tos.map(x => ComponentName(x.name, mn)) + val sink = mt.ref(from.name) + val sources = tos.map(to => mt.ref(to.name)) CombinationalPath(sink, sources.toSeq) } (state.copy(annotations = state.annotations ++ annos), errors, simplifiedModuleGraphs) diff --git a/src/test/scala/firrtlTests/CheckCombLoopsSpec.scala b/src/test/scala/firrtlTests/CheckCombLoopsSpec.scala index 98472f14..dc7158bb 100644 --- a/src/test/scala/firrtlTests/CheckCombLoopsSpec.scala +++ b/src/test/scala/firrtlTests/CheckCombLoopsSpec.scala @@ -298,10 +298,9 @@ class CheckCombLoopsSpec extends SimpleTransformSpec { val writer = new java.io.StringWriter val cs = compile(CircuitState(parse(input), ChirrtlForm), writer) - val mn = ModuleName("hasnoloops", CircuitName("hasnoloops")) - cs.annotations.collect { - case c @ CombinationalPath(ComponentName("b", `mn`), Seq(ComponentName("a", `mn`))) => c - }.nonEmpty should be (true) + val mt = ModuleTarget("hasnoloops", "hasnoloops") + val anno = CombinationalPath(mt.ref("b"), Seq(mt.ref("a"))) + cs.annotations.contains(anno) should be (true) } } |
