From 8c8634639b424b7c856240d974ffd6405325dd42 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Wed, 29 Mar 2017 19:57:41 -0700 Subject: Fix bug where zero width expressions in nodes wouldn't get zeroed (#514) --- src/main/scala/firrtl/passes/ZeroWidth.scala | 2 +- src/test/scala/firrtlTests/ZeroWidthTests.scala | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/scala/firrtl/passes/ZeroWidth.scala b/src/main/scala/firrtl/passes/ZeroWidth.scala index 520075fe..a2ec9935 100644 --- a/src/main/scala/firrtl/passes/ZeroWidth.scala +++ b/src/main/scala/firrtl/passes/ZeroWidth.scala @@ -49,7 +49,7 @@ object ZeroWidth extends Pass { } case DefNode(info, name, value) => removeZero(value.tpe) match { case None => EmptyStmt - case Some(t) => s + case Some(t) => DefNode(info, name, onExp(value)) } case sx => sx map onStmt } diff --git a/src/test/scala/firrtlTests/ZeroWidthTests.scala b/src/test/scala/firrtlTests/ZeroWidthTests.scala index 5cb7e532..90926bc1 100644 --- a/src/test/scala/firrtlTests/ZeroWidthTests.scala +++ b/src/test/scala/firrtlTests/ZeroWidthTests.scala @@ -105,6 +105,20 @@ class ZeroWidthTests extends FirrtlFlatSpec { | skip""".stripMargin (parse(exec(input)).serialize) should be (parse(check).serialize) } + "Expression in node with type <0>" should "be replaced by UInt<1>(0)" in { + val input = + """circuit Top : + | module Top : + | input x: UInt<1> + | input y: UInt<0> + | node z = add(x, y)""".stripMargin + val check = + """circuit Top : + | module Top : + | input x: UInt<1> + | node z = add(x, UInt<1>(0))""".stripMargin + (parse(exec(input)).serialize) should be (parse(check).serialize) + } } class ZeroWidthVerilog extends FirrtlFlatSpec { -- cgit v1.2.3