summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests
diff options
context:
space:
mode:
authormergify[bot]2022-07-08 23:44:45 +0000
committerGitHub2022-07-08 23:44:45 +0000
commit94aeeb1a5c2fe38777a9004ba36f8b353e96b292 (patch)
tree970e8c024c50e5a6ac36f9e62ee3dc19fdc2b5e2 /src/test/scala/chiselTests
parent4f10bdd703d7559cddae50541cf7c8e0a1c1d4c0 (diff)
CompileOptions: add and use emitStrictConnects (#2622) (#2623)
(cherry picked from commit 11e8cc60d6268301cff352b8a1d7c4d672b5be11) Co-authored-by: Megan Wachs <megan@sifive.com>
Diffstat (limited to 'src/test/scala/chiselTests')
-rw-r--r--src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala b/src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala
index 70dcda48..1e199297 100644
--- a/src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala
+++ b/src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala
@@ -351,4 +351,43 @@ class CompatibilityInteroperabilitySpec extends ChiselFlatSpec {
compile(new Top(true))
compile(new Top(false))
}
+
+ "A unidirectional but flipped Bundle with something close to NotStrict compileOptions, but not exactly" should "bulk connect in import chisel3._ code correctly" in {
+ object Compat {
+ import Chisel.{defaultCompileOptions => _, _}
+ // arbitrary thing to make this *not* exactly NotStrict
+ implicit val defaultCompileOptions = new chisel3.ExplicitCompileOptions.CompileOptionsClass(
+ connectFieldsMustMatch = false,
+ declaredTypeMustBeUnbound = false,
+ dontTryConnectionsSwapped = false,
+ dontAssumeDirectionality = false,
+ checkSynthesizable = false,
+ explicitInvalidate = false,
+ inferModuleReset = true // different from NotStrict, to ensure case class equivalence to NotStrict is false
+ ) {
+ override def emitStrictConnects = false
+ }
+
+ class MyBundle(extraFlip: Boolean) extends Bundle {
+ private def maybeFlip[T <: Data](t: T): T = if (extraFlip) t.flip else t
+ val foo = maybeFlip(new Bundle {
+ val bar = UInt(INPUT, width = 8)
+ })
+ }
+ }
+ import chisel3._
+ import Compat.{defaultCompileOptions => _, _}
+ class Top(extraFlip: Boolean) extends RawModule {
+ val port = IO(new MyBundle(extraFlip))
+ val wire = Wire(new MyBundle(extraFlip))
+ port <> DontCare
+ wire <> DontCare
+ port <> wire
+ wire <> port
+ port.foo <> wire.foo
+ wire.foo <> port.foo
+ }
+ compile(new Top(true))
+ compile(new Top(false))
+ }
}