summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests')
-rw-r--r--src/test/scala/chiselTests/ConnectSpec.scala85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/ConnectSpec.scala b/src/test/scala/chiselTests/ConnectSpec.scala
new file mode 100644
index 00000000..30e23f55
--- /dev/null
+++ b/src/test/scala/chiselTests/ConnectSpec.scala
@@ -0,0 +1,85 @@
+// See LICENSE for license details.
+
+package chiselTests
+
+import chisel3._
+import chisel3.experimental.{FixedPoint, Analog}
+import chisel3.testers.BasicTester
+
+abstract class CrossCheck extends Bundle {
+ val in: Data
+ val out: Data
+}
+
+class CrossConnects(inType: Data, outType: Data) extends Module {
+ val io = IO(new Bundle {
+ val in = Input(inType)
+ val out = Output(outType)
+ })
+ io.out := io.in
+}
+
+class CrossConnectTester(inType: Data, outType: Data) extends BasicTester {
+ val dut = Module(new CrossConnects(inType, outType))
+ stop()
+}
+
+class ConnectSpec extends ChiselPropSpec {
+ property("SInt := SInt should succeed") {
+ assertTesterPasses{ new CrossConnectTester(SInt(16.W), SInt(16.W)) }
+ }
+ property("SInt := UInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(UInt(16.W), SInt(16.W)) }
+ }
+ property("SInt := FixedPoint should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(FixedPoint(16.W, 8.BP), UInt(16.W)) }
+ }
+ property("UInt := UInt should succeed") {
+ assertTesterPasses{ new CrossConnectTester(UInt(16.W), UInt(16.W)) }
+ }
+ property("UInt := SInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(SInt(16.W), UInt(16.W)) }
+ }
+ property("UInt := FixedPoint should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(FixedPoint(16.W, 8.BP), UInt(16.W)) }
+ }
+
+ property("Clock := Clock should succeed") {
+ assertTesterPasses{ new CrossConnectTester(Clock(), Clock()) }
+ }
+ property("Clock := UInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(Clock(), UInt(16.W)) }
+ }
+
+ property("FixedPoint := FixedPoint should succeed") {
+ assertTesterPasses{ new CrossConnectTester(FixedPoint(16.W, 8.BP), FixedPoint(16.W, 8.BP)) }
+ }
+ property("FixedPoint := SInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(SInt(16.W), FixedPoint(16.W, 8.BP)) }
+ }
+ property("FixedPoint := UInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(UInt(16.W), FixedPoint(16.W, 8.BP)) }
+ }
+
+ property("Analog := Analog should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(Analog(16.W), Analog(16.W)) }
+ }
+ property("Analog := FixedPoint should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(Analog(16.W), FixedPoint(16.W, 8.BP)) }
+ }
+ property("FixedPoint := Analog should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(FixedPoint(16.W, 8.BP), Analog(16.W)) }
+ }
+ property("Analog := UInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(Analog(16.W), UInt(16.W)) }
+ }
+ property("Analog := SInt should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(Analog(16.W), SInt(16.W)) }
+ }
+ property("UInt := Analog should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(UInt(16.W), Analog(16.W)) }
+ }
+ property("SInt := Analog should fail") {
+ intercept[ChiselException]{ new CrossConnectTester(SInt(16.W), Analog(16.W)) }
+ }
+}