如何在 Chisel 生成的模块中注入 Verilog 代码?

问题描述 投票:0回答:0

为了测试我的 Chisel 设计,我使用了 Icaruscocotb。但是如果在 verilog 模块代码中没有像这样明确要求 Icarus 不会生成 VCD 跟踪:

`ifdef COCOTB_SIM
initial begin
  $dumpfile ("my_module_name.vcd");
  $dumpvars (0, my_module_name);
  #1;
end
`endif

为了在每次生成凿子模块时添加这个,我写了一个名为 cocotbify.py 的小 python 脚本,它在生成的模块下“注入”这段代码。

同样,要添加一些 systemVerilog assert()/assume() 以使用 yosys-smtbmc 进行正式检查,我必须在生成的每个 verilog 模块下“注入”代码。我还破解了一个名为 smtbmcify.py 的小 python 脚本来注入我的断言/假设代码。

我意识到这是一个 hack,但我找不到直接在 Chisel 模块下执行此操作的好方法。我知道有BlackBox,但我不想实例化子模块,函数setInline创建第二个verilog文件(我想直接写在模块中)。

我在 Chisel scala 代码中看到一个名为 ChiselAnnotation 的类型,但我不确定这是要使用的东西,我现在不知道如何使用。

hdl chisel yosys cocotb
© www.soinside.com 2019 - 2024. All rights reserved.