scala - 在扩展黑盒的类中使用凿子中的 CustomBundle 模板
问题描述
我有一个包含位宽信息和信号方向性的信号列表。我想即时创建这些 IO 并使用扩展 Record 的 CustomBundle。我能够在不扩展 BlackBox 的普通类中做到这一点。但是,当我在扩展黑盒的类中使用 CustomBundle 时,我遇到了错误。可以在扩展黑盒的类中使用 CustomBundles 吗?如果没有,除了脚本之外还有其他解决方法,以便我可以自动构建黑盒类中的信号。
解决方案
我想出了一个办法。为各种信号类型创建了一个扩展 Record 的类,然后使用黑盒内的捆绑包对它们进行分组并建立连接。
更新:我不必在 verilog 文件中重命名我的信号编辑:为记录添加示例
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]
}
推荐阅读
- c# - 在 MSTest v2 中的并行测试之间共享 Entity Framework Core Database Context
- go - 使用两因素身份验证“去获取”私有 github 存储库
- python - 我正在尝试编写一个简单的脚本来自动加入 Microsoft Teams 会议
- django - 在docker compose中的服务之间共享动态文件的正确方法
- php - Lighthouse 找不到我的 Union 自定义类型
- excel - 带有路径的excel vba设置工作簿,参考工作表 - 运行时错误9er
- maven - 云函数抛出错误找不到私有 git 存储库中的工件
- ios - Unbale 在 react native ios 中加载 testflight
- vue.js - VueJS 库组件在 IntelliJ IDEA 中没有自动完成功能
- python - 具有原始文件名的 Python 下载文件