删除嵌套捆绑商品的捆绑商品前缀?

时间:2019-12-05 19:46:13

标签: chisel

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

我的目标是能够将IP实例化为BlackBoxes,然后使用Chisels Bundle连接功能。我已经研究和玩过BlackBox / ExtModule类,而这似乎正是我所需要的。我现在遇到的唯一问题是,我希望能够创建信号组的子捆绑。参见图片中的简单示例: enter image description here

这是我希望我的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,但似乎没有任何效果。

尽管OP要求使用MultiIOModule,但github(https://github.com/freechipsproject/chisel3/issues/612)上的该问题似乎与同一问题有关。我看到了最后一条评论是“不会解决”的地方。我想知道是否为此功能做了补充,或者在创建包装器之外是否有任何解决方法。我实际上正在寻找使用Chisel来连接多个BlackBox的方法,所以我宁愿不要仅仅为了将它们连接起来而制作包装器。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

只需回答这个问题。我最终使用Bundle名称将编译器“欺骗”到我想要的名称和Bundle关系中(基本上证明是包装器)。虽然这不是一个完全干净的解决方案,但我要说的是Chisel / FIRRTL如何以这样一种方式创建RTL,即不需要额外的包装程序就可以轻松集成BlackBox模块。