在扩展blackbox的类中使用CustomBundle模板

我有一个带有位宽度信息和信号方向性的信号列表。我想动态创建这些IOs,并利用扩展Record的CustomBundle。我可以在一个不扩展BlackBox的普通类中这样做。但是,当我在扩展黑盒的类中使用CustomBundle时,我会遇到错误。custombundle可以在扩展blackbox的类中使用吗?如果没有,除了脚本之外还有其他的解决方法,这样我就可以在blackbox类中自动构建信号。

✅ 最佳回答:

我想出了一个办法。创建了一个类,该类扩展了各种信号类型的记录,然后使用blackbox中的bundle将它们分组,并建立了连接。

更新:我不必在verilog文件EDIT中重命名我的信号:为Record添加了示例

import chisel3._
import chisel3.stage.ChiselStage
import chisel3.util.{HasBlackBoxInLine}
import scala.collection.immutable.ListMap

class MyBlackBox extends BlackBox with HasBlackBoxInline{
    val io = IO(new MyBundle)
    setInline("My_Verilog.v",
             s"""
             |module MyBlackBox(
             |  input a,
             |  input b,
             | output c
             |);
             |always @* begin
             | c < = a & b
             |end
             |endmodule
             """.stripMargin)
}

class MyBundle extends Record{
    val signalName = Seq(a,b)
    val elements_i = ListMap(Seq.tabulate(2){i => signalName(i) -> Input(UInt(1.W))}:_*)
    val elements_o = ListMap(Seq.tabulate(1){i => c -> Output(UInt(1.W))}:_*)
    val elements = elements_i ++ elements_o
    override def cloneType: this.type = (new MyBundle).asInstanceOf[this.type]
}

本站已为你智能检索到如下内容,以供参考:

🐻 相关问答 3

在扩展模板中扩展模板 扩展模板参数包以声明类成员 模板类中包含模板类的模板参数推导

🐬 推荐阅读 6

vue chrome扩展模板 Scala中的原则函数编程 scala中使用FP技术实现java宠物商店 Scala中的纯函数算法和数据结构 Django 中模板变量使用 在不同的Spring Cloud实现中使用的公共类

本文支持英文版本,如需查看请 点击这里

(查看英文版本获取更加准确信息)