У меня есть периферийное устройство, которое имеет общую схему следующим образом. Блок, о котором я упоминал, не спроектирован мной, поэтому я хочу унаследовать модуль и сделать несколько внутренних сигналов в качестве портов ввода-вывода периферийного устройства.
Провод, который необходимо преобразовать, поскольку порты находятся в модуле. создается с использованием LazyModuleImp
и заменяет комментарий Some Wire needs to be converted as a port pin
в следующем блоке.
package SomeBlock.SomePackage
import Chisel._
import freechips.rocketchip.diplomacy._
import freechips.rocketchip.config.Field
import freechips.rocketchip.subsystem.BaseSubsystem
case class SomeParams(
//Some Parameters
}
class SomeBundle extends Bundle {
// Some Port Pins
}
class SomeModule(params: SomeParams) extends LazyModule {
// Some Logic
lazy val module = new LazyModuleImp(this) {
val io = IO(new SomeBundle {
val clock = Clock(OUTPUT)
val reset = Bool(INPUT)
})
// Some logic
// Some Wire needs to be converted as a port pin
}
}
case object PeripherySomeModuleKey extends Field[SomeModuleParams]
trait HasPeripherySomeModule { this: BaseSubsystem =>
val someParams= p(PeripherySomeModuleKey)
val some = LazyModule(new SomeModule(someParams))
// Logic to connect to TileLink Node
}
trait HasPeripherySomeBundle {
val some: SomeBundle
}
trait HasPeripherySomeModuleImp extends LazyModuleImp with HasPeripherySomeBundle {
val outer: HasPeripherySomeModule
val some = IO(new SomeBundle)
some <> outer.some.module.io
}
Как можно добавить еще несколько выводов портов в дизайн, не изменяя фактическое дизайн