verilog - 如何在 Chisel 生成的模块中注入 Verilog 代码?
问题描述
为了测试我的 Chisel 设计,我将Icarus与cocotb一起使用。但是,如果没有像这样在 verilog 模块代码中明确询问,Icarus 不会生成 VCD 跟踪:
`ifdef COCOTB_SIM
initial begin
$dumpfile ("my_module_name.vcd");
$dumpvars (0, my_module_name);
#1;
end
`endif
为了在每次生成 chisel 模块时添加它,我编写了一个名为cocotbify.py的小 Python 脚本,它在生成的模块下“注入”此代码。
同样,要添加一些 systemVerilog assert()/assume() 以使用yosys-smtbmc进行正式检查,我必须在生成的每个 verilog 模块下“注入”代码。我还破解了一个名为smtbmcify.py的小 Python 脚本来注入我的断言/假设代码。
我意识到这是一个 hack,但我找不到直接在 Chisel 模块下执行此操作的好方法。我知道有BlackBox,但我不想实例化子模块,函数 setInline 创建第二个verilog文件(我想直接在模块中写入)。
我在 Chisel scala 代码中看到了一个名为ChiselAnnotation的类型,但我不确定这是要使用的东西,我现在不知道如何使用。
解决方案
推荐阅读
- java - 无法在 NetBeans 6.5.1 IDE 中添加新服务器
- python - 如何在 Behave 中设置 Allure Html 报告的目标文件夹
- c# - EF Core 创建多个外键列
- react-native - 主播播客公共 api
- html - css网格动态多列2维布局
- node.js - 如何通过在整个应用程序中使用 winston 来捕获 try catch 中的错误?
- spring-boot - 当 mvnrepository 发布 2.13.0 版本时,spring-boot Starters(2.0.8) 仍然引用 Maven Central/Spring 存储库中的 log4j2 版本 2.10.0 库
- python - 运行 python runserver --nothreading -noreload 时出错
- php - 按查询分组不能正常工作根据我
- javascript - React Material UI 插入和删除行