// SPDX-License-Identifier: Apache-2.0 package chiselTests import chisel3._ import chisel3.stage.{ChiselGeneratorAnnotation, ChiselStage} import chisel3.util.TransitName import org.scalatest.flatspec.AnyFlatSpec import org.scalatest.matchers.should.Matchers class TransitNameSpec extends AnyFlatSpec with Matchers { class MyModule extends RawModule { val io = IO(new Bundle {}) override val desiredName: String = "MyModule" } /** A top-level module that instantiates three copies of MyModule */ class Top extends RawModule { /* Assign the IO of a new MyModule instance to value "foo". The instance will be named "MyModule". */ val foo = Module(new MyModule).io /* Assign the IO of a new MyModule instance to value "bar". The instance will be named "bar". */ val bar = { val x = Module(new MyModule) TransitName(x.io, x) // TransitName returns the first argument } /* Assign the IO of a new MyModule instance to value "baz". The instance will be named "baz_generated". */ val baz = { val x = Module(new MyModule) TransitName.withSuffix("_generated")(x.io, x) // TransitName returns the first argument } } it should "transit a name" in { val firrtl = (new ChiselStage) .emitFirrtl(new Top, Array("--target-dir", "test_run_dir/TransitNameSpec")) info("""output FIRRTL includes "inst MyModule"""") firrtl should include("inst MyModule of MyModule") info("""output FIRRTL includes "inst bar"""") firrtl should include("inst bar of MyModule") info("""output FIRRTL includes "inst baz_generated"""") firrtl should include("inst baz_generated of MyModule") } }