From fdb4cbe6b91798fbb84436c5be51c4fb2aa0d1fd Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 24 Mar 2020 16:28:30 -0700 Subject: [PATCH] Propagate user compile options for Chisel.Module (#1387) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> (cherry picked from commit 6263fcc56b630b7181eb30680cadcdbb2bdf91dc) --- src/main/scala/chisel3/compatibility.scala | 2 +- .../scala/chiselTests/CompatibilitySpec.scala | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/scala/chisel3/compatibility.scala b/src/main/scala/chisel3/compatibility.scala index 02dfa329b98..9584fad68e7 100644 --- a/src/main/scala/chisel3/compatibility.scala +++ b/src/main/scala/chisel3/compatibility.scala @@ -300,7 +300,7 @@ package object Chisel { // scalastyle:ignore package.object.name number.of.t import chisel3.CompileOptions abstract class CompatibilityModule(implicit moduleCompileOptions: CompileOptions) - extends chisel3.internal.LegacyModule { + extends chisel3.internal.LegacyModule()(moduleCompileOptions) { // This class auto-wraps the Module IO with IO(...), allowing legacy code (where IO(...) wasn't // required) to build. // Also provides the clock / reset constructors, which were used before withClock happened. diff --git a/src/test/scala/chiselTests/CompatibilitySpec.scala b/src/test/scala/chiselTests/CompatibilitySpec.scala index d2b39c49c62..b055890bcd8 100644 --- a/src/test/scala/chiselTests/CompatibilitySpec.scala +++ b/src/test/scala/chiselTests/CompatibilitySpec.scala @@ -7,6 +7,16 @@ import chisel3.testers.BasicTester import org.scalacheck.Gen import org.scalatest.prop.GeneratorDrivenPropertyChecks +// Need separate import to override compile options from Chisel._ +object CompatibilityCustomCompileOptions { + import Chisel.{defaultCompileOptions => _, _} + implicit val customCompileOptions = + chisel3.ExplicitCompileOptions.NotStrict.copy(inferModuleReset = true) + class Foo extends Module { + val io = new Bundle {} + } +} + class CompatibiltySpec extends ChiselFlatSpec with GeneratorDrivenPropertyChecks { import Chisel._ @@ -581,4 +591,11 @@ class CompatibiltySpec extends ChiselFlatSpec with GeneratorDrivenPropertyChecks elaborate(new Foo) } + it should "properly propagate custom compileOptions in Chisel.Module" in { + import CompatibilityCustomCompileOptions._ + var result: Foo = null + elaborate({result = new Foo; result}) + result.compileOptions should be theSameInstanceAs (customCompileOptions) + } + }