diff options
| author | Schuyler Eldridge | 2019-02-05 11:23:19 -0500 |
|---|---|---|
| committer | Schuyler Eldridge | 2019-02-05 14:09:42 -0500 |
| commit | a77122b4bb8756636c169473af3dc367b14698ef (patch) | |
| tree | 318e35fb1d2e7aa503ab7cff56d9169a9cdf4e99 /src | |
| parent | 6ef7ad148ff491c06d417d417e2134da7ff49ef7 (diff) | |
Add RemoveValidIf to -X mverilog
This adds the RemoveValidIf Pass to the MinimumLowFirrtlOptimization
Transform. A test case is included to verify that `is invalid` is
properly converted to a connection to zero.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/LoweringCompilers.scala | 1 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/CompilerTests.scala | 15 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/main/scala/firrtl/LoweringCompilers.scala b/src/main/scala/firrtl/LoweringCompilers.scala index 7499d6d1..9969150d 100644 --- a/src/main/scala/firrtl/LoweringCompilers.scala +++ b/src/main/scala/firrtl/LoweringCompilers.scala @@ -119,6 +119,7 @@ class MinimumLowFirrtlOptimization extends CoreTransform { def inputForm = LowForm def outputForm = LowForm def transforms = Seq( + passes.RemoveValidIf, passes.Legalize, passes.memlib.VerilogMemDelays, // TODO move to Verilog emitter passes.SplitExpressions) diff --git a/src/test/scala/firrtlTests/CompilerTests.scala b/src/test/scala/firrtlTests/CompilerTests.scala index ff7d2cb8..df83dd38 100644 --- a/src/test/scala/firrtlTests/CompilerTests.scala +++ b/src/test/scala/firrtlTests/CompilerTests.scala @@ -159,21 +159,18 @@ class MinimumVerilogCompilerSpec extends CompilerSpec with Matchers { val input = """|circuit Top: | module Top: | output b: UInt<1>[2] - | node c = UInt<1>("h0") - | node d = UInt<1>("h0") - | b[0] <= UInt<1>("h0") - | b[1] <= c + | node c = UInt<1>("h1") + | b[0] <= c + | b[1] is invalid |""".stripMargin val check = """|module Top( | output b_0, | output b_1 |); | wire c; - | wire d; - | assign c = 1'h0; - | assign d = 1'h0; - | assign b_0 = 1'h0; - | assign b_1 = c; + | assign c = 1'h1; + | assign b_0 = c; + | assign b_1 = 1'h0; |endmodule |""".stripMargin def compiler = new MinimumVerilogCompiler() |
