aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/annotations/transforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/annotations/transforms')
-rw-r--r--src/main/scala/firrtl/annotations/transforms/CleanupNamedTargets.scala7
-rw-r--r--src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala20
2 files changed, 18 insertions, 9 deletions
diff --git a/src/main/scala/firrtl/annotations/transforms/CleanupNamedTargets.scala b/src/main/scala/firrtl/annotations/transforms/CleanupNamedTargets.scala
index 28f50993..8635d9ed 100644
--- a/src/main/scala/firrtl/annotations/transforms/CleanupNamedTargets.scala
+++ b/src/main/scala/firrtl/annotations/transforms/CleanupNamedTargets.scala
@@ -7,6 +7,7 @@ import firrtl.annotations.{CircuitTarget, ModuleTarget, MultiTargetAnnotation, R
import firrtl.ir
import firrtl.options.{Dependency, PreservesAll}
import firrtl.traversals.Foreachers._
+import firrtl.renamemap.MutableRenameMap
import scala.collection.immutable.{Set => ISet}
@@ -31,7 +32,7 @@ class CleanupNamedTargets extends Transform with DependencyAPIMigration {
statement: ir.Statement
)(
implicit references: ISet[ReferenceTarget],
- renameMap: RenameMap,
+ renameMap: MutableRenameMap,
module: ModuleTarget
): Unit = statement match {
case ir.DefInstance(_, a, b, _) if references(module.instOf(a, b).asReference) =>
@@ -43,7 +44,7 @@ class CleanupNamedTargets extends Transform with DependencyAPIMigration {
module: ir.DefModule
)(
implicit references: ISet[ReferenceTarget],
- renameMap: RenameMap,
+ renameMap: MutableRenameMap,
circuit: CircuitTarget
): Unit = {
implicit val mTarget = circuit.module(module.name)
@@ -60,7 +61,7 @@ class CleanupNamedTargets extends Transform with DependencyAPIMigration {
case a: ReferenceTarget => a
}.toSet
- implicit val renameMap = RenameMap()
+ implicit val renameMap = MutableRenameMap()
implicit val cTarget = CircuitTarget(state.circuit.main)
diff --git a/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala b/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
index 104aafc3..83bea253 100644
--- a/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
+++ b/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
@@ -10,6 +10,7 @@ import firrtl.annotations.analysis.DuplicationHelper
import firrtl.annotations._
import firrtl.ir._
import firrtl.{AnnotationSeq, CircuitState, DependencyAPIMigration, FirrtlInternalException, RenameMap, Transform}
+import firrtl.renamemap.MutableRenameMap
import firrtl.stage.Forms
import firrtl.transforms.DedupedResult
import firrtl.transforms.DedupAnnotationsTransform
@@ -45,7 +46,12 @@ case class NoSuchTargetException(message: String) extends FirrtlInternalExceptio
object EliminateTargetPaths {
- def renameModules(c: Circuit, toRename: Map[String, String], renameMap: RenameMap): Circuit = {
+ @deprecated("Use version that accepts renamemap.MutableRenameMap", "FIRRTL 1.5")
+ def renameModules(c: Circuit, toRename: Map[String, String], renameMap: RenameMap): Circuit =
+ // Cast is safe because RenameMap is sealed trait, MutableRenameMap is only subclass
+ renameModules(c, toRename, renameMap.asInstanceOf[MutableRenameMap])
+
+ def renameModules(c: Circuit, toRename: Map[String, String], renameMap: MutableRenameMap): Circuit = {
val ct = CircuitTarget(c.main)
val cx = if (toRename.contains(c.main)) {
renameMap.record(ct, CircuitTarget(toRename(c.main)))
@@ -159,7 +165,7 @@ class EliminateTargetPaths extends Transform with DependencyAPIMigration {
lazy val finalModuleSet = finalModuleList.map { case a: DefModule => a.name }.toSet
// Records how targets have been renamed
- val renameMap = RenameMap()
+ val renameMap = MutableRenameMap()
/* Foreach target, calculate the pathless version and only rename targets that are instantiated. Additionally, rename
* module targets
@@ -264,7 +270,7 @@ class EliminateTargetPaths extends Transform with DependencyAPIMigration {
val cache = mutable.Map.empty[String, Boolean]
mod => cache.getOrElseUpdate(mod, iGraph.findInstancesInHierarchy(mod).size == 1)
}
- val firstRenameMap = RenameMap()
+ val firstRenameMap = MutableRenameMap()
val nonSingletonTargets = targets.foldRight(Seq.empty[IsMember]) {
case (t: IsComponent, acc) if t.asPath.nonEmpty =>
val origPath = t.asPath
@@ -298,11 +304,13 @@ class EliminateTargetPaths extends Transform with DependencyAPIMigration {
val (newCircuit, nextRenameMap, newAnnos) = run(state.circuit, nonSingletonTargets, iGraph)
- val renameMap =
+ val renameMap: MutableRenameMap =
if (firstRenameMap.hasChanges) {
- firstRenameMap.andThen(nextRenameMap)
+ // Cast is safe because RenameMap is sealed trait, MutableRenameMap is only subclass
+ firstRenameMap.andThen(nextRenameMap).asInstanceOf[MutableRenameMap]
} else {
- nextRenameMap
+ // Cast is safe because RenameMap is sealed trait, MutableRenameMap is only subclass
+ nextRenameMap.asInstanceOf[MutableRenameMap]
}
val iGraphx = InstanceKeyGraph(newCircuit)