41 lines
1.1 KiB
Scala
41 lines
1.1 KiB
Scala
// See LICENSE for license details.
|
|
|
|
package barstools.tapeout.transforms
|
|
|
|
import firrtl._
|
|
import firrtl.ir._
|
|
import firrtl.passes.Pass
|
|
import firrtl.stage.Forms
|
|
import firrtl.stage.TransformManager.TransformDependency
|
|
|
|
class EnumerateModulesPass(enumerate: (Module) => Unit) extends Pass {
|
|
|
|
def run(c: Circuit): Circuit = {
|
|
val modulesx = c.modules.map {
|
|
case m: ExtModule => m
|
|
case m: Module => {
|
|
enumerate(m)
|
|
m
|
|
}
|
|
}
|
|
Circuit(c.info, modulesx, c.main)
|
|
}
|
|
}
|
|
|
|
class EnumerateModules(enumerate: (Module) => Unit)
|
|
extends Transform
|
|
with SeqTransformBased
|
|
with DependencyAPIMigration {
|
|
|
|
override def prerequisites: Seq[TransformDependency] = Forms.LowForm
|
|
override def optionalPrerequisites: Seq[TransformDependency] = Forms.LowFormOptimized
|
|
override def optionalPrerequisiteOf: Seq[TransformDependency] = Forms.LowEmitters
|
|
override def invalidates(a: Transform): Boolean = false
|
|
|
|
def transforms: Seq[Transform] = Seq(new EnumerateModulesPass(enumerate))
|
|
|
|
def execute(state: CircuitState): CircuitState = {
|
|
runTransforms(state)
|
|
}
|
|
}
|