aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-10-12 23:59:50 +0700
committerGitHub2018-10-12 23:59:50 +0700
commit7e1dcb7c316849d10938ff4fa79ba8df834ba403 (patch)
treecf854db621b4eb11304b180c094d1e6ca455136f /src/test
parented709571876b68e4982d11db15d236752713b6a1 (diff)
parentd426eb766a6177a3488da36ec380df47610c483a (diff)
Merge pull request #909 from seldridge/issue-729.2
Verilog renaming uses "_", works on whole AST
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 {