aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorJack Koenig2021-03-13 18:38:20 -0800
committerGitHub2021-03-14 02:38:20 +0000
commitfd55c51bcef01c2b2919817aa33c67e5a0849d05 (patch)
tree309cfe0f72b8bf6e9cc10b4a98d32e6f6054da44 /src/test
parented1eb88d6ccdccd4b5802676cd8b69f5cc357e4f (diff)
Fix cat of zero-width SInt (#2116)
Previously, concatenating two SInts where one is of zero-width would return the non-zero-width SInt. This is incorrect because the output of Cat should be of type UInt. Now the ZeroWidth transform will introduce a cast when removing a Cat when the argument type is non-UInt.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/ZeroWidthTests.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/ZeroWidthTests.scala b/src/test/scala/firrtlTests/ZeroWidthTests.scala
index 99ebbdd3..df630065 100644
--- a/src/test/scala/firrtlTests/ZeroWidthTests.scala
+++ b/src/test/scala/firrtlTests/ZeroWidthTests.scala
@@ -220,6 +220,23 @@ class ZeroWidthTests extends FirrtlFlatSpec {
| x <= UInt<1>(1)""".stripMargin
(parse(exec(input))) should be(parse(check))
}
+
+ "Cat of SInt with zero-width" should "keep type correctly" in {
+ val input =
+ """circuit Top :
+ | module Top :
+ | input x : SInt<0>
+ | input y : SInt<1>
+ | output z : UInt<1>
+ | z <= cat(y, x)""".stripMargin
+ val check =
+ """circuit Top :
+ | module Top :
+ | input y : SInt<1>
+ | output z : UInt<1>
+ | z <= asUInt(y)""".stripMargin
+ (parse(exec(input))) should be(parse(check))
+ }
}
class ZeroWidthVerilog extends FirrtlFlatSpec {