summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorLeway Colin2021-07-15 07:22:20 +0800
committerGitHub2021-07-14 16:22:20 -0700
commite6c902eaf6f63413ff8f3b12ad8993cf34447413 (patch)
tree051779057f56faf67185b2c360f4e1368f591606 /src/test
parent695864f5716626a15a7798dae048d8301940a2db (diff)
Fix Cat rename signal (#2011)
Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/chiselTests/CustomBundle.scala24
-rw-r--r--src/test/scala/chiselTests/RecordSpec.scala19
-rw-r--r--src/test/scala/chiselTests/util/CatSpec.scala30
3 files changed, 55 insertions, 18 deletions
diff --git a/src/test/scala/chiselTests/CustomBundle.scala b/src/test/scala/chiselTests/CustomBundle.scala
new file mode 100644
index 00000000..b04dcc59
--- /dev/null
+++ b/src/test/scala/chiselTests/CustomBundle.scala
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package chiselTests
+
+import chisel3._
+import chisel3.experimental.{DataMirror, requireIsChiselType}
+import scala.collection.immutable.ListMap
+
+// An example of how Record might be extended
+// In this case, CustomBundle is a Record constructed from a Tuple of (String, Data)
+// it is a possible implementation of a programmatic "Bundle"
+// (and can by connected to MyBundle below)
+final class CustomBundle(elts: (String, Data)*) extends Record {
+ val elements = ListMap(elts map { case (field, elt) =>
+ requireIsChiselType(elt)
+ field -> elt
+ }: _*)
+ def apply(elt: String): Data = elements(elt)
+ override def cloneType: this.type = {
+ val cloned = elts.map { case (n, d) => n -> DataMirror.internal.chiselTypeClone(d) }
+ (new CustomBundle(cloned: _*)).asInstanceOf[this.type]
+ }
+}
+
diff --git a/src/test/scala/chiselTests/RecordSpec.scala b/src/test/scala/chiselTests/RecordSpec.scala
index c34c2bf4..c21d455c 100644
--- a/src/test/scala/chiselTests/RecordSpec.scala
+++ b/src/test/scala/chiselTests/RecordSpec.scala
@@ -6,24 +6,7 @@ import chisel3._
import chisel3.stage.ChiselStage
import chisel3.testers.BasicTester
import chisel3.util.{Counter, Queue}
-import chisel3.experimental.{DataMirror, requireIsChiselType}
-import scala.collection.immutable.ListMap
-
-// An example of how Record might be extended
-// In this case, CustomBundle is a Record constructed from a Tuple of (String, Data)
-// it is a possible implementation of a programmatic "Bundle"
-// (and can by connected to MyBundle below)
-final class CustomBundle(elts: (String, Data)*) extends Record {
- val elements = ListMap(elts map { case (field, elt) =>
- requireIsChiselType(elt)
- field -> elt
- }: _*)
- def apply(elt: String): Data = elements(elt)
- override def cloneType: this.type = {
- val cloned = elts.map { case (n, d) => n -> DataMirror.internal.chiselTypeClone(d) }
- (new CustomBundle(cloned: _*)).asInstanceOf[this.type]
- }
-}
+import chisel3.experimental.DataMirror
trait RecordSpecUtils {
class MyBundle extends Bundle {
diff --git a/src/test/scala/chiselTests/util/CatSpec.scala b/src/test/scala/chiselTests/util/CatSpec.scala
index 5565ca51..79d2c027 100644
--- a/src/test/scala/chiselTests/util/CatSpec.scala
+++ b/src/test/scala/chiselTests/util/CatSpec.scala
@@ -5,6 +5,7 @@ package chiselTests.util
import chisel3._
import chisel3.stage.ChiselStage
import chisel3.util.Cat
+import chisel3.experimental.noPrefix
import chiselTests.ChiselFlatSpec
@@ -31,4 +32,33 @@ class CatSpec extends ChiselFlatSpec {
}
+ it should "not override the names of its arguments" in {
+ class MyModule extends RawModule {
+ val a, b, c, d = IO(Input(UInt(8.W)))
+ val out = IO(Output(UInt()))
+
+ out := Cat(a, b, c, d)
+ }
+ val chirrtl = ChiselStage.emitChirrtl(new MyModule)
+ for (name <- Seq("a", "b", "c", "d")) {
+ chirrtl should include (s"input $name : UInt<8>")
+ }
+ }
+
+ it should "have prefixed naming" in {
+ class MyModule extends RawModule {
+ val in = IO(Input(Vec(8, UInt(8.W))))
+ val out = IO(Output(UInt()))
+
+ // noPrefix to avoid `out` as prefix
+ out := noPrefix(Cat(in))
+ }
+ val chirrtl = ChiselStage.emitChirrtl(new MyModule)
+ chirrtl should include ("node lo_lo = cat(in[6], in[7])")
+ chirrtl should include ("node lo_hi = cat(in[4], in[5])")
+ chirrtl should include ("node hi_lo = cat(in[2], in[3])")
+ chirrtl should include ("node hi_hi = cat(in[0], in[1])")
+ }
+
+
}