Добавление портов в модуль / периферию с использованием Inheretance - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть периферийное устройство, которое имеет общую схему следующим образом. Блок, о котором я упоминал, не спроектирован мной, поэтому я хочу унаследовать модуль и сделать несколько внутренних сигналов в качестве портов ввода-вывода периферийного устройства.

Провод, который необходимо преобразовать, поскольку порты находятся в модуле. создается с использованием 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
}

Как можно добавить еще несколько выводов портов в дизайн, не изменяя фактическое дизайн

...