1
0

diplomacy: Allow LazyModuleImps to be based on RawModules or MultiIOModules

And add a MonitorBase class to be connect's return type.
This commit is contained in:
Henry Cook
2017-05-02 01:36:38 -07:00
parent 4a24e9a6c6
commit 2e8a40a23f
6 changed files with 44 additions and 25 deletions

View File

@ -22,9 +22,9 @@ abstract class BareTopBundle[+L <: BareTop](_outer: L) extends GenericParameteri
implicit val p = outer.p
}
abstract class BareTopModule[+L <: BareTop, +B <: BareTopBundle[L]](_outer: L, _io: () => B) extends LazyModuleImp(_outer) {
abstract class BareTopModule[+L <: BareTop, +B <: BareTopBundle[L]](_outer: L, _io: () => B) extends LazyMultiIOModuleImp(_outer) {
val outer = _outer
val io = _io ()
val io = IO(_io())
}
/** HasTopLevelNetworks provides buses that will serve as attachment points,
@ -59,13 +59,13 @@ trait HasTopLevelNetworksModule extends HasPeripheryParameters {
}
/** Base Top class with no peripheral devices or ports added */
class BaseTop(implicit p: Parameters) extends BareTop
abstract class BaseTop(implicit p: Parameters) extends BareTop
with HasTopLevelNetworks {
override lazy val module = new BaseTopModule(this, () => new BaseTopBundle(this))
override val module: BaseTopModule[BaseTop, BaseTopBundle[BaseTop]]
}
class BaseTopBundle[+L <: BaseTop](_outer: L) extends BareTopBundle(_outer)
abstract class BaseTopBundle[+L <: BaseTop](_outer: L) extends BareTopBundle(_outer)
with HasTopLevelNetworksBundle
class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle[L]](_outer: L, _io: () => B) extends BareTopModule(_outer, _io)
abstract class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle[L]](_outer: L, _io: () => B) extends BareTopModule(_outer, _io)
with HasTopLevelNetworksModule