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

时间:2019-12-16 20:04:08

标签: verilog hdl chisel yosys cocotb

要测试我的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的类型,但是我不确定这是要使用的东西,我现在不知道如何使用。

0 个答案:

没有答案