aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/VerilogEmitterTests.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/VerilogEmitterTests.scala b/src/test/scala/firrtlTests/VerilogEmitterTests.scala
index b5ad2f1a..3b9f4702 100644
--- a/src/test/scala/firrtlTests/VerilogEmitterTests.scala
+++ b/src/test/scala/firrtlTests/VerilogEmitterTests.scala
@@ -9,6 +9,7 @@ import firrtl._
import firrtl.annotations._
import firrtl.ir.Circuit
import firrtl.passes._
+import firrtl.transforms.VerilogRename
import firrtl.Parser.IgnoreInfo
import FirrtlCheckers._
@@ -232,6 +233,43 @@ class VerilogEmitterSpec extends FirrtlFlatSpec {
}
}
+ "Verilog name conflicts" should "be resolved" in {
+ val input =
+ """|circuit parameter:
+ | module parameter:
+ | input always: UInt<1>
+ | output always$: UInt<1>
+ | inst assign of endmodule
+ | node always_ = not(always)
+ | node always__ = and(always_, assign.fork)
+ | always$ <= always__
+ | module endmodule:
+ | output fork: UInt<1>
+ | node const = add(UInt<4>("h1"), UInt<3>("h2"))
+ | fork <= const
+ |""".stripMargin
+ val check_firrtl =
+ """|circuit parameter_:
+ | module parameter_:
+ | input always___: UInt<1>
+ | output always$: UInt<1>
+ | inst assign_ of endmodule_
+ | node always_ = not(always___)
+ | node always__ = and(always_, assign_.fork_)
+ | always$ <= always__
+ | module endmodule_:
+ | output fork_: UInt<1>
+ | node const_ = add(UInt<4>("h1"), UInt<3>("h2"))
+ | fork_ <= const_
+ |""".stripMargin
+ val state = CircuitState(parse(input), UnknownForm, Seq.empty, None)
+ val output = Seq( ToWorkingIR, ResolveKinds, InferTypes, new VerilogRename )
+ .foldLeft(state){ case (c, tx) => tx.runTransform(c) }
+ Seq( CheckHighForm )
+ .foldLeft(output.circuit){ case (c, tx) => tx.run(c) }
+ output.circuit.serialize should be (parse(check_firrtl).serialize)
+ }
+
}
class VerilogDescriptionEmitterSpec extends FirrtlFlatSpec {