From 7c3c18de2ffd56af51b99030c7ae7d3a321aed5f Mon Sep 17 00:00:00 2001 From: ducky Date: Fri, 3 Nov 2017 18:34:46 -0700 Subject: Autoclonetype initial prototype --- src/main/scala/chisel3/compatibility.scala | 12 ++++++------ src/main/scala/chisel3/testers/BasicTester.scala | 9 +++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/chisel3/compatibility.scala b/src/main/scala/chisel3/compatibility.scala index f299a287..3c12b483 100644 --- a/src/main/scala/chisel3/compatibility.scala +++ b/src/main/scala/chisel3/compatibility.scala @@ -250,9 +250,9 @@ package object Chisel { // scalastyle:ignore package.object.name abstract class BlackBox(params: Map[String, Param] = Map.empty[String, Param]) extends chisel3.core.BlackBox(params) { // This class auto-wraps the BlackBox with IO(...), allowing legacy code (where IO(...) wasn't // required) to build. - override def _autoWrapPorts(): Unit = { // scalastyle:ignore method.name - if (!_ioPortBound()) { - IO(io) + override def _compatAutoWrapPorts(): Unit = { // scalastyle:ignore method.name + if (!_compatIoPortBound()) { + _bindIoInPlace(io) } } } @@ -278,9 +278,9 @@ package object Chisel { // scalastyle:ignore package.object.name def this(_clock: Clock, _reset: Bool)(implicit moduleCompileOptions: CompileOptions) = this(Option(_clock), Option(_reset))(moduleCompileOptions) - override def _autoWrapPorts(): Unit = { // scalastyle:ignore method.name - if (!_ioPortBound() && io != null) { - IO(io) + override def _compatAutoWrapPorts(): Unit = { // scalastyle:ignore method.name + if (!_compatIoPortBound() && io != null) { + _bindIoInPlace(io) } } } diff --git a/src/main/scala/chisel3/testers/BasicTester.scala b/src/main/scala/chisel3/testers/BasicTester.scala index 6d1a4913..4cd03863 100644 --- a/src/main/scala/chisel3/testers/BasicTester.scala +++ b/src/main/scala/chisel3/testers/BasicTester.scala @@ -11,9 +11,14 @@ import internal.firrtl._ import internal.sourceinfo.SourceInfo //import chisel3.core.ExplicitCompileOptions.NotStrict -class BasicTester extends Module() { +class TesterIO extends Bundle { // The testbench has no IOs, rather it should communicate using printf, assert, and stop. - val io = IO(new Bundle()) + // This is here (instead of just `new Bundle()`, since that has an implicit compileOptions + // constructor argument which is misapplied by clonetype +} + +class BasicTester extends Module() { + val io = IO(new TesterIO) def popCount(n: Long): Int = n.toBinaryString.count(_=='1') -- cgit v1.2.3 From 48e30fab101c5552c73fc5a76cad3ccc6b38946f Mon Sep 17 00:00:00 2001 From: ducky64 Date: Wed, 22 Nov 2017 22:26:09 -0800 Subject: Support for inner classes, implicit parameter lists, supertypess --- src/main/scala/chisel3/compatibility.scala | 12 ++++++------ src/main/scala/chisel3/testers/BasicTester.scala | 9 ++------- 2 files changed, 8 insertions(+), 13 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/chisel3/compatibility.scala b/src/main/scala/chisel3/compatibility.scala index 3c12b483..f299a287 100644 --- a/src/main/scala/chisel3/compatibility.scala +++ b/src/main/scala/chisel3/compatibility.scala @@ -250,9 +250,9 @@ package object Chisel { // scalastyle:ignore package.object.name abstract class BlackBox(params: Map[String, Param] = Map.empty[String, Param]) extends chisel3.core.BlackBox(params) { // This class auto-wraps the BlackBox with IO(...), allowing legacy code (where IO(...) wasn't // required) to build. - override def _compatAutoWrapPorts(): Unit = { // scalastyle:ignore method.name - if (!_compatIoPortBound()) { - _bindIoInPlace(io) + override def _autoWrapPorts(): Unit = { // scalastyle:ignore method.name + if (!_ioPortBound()) { + IO(io) } } } @@ -278,9 +278,9 @@ package object Chisel { // scalastyle:ignore package.object.name def this(_clock: Clock, _reset: Bool)(implicit moduleCompileOptions: CompileOptions) = this(Option(_clock), Option(_reset))(moduleCompileOptions) - override def _compatAutoWrapPorts(): Unit = { // scalastyle:ignore method.name - if (!_compatIoPortBound() && io != null) { - _bindIoInPlace(io) + override def _autoWrapPorts(): Unit = { // scalastyle:ignore method.name + if (!_ioPortBound() && io != null) { + IO(io) } } } diff --git a/src/main/scala/chisel3/testers/BasicTester.scala b/src/main/scala/chisel3/testers/BasicTester.scala index 4cd03863..7bb441ba 100644 --- a/src/main/scala/chisel3/testers/BasicTester.scala +++ b/src/main/scala/chisel3/testers/BasicTester.scala @@ -11,14 +11,9 @@ import internal.firrtl._ import internal.sourceinfo.SourceInfo //import chisel3.core.ExplicitCompileOptions.NotStrict -class TesterIO extends Bundle { - // The testbench has no IOs, rather it should communicate using printf, assert, and stop. - // This is here (instead of just `new Bundle()`, since that has an implicit compileOptions - // constructor argument which is misapplied by clonetype -} - class BasicTester extends Module() { - val io = IO(new TesterIO) + // The testbench has no IOs, rather it should communicate using printf, assert, and stop. + val io = IO(new Bundle() {}) def popCount(n: Long): Int = n.toBinaryString.count(_=='1') -- cgit v1.2.3