将调试 IP 添加到 RTL 内核 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文
重要: 该调试技巧要求必须熟知 Vivado Design Suite 以及 RTL 设计。

您也可以通过以下方法在 RTL 内核中启用调试:先在自己的 RTL 内核代码中手动添加 ChipScope 调试核(如 ILA 和 VIO),然后再对其进行封装以供在 Vitis 开发流程中使用。在 Vivado Design Suite 内部,编辑 RTL 内核代码以手动例化来自 AMD IP 目录的 ILA 调试核或 VIO IP,这与在 Vivado IDE 中使用任何其他 IP 类似。请参阅 Vivado Design Suite 用户指南:编程和调试(UG908) 中的 HDL 例化流程,以了解有关向设计添加调试核的更多信息。

创建 RTL 内核时最适合为其添加调试核。但是,调试核会耗用器件资源并且可能影响性能,因此最好将一个内核用于调试,将另一个内核用于量产使用。GitHub 上的 RTL 内核示例的 rtl_vadd_hw_debug 显示了将 ILA 调试核例化到 RTL 内核源文件中的过程。ILA 按照 src/hdl/krnl_vadd_rtl_int.sv 文件中指定的方式来监测组合加法器的输出。

	// ILA monitoring combinatorial adder
	ila_0 i_ila_0 (
		.clk(ap_clk),              // input wire        clk
		.probe0(areset),           // input wire [0:0]  probe0  
		.probe1(rd_fifo_tvalid_n), // input wire [0:0]  probe1 
		.probe2(rd_fifo_tready),   // input wire [0:0]  probe2 
		.probe3(rd_fifo_tdata),    // input wire [63:0] probe3 
		.probe4(adder_tvalid),     // input wire [0:0]  probe4 
		.probe5(adder_tready_n),   // input wire [0:0]  probe5 
		.probe6(adder_tdata)       // input wire [31:0] probe6
	);

您也可以使用 Vivado Design Suite 用户指南:编程和调试(UG908) 中所描述的“网表插入”流程。在打开的 Vivado 工程中使用 Tcl 脚本来添加 ILA 调试核,如以下 Tcl 脚本示例所示:

create_ip -name ila -vendor xilinx.com -library ip -version 6.2 -module_name ila_0
set_property -dict [list CONFIG.C_PROBE6_WIDTH {32} CONFIG.C_PROBE3_WIDTH {64} \
CONFIG.C_NUM_OF_PROBES {7} CONFIG.C_EN_STRG_QUAL {1} CONFIG.C_INPUT_PIPE_STAGES {2} \
CONFIG.C_ADV_TRIGGER {true} CONFIG.ALL_PROBE_SAME_MU_CNT {4} CONFIG.C_PROBE6_MU_CNT {4} \
CONFIG.C_PROBE5_MU_CNT {4} CONFIG.C_PROBE4_MU_CNT {4} CONFIG.C_PROBE3_MU_CNT {4} \
CONFIG.C_PROBE2_MU_CNT {4} CONFIG.C_PROBE1_MU_CNT {4} CONFIG.C_PROBE0_MU_CNT {4}] [get_ips ila_0]

完成 RTL 内核检测并确认可通过相应的调试核进行调试之后,您即可按 利用 ChipScope 调试 中所述,在 Vivado 硬件管理器中进行硬件分析。