利用条件编译解决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文件。则以上方法也可以不用(白忙活了,就当学习使用条件编译吧……)。

### VivadoILA 的在线仿真教程和配置方法 #### 配置环境准备 为了在 Vivado 中使用 ILA (集成逻辑分析仪) 进行在线调试,需先完成项目设置以及硬件连接。确保已安装最新版本的 Vivado 并创建好 FPGA 工程[^1]。 #### 添加ILA IP核 通过IP Catalog 或者 Block Design 来添加 Xilinx 提供的 ILA IP 核。选择合适的位宽和其他参数来满足设计需求。这一步骤允许用户定义要监控哪些信号及其触发条件[^2]。 #### 实例化ILA模块 将生成好的 ILA 模块实例化到顶层设计文件中,并将其端口待测节点相连。对于 Verilog 设计而言: ```verilog // 假设已经声明了ila_0作为ILA核心的名字 wire [7:0] probe0; // 被监测的数据总线宽度为8bit assign probe0 = data_bus; ila_0 your_instance_name ( .clk(clk), // input wire clk .probe0(probe0) // input wire [7 : 0] probe0 ); ``` 此过程同样适用于 VHDL 描述的设计实体。 #### 设置触发条件 利用 Vivado HLS GUI 对 ILA 探针进行配置,设定触发模式(如边沿敏感)、深度以及其他属性。这些选项有助于精确捕捉感兴趣的事件序列而不必依赖复杂的测试平台脚本。 #### 下载比特流并运行 编译工程后下载产生的比特流文件至目标开发板上执行实际电路操作。此时可以通过 Hardware Manager 动态调整探针状态或捕获当前工作状况下的内部节点活动情况。 #### 数据导出分析 当需要进一步处理采集到的信息时,可以从 ILA 导出原始样本保存成 CSV 文件格式以便后续导入 MATLAB 等第三方软件做更深入的时间轴或者频谱特性研究[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值