@@ -142,47 +142,14 @@ abstract class RawModule(implicit moduleCompileOptions: CompileOptions)
142142 }
143143}
144144
145- trait RequireAsyncReset extends MultiIOModule {
145+ trait RequireAsyncReset extends Module {
146146 override private [chisel3] def mkReset : AsyncReset = AsyncReset ()
147147}
148148
149- trait RequireSyncReset extends MultiIOModule {
149+ trait RequireSyncReset extends Module {
150150 override private [chisel3] def mkReset : Bool = Bool ()
151151}
152152
153- /** Abstract base class for Modules, which behave much like Verilog modules.
154- * These may contain both logic and state which are written in the Module
155- * body (constructor).
156- * This abstract base class includes an implicit clock and reset.
157- *
158- * @note Module instantiations must be wrapped in a Module() call.
159- */
160- abstract class MultiIOModule (implicit moduleCompileOptions : CompileOptions )
161- extends RawModule {
162- // Implicit clock and reset pins
163- final val clock : Clock = IO (Input (Clock ())).autoSeed(" clock" )
164- final val reset : Reset = IO (Input (mkReset)).autoSeed(" reset" )
165-
166- private [chisel3] def mkReset : Reset = {
167- // Top module and compatibility mode use Bool for reset
168- val inferReset = _parent.isDefined && moduleCompileOptions.inferModuleReset
169- if (inferReset) Reset () else Bool ()
170- }
171-
172- // Setup ClockAndReset
173- Builder .currentClock = Some (clock)
174- Builder .currentReset = Some (reset)
175- Builder .clearPrefix()
176-
177- private [chisel3] override def initializeInParent (parentCompileOptions : CompileOptions ): Unit = {
178- implicit val sourceInfo = UnlocatableSourceInfo
179-
180- super .initializeInParent(parentCompileOptions)
181- clock := Builder .forcedClock
182- reset := Builder .forcedReset
183- }
184- }
185-
186153package internal {
187154
188155 /** Legacy Module class that restricts IOs to just io, clock, and reset, and provides a constructor
@@ -192,12 +159,7 @@ package internal {
192159 * IO), the clock and reset constructors will be phased out. Recommendation is to wrap the module
193160 * in a withClock/withReset/withClockAndReset block, or directly hook up clock or reset IO pins.
194161 */
195- abstract class LegacyModule (implicit moduleCompileOptions : CompileOptions )
196- extends MultiIOModule {
197- // These are to be phased out
198- protected var override_clock : Option [Clock ] = None
199- protected var override_reset : Option [Bool ] = None
200-
162+ abstract class LegacyModule (implicit moduleCompileOptions : CompileOptions ) extends Module {
201163 // IO for this Module. At the Scala level (pre-FIRRTL transformations),
202164 // connections in and out of a Module may only go through `io` elements.
203165 @ deprecated(" Removed for causing issues in Scala 2.12+. You remain free to define io Bundles " +
@@ -233,18 +195,5 @@ package internal {
233195
234196 super .generateComponent()
235197 }
236-
237- private [chisel3] override def initializeInParent (parentCompileOptions : CompileOptions ): Unit = {
238- // Don't generate source info referencing parents inside a module, since this interferes with
239- // module de-duplication in FIRRTL emission.
240- implicit val sourceInfo = UnlocatableSourceInfo
241-
242- if (! parentCompileOptions.explicitInvalidate) {
243- pushCommand(DefInvalid (sourceInfo, _io.ref))
244- }
245-
246- clock := override_clock.getOrElse(Builder .forcedClock)
247- reset := override_reset.getOrElse(Builder .forcedReset)
248- }
249198 }
250199}
0 commit comments