summaryrefslogtreecommitdiff
path: root/src/test/scala
diff options
context:
space:
mode:
authormergify[bot]2022-05-29 22:07:56 +0000
committerGitHub2022-05-29 22:07:56 +0000
commit0c811b490f47f20f2e81c58706924e56611b6ba2 (patch)
tree04df977bccd83adb9458d6bf783369bb4e226d86 /src/test/scala
parent3aed65709aedc22810926751db33fe9ba767a03b (diff)
Deprecate accessing the name of non-hardware Data (#2550) (#2552)
This includes (and is tested) for both the old .*Name APIs and .toTarget (cherry picked from commit 6e0d8d6b12e9d8f94c2cc43b92b2366ec70dfd50) Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/test/scala')
-rw-r--r--src/test/scala/chiselTests/InstanceNameSpec.scala20
-rw-r--r--src/test/scala/chiselTests/ToTargetSpec.scala52
2 files changed, 66 insertions, 6 deletions
diff --git a/src/test/scala/chiselTests/InstanceNameSpec.scala b/src/test/scala/chiselTests/InstanceNameSpec.scala
index 7eaf3106..cc5980f4 100644
--- a/src/test/scala/chiselTests/InstanceNameSpec.scala
+++ b/src/test/scala/chiselTests/InstanceNameSpec.scala
@@ -22,28 +22,36 @@ class InstanceNameModule extends Module {
io.bar := io.foo + x
}
-class InstanceNameSpec extends ChiselFlatSpec {
+class InstanceNameSpec extends ChiselFlatSpec with Utils {
behavior.of("instanceName")
val moduleName = "InstanceNameModule"
var m: InstanceNameModule = _
ChiselStage.elaborate { m = new InstanceNameModule; m }
+ val deprecationMsg = "Accessing the .instanceName or .toTarget of non-hardware Data is deprecated"
+
it should "work with module IO" in {
val io = m.io.pathName
assert(io == moduleName + ".io")
}
- it should "work with internal vals" in {
+ it should "work for literals" in {
val x = m.x.pathName
- val y = m.y.pathName
- val z = m.z.pathName
assert(x == moduleName + ".UInt<2>(\"h03\")")
+ }
+
+ it should "work with non-hardware values (but be deprecated)" in {
+ val (ylog, y) = grabLog(m.y.pathName)
+ val (zlog, z) = grabLog(m.z.pathName)
+ ylog should include(deprecationMsg)
assert(y == moduleName + ".y")
+ zlog should include(deprecationMsg)
assert(z == moduleName + ".z")
}
- it should "work with bundle elements" in {
- val foo = m.z.foo.pathName
+ it should "work with non-hardware bundle elements (but be deprecated)" in {
+ val (log, foo) = grabLog(m.z.foo.pathName)
+ log should include(deprecationMsg)
assert(foo == moduleName + ".z.foo")
}
diff --git a/src/test/scala/chiselTests/ToTargetSpec.scala b/src/test/scala/chiselTests/ToTargetSpec.scala
new file mode 100644
index 00000000..dc4ec448
--- /dev/null
+++ b/src/test/scala/chiselTests/ToTargetSpec.scala
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package chiselTests
+
+import chisel3._
+import chisel3.stage.ChiselStage
+import chisel3.util.Queue
+import chisel3.internal.ChiselException
+
+class ToTargetSpec extends ChiselFlatSpec with Utils {
+
+ var m: InstanceNameModule = _
+ ChiselStage.elaborate { m = new InstanceNameModule; m }
+
+ val mn = "InstanceNameModule"
+ val top = s"~$mn|$mn"
+
+ behavior.of(".toTarget")
+
+ val deprecationMsg = "Accessing the .instanceName or .toTarget of non-hardware Data is deprecated"
+
+ it should "work with module IO" in {
+ val io = m.io.toTarget.toString
+ assert(io == s"$top>io")
+ }
+
+ it should "not work for literals" in {
+ a[ChiselException] shouldBe thrownBy {
+ m.x.toTarget.toString
+ }
+ }
+
+ it should "work with non-hardware values (but be deprecated)" in {
+ val (ylog, y) = grabLog(m.y.toTarget.toString)
+ val (zlog, z) = grabLog(m.z.toTarget.toString)
+ assert(y == s"$top>y")
+ ylog should include(deprecationMsg)
+ assert(z == s"$top>z")
+ zlog should include(deprecationMsg)
+ }
+
+ it should "work with non-hardware bundle elements (but be deprecated)" in {
+ val (log, foo) = grabLog(m.z.foo.toTarget.toString)
+ log should include(deprecationMsg)
+ assert(foo == s"$top>z.foo")
+ }
+
+ it should "work with modules" in {
+ val q = m.q.toTarget.toString
+ assert(q == s"~$mn|Queue")
+ }
+}