summaryrefslogtreecommitdiff
path: root/core/src/main/scala/chisel3/RawModule.scala
diff options
context:
space:
mode:
authorJack Koenig2021-01-20 13:46:48 -0800
committerJack Koenig2021-01-21 15:36:55 -0800
commit5ece5aa8ac2716d66a6ed91e38a978049d8bf250 (patch)
treef83353530e836491bb9b770712f1b8ff3dac3942 /core/src/main/scala/chisel3/RawModule.scala
parent616256c35cb7de8fcd97df56af1986b747abe54d (diff)
Rename MultiIOModule to Module
Diffstat (limited to 'core/src/main/scala/chisel3/RawModule.scala')
-rw-r--r--core/src/main/scala/chisel3/RawModule.scala57
1 files changed, 3 insertions, 54 deletions
diff --git a/core/src/main/scala/chisel3/RawModule.scala b/core/src/main/scala/chisel3/RawModule.scala
index 9f0a24d6..bb84c444 100644
--- a/core/src/main/scala/chisel3/RawModule.scala
+++ b/core/src/main/scala/chisel3/RawModule.scala
@@ -142,47 +142,14 @@ abstract class RawModule(implicit moduleCompileOptions: CompileOptions)
}
}
-trait RequireAsyncReset extends MultiIOModule {
+trait RequireAsyncReset extends Module {
override private[chisel3] def mkReset: AsyncReset = AsyncReset()
}
-trait RequireSyncReset extends MultiIOModule {
+trait RequireSyncReset extends Module {
override private[chisel3] def mkReset: Bool = Bool()
}
-/** Abstract base class for Modules, which behave much like Verilog modules.
- * These may contain both logic and state which are written in the Module
- * body (constructor).
- * This abstract base class includes an implicit clock and reset.
- *
- * @note Module instantiations must be wrapped in a Module() call.
- */
-abstract class MultiIOModule(implicit moduleCompileOptions: CompileOptions)
- extends RawModule {
- // Implicit clock and reset pins
- final val clock: Clock = IO(Input(Clock())).autoSeed("clock")
- final val reset: Reset = IO(Input(mkReset)).autoSeed("reset")
-
- private[chisel3] def mkReset: Reset = {
- // Top module and compatibility mode use Bool for reset
- val inferReset = _parent.isDefined && moduleCompileOptions.inferModuleReset
- if (inferReset) Reset() else Bool()
- }
-
- // Setup ClockAndReset
- Builder.currentClock = Some(clock)
- Builder.currentReset = Some(reset)
- Builder.clearPrefix()
-
- private[chisel3] override def initializeInParent(parentCompileOptions: CompileOptions): Unit = {
- implicit val sourceInfo = UnlocatableSourceInfo
-
- super.initializeInParent(parentCompileOptions)
- clock := Builder.forcedClock
- reset := Builder.forcedReset
- }
-}
-
package internal {
/** Legacy Module class that restricts IOs to just io, clock, and reset, and provides a constructor
@@ -192,12 +159,7 @@ package internal {
* IO), the clock and reset constructors will be phased out. Recommendation is to wrap the module
* in a withClock/withReset/withClockAndReset block, or directly hook up clock or reset IO pins.
*/
- abstract class LegacyModule(implicit moduleCompileOptions: CompileOptions)
- extends MultiIOModule {
- // These are to be phased out
- protected var override_clock: Option[Clock] = None
- protected var override_reset: Option[Bool] = None
-
+ abstract class LegacyModule(implicit moduleCompileOptions: CompileOptions) extends Module {
// IO for this Module. At the Scala level (pre-FIRRTL transformations),
// connections in and out of a Module may only go through `io` elements.
@deprecated("Removed for causing issues in Scala 2.12+. You remain free to define io Bundles " +
@@ -233,18 +195,5 @@ package internal {
super.generateComponent()
}
-
- private[chisel3] override def initializeInParent(parentCompileOptions: CompileOptions): Unit = {
- // Don't generate source info referencing parents inside a module, since this interferes with
- // module de-duplication in FIRRTL emission.
- implicit val sourceInfo = UnlocatableSourceInfo
-
- if (!parentCompileOptions.explicitInvalidate) {
- pushCommand(DefInvalid(sourceInfo, _io.ref))
- }
-
- clock := override_clock.getOrElse(Builder.forcedClock)
- reset := override_reset.getOrElse(Builder.forcedReset)
- }
}
}