From 94d5b90493b42dd2c85d0d94ea707a69160d0536 Mon Sep 17 00:00:00 2001 From: Paul Rigge Date: Wed, 1 May 2019 19:55:21 -0700 Subject: Make asTypeOf work for bundles with zero-width fields. (#1079) Closes #1075.--- src/test/scala/chiselTests/AsTypeOfTester.scala | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/test/scala/chiselTests/AsTypeOfTester.scala b/src/test/scala/chiselTests/AsTypeOfTester.scala index c78ddb17..563e2b11 100644 --- a/src/test/scala/chiselTests/AsTypeOfTester.scala +++ b/src/test/scala/chiselTests/AsTypeOfTester.scala @@ -27,6 +27,24 @@ class AsTypeOfBundleTester extends BasicTester { stop() } +class AsTypeOfBundleZeroWidthTester extends BasicTester { + class ZeroWidthBundle extends Bundle { + val a = UInt(0.W) + val b = UInt(1.W) + val c = UInt(0.W) + } + + val bun = new ZeroWidthBundle + + val bunAsTypeOf = 1.U.asTypeOf(bun) + + assert(bunAsTypeOf.a === 0.U) + assert(bunAsTypeOf.b === 1.U) + assert(bunAsTypeOf.c === 0.U) + + stop() +} + class AsTypeOfVecTester extends BasicTester { val vec = ((15 << 12) + (0 << 8) + (1 << 4) + (2 << 0)).U.asTypeOf(Vec(4, SInt(4.W))) @@ -103,6 +121,10 @@ class AsTypeOfSpec extends ChiselFlatSpec { assertTesterPasses{ new AsTypeOfBundleTester } } + it should "work with Bundles that have fields of zero width" in { + assertTesterPasses{ new AsTypeOfBundleZeroWidthTester } + } + it should "work with Vecs containing Bits Types" in { assertTesterPasses{ new AsTypeOfVecTester } } -- cgit v1.2.3