summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/chisel3/util/Cat.scala1
-rw-r--r--src/test/scala/chiselTests/util/CatSpec.scala34
2 files changed, 35 insertions, 0 deletions
diff --git a/src/main/scala/chisel3/util/Cat.scala b/src/main/scala/chisel3/util/Cat.scala
index 793a5463..3369eb18 100644
--- a/src/main/scala/chisel3/util/Cat.scala
+++ b/src/main/scala/chisel3/util/Cat.scala
@@ -25,6 +25,7 @@ object Cat {
* in the sequence forms the least significant bits.
*
* Equivalent to r(0) ## r(1) ## ... ## r(n-1).
+ * @note This returns a `0.U` if applied to a zero-element `Vec`.
*/
def apply[T <: Bits](r: Seq[T]): UInt = SeqUtils.asUInt(r.reverse)
}
diff --git a/src/test/scala/chiselTests/util/CatSpec.scala b/src/test/scala/chiselTests/util/CatSpec.scala
new file mode 100644
index 00000000..2e52fe63
--- /dev/null
+++ b/src/test/scala/chiselTests/util/CatSpec.scala
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package chiselTests.util
+
+import chisel3._
+import chisel3.stage.ChiselStage
+import chisel3.util.Cat
+
+import chiselTests.ChiselFlatSpec
+
+object CatSpec {
+
+ class JackIsATypeSystemGod extends MultiIOModule {
+ val in = IO(Input (Vec(0, UInt(8.W))))
+ val out = IO(Output(UInt(8.W)))
+
+ out := Cat(in)
+ }
+
+}
+
+class CatSpec extends ChiselFlatSpec {
+
+ import CatSpec._
+
+ behavior of "util.Cat"
+
+ it should "not fail to elaborate a zero-element Vec" in {
+
+ ChiselStage.elaborate(new JackIsATypeSystemGod)
+
+ }
+
+}