使用Chisel 3.5中的bundle初始化IO



我是Chisel的新手,目前正试图将Chisel项目从Chisel 3.4重写到3.5。我所面临的问题是,该项目使用一个自定义类初始化IO((,该类扩展了如下捆绑包:

带IO的组件:

val io = IO(new GenericInterface(n) {
val input = Input(Bool())
})

接口:

class GenericInterface(n: Int) extends Bundle {
val out = Output(UInt(n.W))
}

我的问题是无法访问组件中的io.input。我目前的解决方法是创建两个独立的io,但这充其量似乎是一个次优的解决方案。有没有比下面这个更令人愉快的变通方法?

val io = IO(new GenericInterface(n))
val io2 = IO(new Bundle {
val input = Input(Bool())
})

您可以尝试将第二个bundle设置为非匿名类吗?Scala的较新版本对";结构类型";这本质上意味着通常最好命名所有类。

试着看看以下是否适合你:

class GenericInterface(n: Int) extends Bundle {
val out = Output(UInt(n.W))
}
class MyModuleIO(n: Int) extends GenericInterface(n) {
val input = Input(Bool())
}
class MyModule extends Module {
val io = IO(new MyModuleIO(...))
}

最新更新