aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2019-02-05 14:57:53 -0500
committerGitHub2019-02-05 14:57:53 -0500
commitd69c609fd41c2b6ca2993085bcd2923daa563bde (patch)
tree3d7a3bacd8debc917cd5525d6fdecdee6a50e31c /src/test/scala
parentfa0a6e2cbe2a78fc231f47b5b73d870669b54ade (diff)
parent0a88492bfbbfe7e446b74776ec59cab69e73585b (diff)
Merge pull request #1004 from seldridge/issue-423
Add "mverilog" Compiler Option, MinimumVerilogEmitter
Diffstat (limited to 'src/test/scala')
-rw-r--r--src/test/scala/firrtlTests/CompilerTests.scala32
-rw-r--r--src/test/scala/firrtlTests/DriverSpec.scala8
2 files changed, 38 insertions, 2 deletions
diff --git a/src/test/scala/firrtlTests/CompilerTests.scala b/src/test/scala/firrtlTests/CompilerTests.scala
index 348ed300..dc70847a 100644
--- a/src/test/scala/firrtlTests/CompilerTests.scala
+++ b/src/test/scala/firrtlTests/CompilerTests.scala
@@ -13,6 +13,7 @@ import firrtl.{
Compiler,
HighFirrtlCompiler,
MiddleFirrtlCompiler,
+ MinimumVerilogCompiler,
LowFirrtlCompiler,
Parser,
VerilogCompiler
@@ -153,3 +154,34 @@ class VerilogCompilerSpec extends CompilerSpec with Matchers {
getOutput should be (check)
}
}
+
+class MinimumVerilogCompilerSpec extends CompilerSpec with Matchers {
+ val input = """|circuit Top:
+ | module Top:
+ | output b: UInt<1>[3]
+ | node c = bits(UInt<3>("h7"), 2, 2)
+ | node d = shr(UInt<3>("h7"), 2)
+ | b[0] is invalid
+ | b[1] <= c
+ | b[2] <= d
+ |""".stripMargin
+ val check = """|module Top(
+ | output b_0,
+ | output b_1,
+ | output b_2
+ |);
+ | wire c;
+ | wire d;
+ | assign c = 1'h1;
+ | assign d = 1'h1;
+ | assign b_0 = 1'h0;
+ | assign b_1 = c;
+ | assign b_2 = d;
+ |endmodule
+ |""".stripMargin
+ def compiler = new MinimumVerilogCompiler()
+
+ "A circuit's minimum Verilog output" should "not have constants propagated or dead code eliminated" in {
+ getOutput should be (check)
+ }
+}
diff --git a/src/test/scala/firrtlTests/DriverSpec.scala b/src/test/scala/firrtlTests/DriverSpec.scala
index 545bf09a..ae1e08e7 100644
--- a/src/test/scala/firrtlTests/DriverSpec.scala
+++ b/src/test/scala/firrtlTests/DriverSpec.scala
@@ -371,7 +371,9 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities
"low" -> "./Top.lo.fir",
"high" -> "./Top.hi.fir",
"middle" -> "./Top.mid.fir",
- "verilog" -> "./Top.v"
+ "verilog" -> "./Top.v",
+ "mverilog" -> "./Top.v",
+ "sverilog" -> "./Top.sv"
).foreach { case (compilerName, expectedOutputFileName) =>
val manager = new ExecutionOptionsManager("test") with HasFirrtlOptions {
commonOptions = CommonOptions(topName = "Top")
@@ -391,7 +393,9 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities
"low" -> Seq("./Top.lo.fir", "./Child.lo.fir"),
"high" -> Seq("./Top.hi.fir", "./Child.hi.fir"),
"middle" -> Seq("./Top.mid.fir", "./Child.mid.fir"),
- "verilog" -> Seq("./Top.v", "./Child.v")
+ "verilog" -> Seq("./Top.v", "./Child.v"),
+ "mverilog" -> Seq("./Top.v", "./Child.v"),
+ "sverilog" -> Seq("./Top.sv", "./Child.sv")
).foreach { case (compilerName, expectedOutputFileNames) =>
println(s"$compilerName -> $expectedOutputFileNames")
val manager = new ExecutionOptionsManager("test") with HasFirrtlOptions {