Xilinx Vivado环境下载bit后自动触发ILA采集
文章目录
- 前言
- 操作方法
- 注意事项
- 参考资料
前言
为了观察一些信号变化的瞬间,我们通常将它们加入到ILA中,并设置触发条件,比如上升沿下降沿,或指定的某个值。大多数情况下,我们是下载完bit文件,并在FPGA运行过程中,手动点击触发按钮,然后等待触发。但是有时我们要观察的信号通常在复位完成之后极短的时间就会被触发,这个时间通常是若干个clk之后,或us级。
那么如何通过先设置触发条件,然后下载完成bit文件之后,自动实现触发呢?本文介绍基于XC7A100T硬件平台和Vivado 2018.3开发环境的ILA自动触发实现。
操作方法
首先我们以下面这个顶层设计为例:
/***************************************************************
* Copyright(C), https://blog.csdn.net/whik1194
* ModuleName : top_hdl.v
* Date : 2025年1月1日
* Time : 16:41:32
* Author : whik1194
* Function : function
* Version : v1.0
* Version | Modify
* ----------------------------------
* v1.0 .....
***************************************************************/
module top_hdl(
//Inputs
input clk_100m,
input clk_32k,
input rst_n
//Inouts
);
//1.localparam
//2.parameter
//3.reg
reg [31:0] cnt;
//4.wire
wire trig = (cnt == 1000);
//5.assign
//6.always
always @ (posedge clk_100m) begin
if(!rst_n) begin
cnt <= 'd0;
end
else begin
cnt <= cnt + 'd1;
end
end
//7.instance
ila_0 ila_ut0(
.clk(clk_100m), // input wire clk
.probe0({
cnt,
trig
}) // input wire [39:0] probe0
);
endmodule //top_hdl end
trig信号只会在复位完成之后,计时100个clk拉高1个时钟周期,我们将ILA的触发条件设置为trig信号的上升沿。这种触发条件,正常来说,我们无法通过手动的方式来进行触发,因为当bit文件下载之后,我们再手动设置触发条件,并启动触发,这个时间已经远远超过了100个clk,所以我们只能通过bit下载完成后自动触发的方式实现,实现方法来自UG908文件247页,以下是详细操作步骤。
-
首先正常编译生成top_hdl.bit,并下载bit文件,打开ILA,设置trig信号上升沿触发。
-
打开底部Tcl Console,通过pwd查看当前工作路径,并切换到一个已知的文件夹,比如,这个文件夹之后会用来存放tas文件和bit文件。tas就是ILA的配置文件,其中就包含用户设置的信号名和触发条件。
-
输入以下TCL命令,将当前ILA配置导出tas文件。
run_hw_ila -file ila_trig.tas [get_hw_ilas hw_ila_1] -force
其中hw_ila_1是当前ila的编号,如果有多个ila需要指定对应的名称。
执行完成之后,就会在第2步设置的文件夹下生成ila_trig.tas文件。
- 切换到Open implementation design窗口,执行以下TCL命令:
apply_hw_ila_trigger ila_trig.tas
- 执行以下tcl命令,生成新的bit文件,需要一定的时间。
write_bitstream trig_at_startup.bit -force
会在第2步指定的文件夹下生成trig_at_startup.bit文件。
6. 重新下载bit文件,选择上一步新生成的trig_at_startup.bit文件。
在下载完成之后,会自动根据我们设置的条件触发ILA采集。
注意事项
- 如果改变了ILA的触发条件或信号连接等,需要重复上面所有的步骤。
- 虽然是下载完成后自动触发,但是实测触发是有延时的,本次示例代码中trig改为500个clk,发现并不能实现触发,1000个是可以的,可能是ILA需要一定的初始化时间。
参考资料
- ug908-vivado-programming-debugging
- [中文博客] Vivado Hardware Debug技巧 - 如何在下载Bitstream后自动触发ILA采集