aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/transforms
diff options
context:
space:
mode:
authorKevin Laeufer2020-08-05 13:35:41 -0700
committerGitHub2020-08-05 20:35:41 +0000
commitb1ec7cd70ab267cd30d8421651625ba1d9a623ff (patch)
tree237c666247aa285719d38bb46ea3445f0d880703 /src/main/scala/firrtl/transforms
parent687f3ddbbcd9217542a4bc0e2c256559d2c67a5b (diff)
Deprecate InstanceGraph (#1800)
* InstanceKeyGraph: add staticInstanceCount, getGraph and getChildrenInstanceMap * InstanceKeyGraph: reachableModules, unreachableModules, lowestCommonAncestor and fullHierarchy * Replace usage of InstanceGraph with InstanceKeyGraph Also deprecates all unused methods. * WiringUtils: make new version of sinksToSources package private This will make our live easier next time we need to change it. * CircuitGraph: use InstanceKeyGraph * InstanceKeyGraphSpec: respect maximum line width * InstanceKeyGraph: make constructor private * InstanceKeyGraph: move lowestCommonAncestor function to Wiring * WiringUtils: update deprecation message
Diffstat (limited to 'src/main/scala/firrtl/transforms')
-rw-r--r--src/main/scala/firrtl/transforms/CheckCombLoops.scala4
-rw-r--r--src/main/scala/firrtl/transforms/ConstantPropagation.scala6
-rw-r--r--src/main/scala/firrtl/transforms/DeadCodeElimination.scala4
-rw-r--r--src/main/scala/firrtl/transforms/Dedup.scala4
-rw-r--r--src/main/scala/firrtl/transforms/ManipulateNames.scala4
-rw-r--r--src/main/scala/firrtl/transforms/RenameModules.scala4
-rw-r--r--src/main/scala/firrtl/transforms/TopWiring.scala14
7 files changed, 21 insertions, 19 deletions
diff --git a/src/main/scala/firrtl/transforms/CheckCombLoops.scala b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
index dbfd5cf8..6403be23 100644
--- a/src/main/scala/firrtl/transforms/CheckCombLoops.scala
+++ b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
@@ -11,7 +11,7 @@ import firrtl.traversals.Foreachers._
import firrtl.annotations._
import firrtl.Utils.throwInternalError
import firrtl.graph._
-import firrtl.analyses.InstanceGraph
+import firrtl.analyses.InstanceKeyGraph
import firrtl.options.{Dependency, RegisteredTransform, ShellOption}
/**
@@ -241,7 +241,7 @@ class CheckCombLoops extends Transform
case ann: Annotation => CircuitTarget(c.main)
}
val moduleMap = c.modules.map({m => (m.name,m) }).toMap
- val iGraph = new InstanceGraph(c).graph
+ val iGraph = InstanceKeyGraph(c).graph
val moduleDeps = iGraph.getEdgeMap.map({ case (k,v) => (k.module, (v map { i => (i.name, i.module) }).toMap) }).toMap
val topoSortedModules = iGraph.transformNodes(_.module).linearize.reverse map { moduleMap(_) }
val moduleGraphs = new mutable.HashMap[String, ConnMap]
diff --git a/src/main/scala/firrtl/transforms/ConstantPropagation.scala b/src/main/scala/firrtl/transforms/ConstantPropagation.scala
index c3c615e0..ce36dd72 100644
--- a/src/main/scala/firrtl/transforms/ConstantPropagation.scala
+++ b/src/main/scala/firrtl/transforms/ConstantPropagation.scala
@@ -11,7 +11,7 @@ import firrtl.Utils._
import firrtl.Mappers._
import firrtl.PrimOps._
import firrtl.graph.DiGraph
-import firrtl.analyses.InstanceGraph
+import firrtl.analyses.InstanceKeyGraph
import firrtl.annotations.TargetToken.Ref
import firrtl.options.Dependency
@@ -739,8 +739,8 @@ class ConstantPropagation extends Transform with DependencyAPIMigration with Res
private def run(c: Circuit, dontTouchMap: Map[OfModule, Set[String]]): Circuit = {
- val iGraph = new InstanceGraph(c)
- val moduleDeps = iGraph.getChildrenInstanceMap
+ val iGraph = InstanceKeyGraph(c)
+ val moduleDeps = iGraph.getChildInstanceMap
val instCount = iGraph.staticInstanceCount
// DiGraph using Module names as nodes, destination of edge is a parent Module
diff --git a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
index f9e35818..c883bdfb 100644
--- a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
+++ b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
@@ -6,7 +6,7 @@ import firrtl.ir._
import firrtl.passes._
import firrtl.annotations._
import firrtl.graph._
-import firrtl.analyses.InstanceGraph
+import firrtl.analyses.InstanceKeyGraph
import firrtl.Mappers._
import firrtl.Utils.{throwInternalError, kind}
import firrtl.MemoizedHash._
@@ -314,7 +314,7 @@ class DeadCodeElimination extends Transform
doTouchExtMods: Set[String]): CircuitState = {
val c = state.circuit
val moduleMap = c.modules.map(m => m.name -> m).toMap
- val iGraph = new InstanceGraph(c)
+ val iGraph = InstanceKeyGraph(c)
val moduleDeps = iGraph.graph.getEdgeMap.map({ case (k,v) =>
k.module -> v.map(i => i.name -> i.module).toMap
})
diff --git a/src/main/scala/firrtl/transforms/Dedup.scala b/src/main/scala/firrtl/transforms/Dedup.scala
index 30558129..627af11f 100644
--- a/src/main/scala/firrtl/transforms/Dedup.scala
+++ b/src/main/scala/firrtl/transforms/Dedup.scala
@@ -157,7 +157,7 @@ class DedupModules extends Transform with DependencyAPIMigration {
moduleRenameMap.recordAll(map)
// Build instanceify renaming map
- val instanceGraph = new InstanceKeyGraph(c)
+ val instanceGraph = InstanceKeyGraph(c)
val instanceify = RenameMap()
val moduleName2Index = c.modules.map(_.name).zipWithIndex.map { case (n, i) =>
{
@@ -467,7 +467,7 @@ object DedupModules extends LazyLogging {
renameMap: RenameMap): Map[String, DefModule] = {
val (moduleMap, moduleLinearization) = {
- val iGraph = new InstanceKeyGraph(circuit)
+ val iGraph = InstanceKeyGraph(circuit)
(iGraph.moduleMap, iGraph.moduleOrder.reverse)
}
val main = circuit.main
diff --git a/src/main/scala/firrtl/transforms/ManipulateNames.scala b/src/main/scala/firrtl/transforms/ManipulateNames.scala
index ea988e72..f15b546f 100644
--- a/src/main/scala/firrtl/transforms/ManipulateNames.scala
+++ b/src/main/scala/firrtl/transforms/ManipulateNames.scala
@@ -3,7 +3,7 @@
package firrtl.transforms
import firrtl._
-import firrtl.analyses.InstanceGraph
+import firrtl.analyses.InstanceKeyGraph
import firrtl.Mappers._
import firrtl.annotations.{
@@ -422,7 +422,7 @@ abstract class ManipulateNames[A <: ManipulateNames[_] : ClassTag] extends Trans
* roots ensures that the rename map is safe for parents to blindly consult. Store this in mapping of old module
* target to new module to allow the modules to be put in the old order.
*/
- val modulesx: Map[ModuleTarget, ir.DefModule] = new InstanceGraph(c).moduleOrder.reverse
+ val modulesx: Map[ModuleTarget, ir.DefModule] = InstanceKeyGraph(c).moduleOrder.reverse
.map(m => t.module(m.name) -> onModule(m, r, t))
.toMap
diff --git a/src/main/scala/firrtl/transforms/RenameModules.scala b/src/main/scala/firrtl/transforms/RenameModules.scala
index edd9fefb..d37f8c39 100644
--- a/src/main/scala/firrtl/transforms/RenameModules.scala
+++ b/src/main/scala/firrtl/transforms/RenameModules.scala
@@ -2,7 +2,7 @@
package firrtl.transforms
-import firrtl.analyses.{InstanceGraph, ModuleNamespaceAnnotation}
+import firrtl.analyses.{InstanceKeyGraph, ModuleNamespaceAnnotation}
import firrtl.ir._
import firrtl._
import firrtl.stage.Forms
@@ -39,7 +39,7 @@ class RenameModules extends Transform with DependencyAPIMigration {
logger.warn("Skipping Rename Modules")
state
} else {
- val moduleOrder = new InstanceGraph(state.circuit).moduleOrder.reverse
+ val moduleOrder = InstanceKeyGraph(state.circuit).moduleOrder.reverse
val nameMappings = new mutable.HashMap[String, String]()
moduleOrder.foreach(collectNameMapping(namespace.get, nameMappings))
diff --git a/src/main/scala/firrtl/transforms/TopWiring.scala b/src/main/scala/firrtl/transforms/TopWiring.scala
index 59c494c7..aa046770 100644
--- a/src/main/scala/firrtl/transforms/TopWiring.scala
+++ b/src/main/scala/firrtl/transforms/TopWiring.scala
@@ -4,9 +4,10 @@ package TopWiring
import firrtl._
import firrtl.ir._
-import firrtl.passes.{InferTypes, LowerTypes, ResolveKinds, ResolveFlows, ExpandConnects}
+import firrtl.passes.{ExpandConnects, InferTypes, LowerTypes, ResolveFlows, ResolveKinds}
import firrtl.annotations._
import firrtl.Mappers._
+import firrtl.analyses.InstanceKeyGraph
import firrtl.stage.Forms
import firrtl.options.Dependency
@@ -129,8 +130,8 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
private def getSourcesMap(state: CircuitState): Map[String,Seq[(ComponentName, Type, Boolean, InstPath, String)]] = {
val sSourcesModNames = getSourceModNames(state)
val sSourcesNames = getSourceNames(state)
- val instGraph = new firrtl.analyses.InstanceGraph(state.circuit)
- val cMap = instGraph.getChildrenInstances.map{ case (m, wdis) =>
+ val instGraph = firrtl.analyses.InstanceKeyGraph(state.circuit)
+ val cMap = instGraph.getChildInstances.map{ case (m, wdis) =>
(m -> wdis.map{ case wdi => (wdi.name, wdi.module) }.toSeq) }.toMap
val topSort = instGraph.moduleOrder.reverse
@@ -167,7 +168,7 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
*/
private def onModule(sources: Map[String, Seq[(ComponentName, Type, Boolean, InstPath, String)]],
portnamesmap : mutable.Map[String,String],
- instgraph : firrtl.analyses.InstanceGraph,
+ instgraph : firrtl.analyses.InstanceKeyGraph,
namespacemap : Map[String, Namespace])
(module: DefModule): DefModule = {
val namespace = namespacemap(module.name)
@@ -186,6 +187,7 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
} }
// Add connections to Module
+ val childInstances = instgraph.getChildInstances.toMap
module match {
case m: Module =>
val connections: Seq[Connect] = p.map { case (ComponentName(cname,_), _, _ , path, prefix) =>
@@ -205,7 +207,7 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
val instportname = portnamesmap.get(prefix + path.tail.mkString("_")) match {
case Some(ipn) => ipn
case None => {
- val instmod = instgraph.getChildrenInstances(module.name).collectFirst {
+ val instmod = childInstances(module.name).collectFirst {
case wdi if wdi.name == path.head => wdi.module}.get
val instnamespace = namespacemap(instmod)
portnamesmap(prefix + path.tail.mkString("_")) =
@@ -244,7 +246,7 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
val sources = getSourcesMap(state)
val (nstate, nmappings) = if (sources.nonEmpty) {
val portnamesmap: mutable.Map[String,String] = mutable.Map()
- val instgraph = new firrtl.analyses.InstanceGraph(state.circuit)
+ val instgraph = InstanceKeyGraph(state.circuit)
val namespacemap = state.circuit.modules.map{ case m => (m.name -> Namespace(m)) }.toMap
val modulesx = state.circuit.modules map onModule(sources, portnamesmap, instgraph, namespacemap)
val newCircuit = state.circuit.copy(modules = modulesx)