Files
chipyard/src/main/scala/barstools/tapeout/transforms/EnumerateModules.scala
2021-08-10 15:40:58 -07:00

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)
}
}