利用条件编译解决vivado下verilog代码中ila与仿真的共存问题
vivado自带的仿真工具已经接近Modelsim的功能,且与原生开发环境的紧密结合,对仿真非常方便。
我的习惯是在实现工程中另外建一个仿真工程,保存仿真的testbench文件等,而实现工程中保存实际功能的源码文件。
这样仿真时会存在一个问题就是如果在代码中例化了ila,仿真时会报错:
ERROR: [VRFC 10-2063] Module <ila_0> not found while processing module instance <ila_0_inst>
为了实现和仿真工程可以不改动而共存,可以使用条件编译的方式来解决:
实现工程中的ila例化使用条件编译来包裹:
`ifndef SIM
ila_0 ila_0_inst (.clk(clk), // input wire clk.probe0(signal0), //[8:0].probe1(signal1) //[31:0]
);
`endif
同时,在仿真工程中,新建一个verilog头文件
include.vh,内容如下:
`define SIM
并且把该文件设置为全局包含文件:
设置后的显示如下:
即可用同一套代码兼顾实现和仿真。
其实,ila也是可以仿真的,需要在仿真工程中添加ila的xci文件。则以上方法也可以不用(白忙活了,就当学习使用条件编译吧……)。