From 9ad6c747ddcedb831dbfbcd970a46966f986b800 Mon Sep 17 00:00:00 2001 From: Chick Markley Date: Thu, 4 May 2017 14:52:57 -0700 Subject: Connecting basic types wrong should error in chisel (#497) --- src/test/scala/chiselTests/ConnectSpec.scala | 85 ++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/test/scala/chiselTests/ConnectSpec.scala (limited to 'src') 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)) } + } +} -- cgit v1.2.3