首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在扩展blackbox的类中使用CustomBundle模板

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

Stack Overflow用户
提问于 2021-06-02 01:47:57
回答 1查看 89关注 0票数 2

我有一个信号列表,其中包含信号的位宽信息和方向性。我想在飞行中创建这些IOs,并使用扩展记录的CustomBundle。我可以在一个不扩展BlackBox的普通类中做到这一点。然而,当我在扩展黑盒的类中使用CustomBundle时,我遇到了错误。CustomBundles可以在扩展blackbox的类中使用吗?如果没有,除了脚本之外,是否还有其他解决方法,以便我可以在blackbox类中自动构造信号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 09:11:28

我想出了一个这样做的方法。创建了一个类,用于扩展各种信号类型的记录,然后使用黑盒内的捆绑包对它们进行分组,并进行连接。

更新:我不必在verilog文件编辑中重命名我的信号:为记录添加了示例

代码语言:javascript
复制
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]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67793731

复制
相关文章

相似问题

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