blob: ffac16614d451dc5d0788477517b329ceb88735a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// SPDX-License-Identifier: Apache-2.0
package firrtl.transforms
import firrtl.{CircuitState, DependencyAPIMigration, Transform}
import firrtl.analyses.InstanceKeyGraph
import firrtl.options.Dependency
import firrtl.stage.Forms
/** Return a circuit where all modules (and external modules) are defined before use. */
class SortModules extends Transform with DependencyAPIMigration {
override def prerequisites = Seq(Dependency(firrtl.passes.CheckChirrtl))
override def optionalPrerequisites = Seq.empty
override def optionalPrerequisiteOf = Forms.ChirrtlEmitters
override def invalidates(a: Transform) = false
override def execute(state: CircuitState): CircuitState = {
val modulesx = InstanceKeyGraph(state.circuit).moduleOrder.reverse
state.copy(circuit = state.circuit.copy(modules = modulesx))
}
}
|