【问题标题】:Remove Bundle prefixes for nested bundles?删除嵌套包的包前缀?
【发布时间】:2020-03-30 19:22:08
【问题描述】:

我有一堆 Verilog IP,由于各种原因,我们不想(或不能轻易)转换为 Chisel,但我现在想利用 Chisel 的一些可配置性,直到我们可以转换一些设计。

我的目标是能够将我的 IP 实例化为 BlackBoxes,然后使用 Chisels Bundle 连接功能。我已经研究并使用过 BlackBox/ExtModule 类,而这似乎正是我所需要的。我现在遇到的唯一问题是我希望能够创建信号组的子捆绑包。请参阅图像以获取一个简单的示例:

下面是我希望我的 BlackBox 类看起来像的示例:

class BB1 extends BlackBox {
  val io = IO(new Bundle{
    val other_TOP = (new Bundle{
      val in0                                   = Input      (Bool())                                                
      val in1                                   = Input      (Bool())                                                
      val d0                                    = Input      (UInt(4.W))                                             
      val d1                                    = Input      (UInt(4.W))                                             
    })

    val apb = (new Bundle{
      val apb_clk                               = Input      (Bool())
      val apb_paddr                             = Input      (UInt(8.W))                                             
      val apb_penable                           = Input      (Bool())                                                
      val apb_psel                              = Input      (Bool())                                                
      val apb_pwrite                            = Input      (Bool())                                                
      val apb_rddata                            = Output     (UInt(32.W))                                            
      val apb_reset                             = Input      (Bool())                                                
      val apb_wrdata                            = Input      (UInt(32.W))                        
    })

    val other_BOTTOM = (new Bundle{
      val out0                                  = Input      (Bool())                                                
      val dout0                                 = Input      (UInt(18.W))                                            
    })
  })
}

这按预期工作,但是我得到的问题是子包名称以信号名称为前缀。例如apb_clk 在实例化中具有名称 apb_apb_clk。我明白为什么会发生这种情况,但是无论如何要禁用此功能?我尝试了一些 .suggestName,但似乎没有任何效果。

github (https://github.com/freechipsproject/chisel3/issues/612) 上的这个问题似乎与同一问题有关,尽管 OP 要求使用 MultiIOModule。我看到最后一条评论是“不会修复”。我想知道是否已为此功能添加了内容,或者在创建包装器之外是否有任何解决方法。我实际上希望使用 Chisel 连接多个 BlackBox,所以我不想制作包装器来连接它们。

感谢您的帮助

【问题讨论】:

  • 抱歉,如果这是一个愚蠢的建议,但是删除捆绑包字段中的所有 abp_ 怎么样?
  • 这是我确实考虑过的,它适用于我们的一些 IP,但是我们确实有一些 IP 没有遵循命名约定,因此全局方法会更好。也就是说,如果没有其他更容易的方法,这是我会做的解决方法。
  • 另外我想说的是,在上面的例子中,“其他”接口,如果它们不遵循命名约定,我就不能放入子包。然而,这不是表演的终结者。
  • 是的,我同意应该有更好的方法来处理这个问题,但目前我们没有任何实用程序/功能。如果您有想法,请提出问题!

标签: chisel


【解决方案1】:

只是为了回答这个问题。我最终使用 Bundle 名称将编译器“欺骗”成我想要的名称和 Bundle 关系(基本上结果是一个包装器)。虽然它不是一个完全干净的解决方案,但我会说 Chisel/FIRRTL 如何以这样一种方式创建 RTL,即额外的包装器并没有太多额外的工作/层次结构来允许轻松集成 BlackBox 模块。

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多