aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/passes/Inline.scala8
-rw-r--r--src/test/scala/firrtlTests/InlineInstancesTests.scala21
2 files changed, 23 insertions, 6 deletions
diff --git a/src/main/scala/firrtl/passes/Inline.scala b/src/main/scala/firrtl/passes/Inline.scala
index 912acf8e..78b3ce36 100644
--- a/src/main/scala/firrtl/passes/Inline.scala
+++ b/src/main/scala/firrtl/passes/Inline.scala
@@ -179,7 +179,7 @@ class InlineInstances extends Transform with DependencyAPIMigration with Registe
/** Add a prefix to all declarations updating a [[Namespace]] and appending to a [[RenameMap]] */
def appendNamePrefix(
- currentModule: IsModule,
+ currentModule: InstanceTarget,
nextModule: IsModule,
prefix: String,
ns: Namespace,
@@ -197,8 +197,13 @@ class InlineInstances extends Transform with DependencyAPIMigration with Registe
}
ofModuleOpt match {
case None =>
+ renameMap.record(currentModule.ofModuleTarget.ref(name), nextModule.ref(prefix + name))
renameMap.record(currentModule.ref(name), nextModule.ref(prefix + name))
case Some(ofModule) =>
+ renameMap.record(
+ currentModule.ofModuleTarget.instOf(name, ofModule),
+ nextModule.instOf(prefix + name, ofModule)
+ )
renameMap.record(currentModule.instOf(name, ofModule), nextModule.instOf(prefix + name, ofModule))
}
renames(name) = prefix + name
@@ -348,7 +353,6 @@ class InlineInstances extends Transform with DependencyAPIMigration with Registe
.map(appendRefPrefix(inlineTarget, prefixMap))
renames.record(inlineTarget, currentModule)
-
renamedBody
case sx =>
sx
diff --git a/src/test/scala/firrtlTests/InlineInstancesTests.scala b/src/test/scala/firrtlTests/InlineInstancesTests.scala
index cc7257d2..b54db7cc 100644
--- a/src/test/scala/firrtlTests/InlineInstancesTests.scala
+++ b/src/test/scala/firrtlTests/InlineInstancesTests.scala
@@ -380,8 +380,12 @@ class InlineInstancesTests extends LowTransformSpec {
execute(input, check, Seq(inline("Inline")))
}
- case class DummyAnno(target: ReferenceTarget) extends SingleTargetAnnotation[ReferenceTarget] {
- override def duplicate(n: ReferenceTarget): Annotation = DummyAnno(n)
+ case class DummyAnno(targets: CompleteTarget*) extends Annotation {
+ override def update(renames: RenameMap): Seq[Annotation] = {
+ Seq(DummyAnno(targets.flatMap { t =>
+ renames.get(t).getOrElse(Seq(t))
+ }: _*))
+ }
}
"annotations" should "be renamed" in {
val input =
@@ -573,6 +577,9 @@ class InlineInstancesTests extends LowTransformSpec {
val nestedNotInlined = inlined.instOf("bar", "NestedNoInline")
val innerNestedInlined = nestedNotInlined.instOf("foo", "NestedInline")
+ val inlineModuleTarget = top.copy(module = "Inline")
+ val nestedInlineModuleTarget = top.copy(module = "NestedInline")
+
executeWithAnnos(
input,
check,
@@ -586,7 +593,10 @@ class InlineInstancesTests extends LowTransformSpec {
DummyAnno(nestedNotInlined.ref("a")),
DummyAnno(nestedNotInlined.ref("b")),
DummyAnno(innerNestedInlined.ref("a")),
- DummyAnno(innerNestedInlined.ref("b"))
+ DummyAnno(innerNestedInlined.ref("b")),
+ DummyAnno(inlineModuleTarget.instOf("bar", "NestedNoInline")),
+ DummyAnno(inlineModuleTarget.ref("a"), inlineModuleTarget.ref("b")),
+ DummyAnno(nestedInlineModuleTarget.ref("a"))
),
Seq(
DummyAnno(top.ref("i_a")),
@@ -596,7 +606,10 @@ class InlineInstancesTests extends LowTransformSpec {
DummyAnno(top.instOf("i_bar", "NestedNoInline").ref("a")),
DummyAnno(top.instOf("i_bar", "NestedNoInline").ref("b")),
DummyAnno(top.instOf("i_bar", "NestedNoInline").ref("foo_a")),
- DummyAnno(top.instOf("i_bar", "NestedNoInline").ref("foo_b"))
+ DummyAnno(top.instOf("i_bar", "NestedNoInline").ref("foo_b")),
+ DummyAnno(top.instOf("i_bar", "NestedNoInline")),
+ DummyAnno(top.ref("i_a"), top.ref("i_b")),
+ DummyAnno(top.ref("i_foo_a"), top.copy(module = "NestedNoInline").ref("foo_a"))
)
)
}