首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其中的端口名称问题在BlackBox中定义

其中的端口名称问题在BlackBox中定义
EN

Stack Overflow用户
提问于 2017-07-05 18:18:01
回答 1查看 96关注 0票数 1

假设有一个B模块,其中A是一个实例。

代码语言:javascript
复制
class B extends Module {
  …
  val u_A = Module(new A)
    // the way to hook u_A’s port is the issue
} 

A模块说明:

代码语言:javascript
复制
class A extends Module {
  val io = IO(new Bundle{
    val a = Output(Bool())
  })
  io.a := true.B
}

A BlackBox的声明:

代码语言:javascript
复制
class A extends BlackBox {
  val io = IO(new Bundle{
    val io_a = Output(Bool()) // HAVE to define port name with io_* prefix otherwise ...
  })
}

您必须在BlackBox中定义前缀为io_的端口名称,否则在B RTL中生成的端口列表将与A模块不匹配。对于Module实例化,挂接u_A的端口的方法是

代码语言:javascript
复制
u_A.io.a

对于BlackBox实例化,挂接u_A的端口的方法是

代码语言:javascript
复制
u_A.io.io_a

你能告诉我有没有更方便的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 23:57:45

BlackBox和模块io发射之间的不匹配是为了更好地与Verilog IP集成的传统应用程序接口,在这种情况下,雕刻机设计师对Verilog几乎没有控制。我们正在考虑一种更明确和更结构化的方式来处理这种丢弃前缀的“不可见”包,因为在其他情况下它们是有用的。

不过,为了回答您的问题,有一种更方便的方法。我们正在试验所谓的“多IO模块”,您可以在一个模块中多次使用IO(...)来创建端口。在这里,您实际上并不需要该特性,但它为我们提供了chisel3.experimental.ExtModule-- BlackBox的替代方案。ExtModule不会静默地删除前缀,因此如果您切换到扩展前缀而不是BlackBox,您将获得所需的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44923400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档