summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/experimental/DataView.scala
diff options
context:
space:
mode:
authorJack2022-11-11 06:53:04 +0000
committerJack2022-11-11 06:53:04 +0000
commit3ce953c81f06519351c48277e3474b5720ec07ff (patch)
treeac79dcb80d0528c2ae86ca21da4cf424715ab645 /src/test/scala/chiselTests/experimental/DataView.scala
parentadccde9998c91875e5490cff6d5822ffacc593ed (diff)
parentc8046636a25474be4c547c6fe9c6d742ea7b1d13 (diff)
Merge branch '3.5.x' into 3.5-release
Diffstat (limited to 'src/test/scala/chiselTests/experimental/DataView.scala')
-rw-r--r--src/test/scala/chiselTests/experimental/DataView.scala34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/test/scala/chiselTests/experimental/DataView.scala b/src/test/scala/chiselTests/experimental/DataView.scala
index ac8357f0..cefc893c 100644
--- a/src/test/scala/chiselTests/experimental/DataView.scala
+++ b/src/test/scala/chiselTests/experimental/DataView.scala
@@ -7,7 +7,7 @@ import chisel3._
import chisel3.experimental.dataview._
import chisel3.experimental.conversions._
import chisel3.experimental.DataMirror.internal.chiselTypeClone
-import chisel3.experimental.HWTuple2
+import chisel3.experimental.{Analog, HWTuple2}
import chisel3.stage.ChiselStage
import chisel3.util.{Decoupled, DecoupledIO}
@@ -91,6 +91,16 @@ class DataViewSpec extends ChiselFlatSpec {
chirrtl should include("bar <= in")
}
+ it should "handle viewing Analogs as Analogs" in {
+ class MyModule extends Module {
+ val foo = IO(Analog(8.W))
+ val bar = IO(Analog(8.W))
+ foo <> bar.viewAs[Analog]
+ }
+ val chirrtl = ChiselStage.emitChirrtl(new MyModule)
+ chirrtl should include("attach (foo, bar)")
+ }
+
it should "handle viewing Bundles as their same concrete type" in {
class MyBundle extends Bundle {
val foo = UInt(8.W)
@@ -177,6 +187,28 @@ class DataViewSpec extends ChiselFlatSpec {
chirrtl should include("fooOut.foo <= barIn.foo")
}
+ it should "be easy to make a PartialDataView viewing a Bundle as a Parent Bundle type" in {
+ class Foo(x: Int) extends Bundle {
+ val foo = UInt(x.W)
+ }
+ class Bar(val x: Int) extends Foo(x) {
+ val bar = UInt(x.W)
+ }
+ implicit val view = PartialDataView.supertype[Bar, Foo](b => new Foo(b.x))
+ class MyModule extends Module {
+ val fooIn = IO(Input(new Foo(8)))
+ val barOut = IO(Output(new Bar(8)))
+ barOut.viewAs[Foo] := fooIn
+
+ val barIn = IO(Input(new Bar(8)))
+ val fooOut = IO(Output(new Foo(8)))
+ fooOut := barIn.viewAs[Foo]
+ }
+ val chirrtl = ChiselStage.emitChirrtl(new MyModule)
+ chirrtl should include("barOut.foo <= fooIn.foo")
+ chirrtl should include("fooOut.foo <= barIn.foo")
+ }
+
it should "error if viewing a parent Bundle as a child Bundle type" in {
assertTypeError("""
class Foo extends Bundle {