constructs an instance graph from a Circuit
constructs an instance graph from a Circuit
the Circuit to analyze
Finds the absolute paths (each represented by a Seq of instances representing the chain of hierarchy) of all instances of a particular module.
Finds the absolute paths (each represented by a Seq of instances representing the chain of hierarchy) of all instances of a particular module. Note that this includes one implicit instance of the top (main) module of the circuit. If the module is not instantiated within the hierarchy of the top module of the circuit, it will return Nil.
the name of the selected module
a Seq[ Seq[DefInstance] ] of absolute instance paths
(Since version FIRRTL 1.4) Use InstanceKeyGraph.findInstancesInHierarchy instead (now with caching of vertices!).
A list of absolute paths (each represented by a Seq of instances) of all module instances in the Circuit.
A list of absolute paths (each represented by a Seq of instances) of all module instances in the Circuit.
(Since version FIRRTL 1.4) Use InstanceKeyGraph.fullHierarchy instead.
Given a circuit, returns a map from module name to a map in turn mapping instances names to corresponding module names
Given a circuit, returns a map from module name to a map in turn mapping instances names to corresponding module names
(Since version FIRRTL 1.4) Use InstanceKeyGraph.getChildInstanceMap instead.
Given a circuit, returns a map from module name to children instance/module firrtl.annotations.TargetTokens
Given a circuit, returns a map from module name to children instance/module firrtl.annotations.TargetTokens
(Since version FIRRTL 1.4) Use InstanceKeyGraph.getChildInstances instead.
Given a circuit, returns a map from module name to children instance/module definitions
Given a circuit, returns a map from module name to children instance/module definitions
(Since version FIRRTL 1.4) Use InstanceKeyGraph.getChildInstances instead.
A directed graph showing the instance dependencies among modules in the circuit.
A directed graph showing the instance dependencies among modules in the circuit. Every DefInstance of a module has an edge to every DefInstance arising from every instance statement in that module.
(Since version FIRRTL 1.4) Use InstanceKeyGraph.graph instead.
Finds the lowest common ancestor instances for two module names in a design
Finds the lowest common ancestor instances for two module names in a design
(Since version FIRRTL 1.4) Use InstanceKeyGraph and EulerTour(iGraph.graph, iGraph.top).rmq(moduleA, moduleB).
(Since version FIRRTL 1.4) Use InstanceKeyGraph.moduleMap instead.
Module order from highest module to leaf module
Module order from highest module to leaf module
sequence of modules in order from top to leaf
(Since version FIRRTL 1.4) Use InstanceKeyGraph.moduleOrder instead.
The set of all modules in the circuit
The set of all modules in the circuit
(Since version FIRRTL 1.4) Use InstanceKeyGraph instead.
The set of all modules in the circuit reachable from the top module
The set of all modules in the circuit reachable from the top module
(Since version FIRRTL 1.4) Use InstanceKeyGraph instead.
A count of the *static* number of instances of each module.
A count of the *static* number of instances of each module. For any module other than the top (main) module, this is equivalent to the number of inst statements in the circuit instantiating each module, irrespective of the number of times (if any) the enclosing module appears in the hierarchy. Note that top module of the circuit has an associated count of one, even though it is never directly instantiated. Any modules *not* instantiated at all will have a count of zero.
(Since version FIRRTL 1.4) Use InstanceKeyGraph.staticInstanceCount instead.
The set of all modules *not* reachable in the circuit
The set of all modules *not* reachable in the circuit
(Since version FIRRTL 1.4) Use InstanceKeyGraph.unreachableModules instead.
A class representing the instance hierarchy of a working IR Circuit
(Since version FIRRTL 1.4) Use InstanceKeyGraph instead.
The current implementation has some performance problems, which is why InstanceKeyGraph exists and should be preferred for new use cases. Eventually the old class will be deprecated in favor of the new implementation. The performance problems in the old implementation stem from the fact that DefInstance is used as the key to the underlying Map. DefInstance contains the type of the module besides the module and instance names. This type is not needed as it can be inferred from the module name. If the module name is the same, the type will be the same and vice versa. Hashing and comparing deep bundle types however is inefficient which can manifest in slower then necessary lookups and insertions.