您可在
Vivado
硬件管理器中自定义探针
,
将其用作为数据和
/
或触发器。如果探针参与触发或采集比较值
,
则应将其
配置为仅限“触发器”探针。这样即可最优化
ILA
核使用
BRAM
的方式。通常
,
如需采集探针数据
,
则应将其配置为
仅限“数据”探针。如果探针同时参与触发比较值并且还需采集其数据
,
则应将其配置为“触发器和数据”。
您可使用“设置调试
(Set up Debug)
”
Wizard
来将探针配置为数据和
/
或触发器
,
如下图所示。
对于包含配置为仅限“数据”的探针的设计
,
如果在运行时对其执行器件编程
,
则将无法使用这些探针来配置触发或采
集设置条件。相反
,
在“
Waveform
”波形中
,
将无法使用配置为仅限“触发器”的探针。
配置所用比较器数量
在综合后网表上插入
ILA
核后
,
即可设置用于任意位置的比较器的数量
(
范围为
1
到
16
)
。要在
Vivado IDE
中设置比
较器数量
,
请转至
ILA
核的“调试核选项
(Debug Core Options)
”选项卡
,
并将
ALL_PROBE_SAME_MU_CNT
属性设
置为所期望的比较器数量。
或者
,
也可以在
Tcl
控制台中设置
ALL_PROBE_SAME_MU_CNT
属性
,
如下所示
:
set_property ALL_PROBE_SAME_MU_CNT 10 [get_debug_cores u_ila_0]
提示
:
如果启用“采集控制
(Capture Control)
”
,
则可选比较器数量范围是
1
到
15
个。有
1
个比较器供采集控
制数据筛选机制使用。
重要提示
!
在
ILA
中无法使用插入流程来为不同探针设置不同数量的比较器。赛灵思建议您使用
HDL
例化流程
来为不同探针设置不同数量的比较器。
使用
XDC
命令来插入调试核
除了使用“设置调试
(Set up Debug)
”
Wizard
外
,
您也可以使用
XDC
命令来创建、连接调试核并将其插入已综合的设
计网表。在
Tcl
控制台中输入
XDC
命令
,
并遵循以下步骤进行操作
:
1.
打开来自名为
synth_1
的综合运行的已综合的设计网表。
open_run synth_1
重要提示
!
仅当打开已综合的设计网表后
,
以下步骤中的
XDC
命令才有效。
2.
创建
ILA
核的黑盒。
create_debug_core u_ila_0 ila
3.
设置
ILA
核的各属性。
set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0]
set_property C_TRIGIN_EN false [get_debug_cores u_ila_0]
set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0]
set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0]
set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0]
set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0]
set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0]
set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0]
4.
将
ILA
核的
clk
端口宽度设为
1
,
并将其连接到目标时钟信号线。
set_property port_width 1 [get_debug_ports u_ila_0/clk]
connect_debug_port u_ila_0/clk [get_nets [list clk ]]
注释
:
您无需创建
ILA
核的
clk
端口
,
因为此端口将由
create_debug_core
命令自动创建。
重要提示
!
调试核的所有调试端口名称均为小写。使用大写或混合大小写调试端口名称将导致出错。
5.
将
probe0
端口的宽度设置为您计划连接到此端口的信号线的数量。
注释
:
您无需创建
ILA
核的首个探测端口
(probe0)
,
因为此端口将由
create_debug_core
命令自动创建
:
set_property port_width 1 [get_debug_ports u_ila_0/probe0]
6.
将
probe0
端口连接到您想要连接到该端口的信号线。
connect_debug_port u_ila_0/probe0 [get_nets [list A_or_B]]
7.
(
可选
)
创建更多探测端口、设置其宽度并将其连接到您要调试的信号线。
create_debug_port u_ila_0 probe
set_property port_width 2 [get_debug_ports u_ila_0/probe1]
connect_debug_port u_ila_0/probe1 [get_nets [list {A[0]} {A[1]}]]
如需获取有关这些
Tcl
命令以及有关其它相关
Tcl
命令的更多信息
,
请在
Vivado Design Suite
的
Tcl
控制台中输入
help -category ChipScope
。
运行调试
XDC
命令后保存约束
使用“设置调试
(Set up Debug)
”
Wizard
、使用
Vivado Design Suite
创建调试核或调试端口和
/
或运行以下
XDC
命令
后
,
需保存约束
:
•
create_debug_core
•
create_debug_port
•
connect_debug_port
•
set_property
(
针对任意
debug_core
或
debug_port
对象
)
对应
XDC
命令将保存到含后缀
_debug.xdc
的约束文件
,
并在实现期间
,
用于插入和连接调试核。
重要提示
!
在工程模式下保存约束可能导致综合和实现步骤变为过期。但您无需重新综合设计
,
因为仅在实现期
间才使用这些调试
XDC
约束。您可通过选中“
Design Runs
”窗口、右键单击综合运行轮次
(
例如
,
synth_1
),
然后单击“
Force up-to-date
”来强制将综合步骤更新至最新状态。
实现设计
完成插入、连接并自定义调试核后
,
即可着手实现设计
(
请参阅“对包含调试核的设计执行实现”
)
。
在非工程模式下执行调试核插入
调试核可在工程模式或非工程模式下插入。以下
Tcl
脚本样本演示了如何在所探测的设计中创建调试核、设置调试核属
性以及将调试核探针连接到信号。在非工程模式下
,
调试核插入操作需在设计综合后且
opt_design
步骤前执行
,
如下
所示。
重要提示
!
仅限
ILA
核才支持调试核插入。
以下
Tcl
脚本提供了在非工程流程中使用调试核插入命令的示例。
#read relevant design source files
read_vhdl [glob ./*.vhdl]
read_verilog [ glob ./Sources/*.v ]
read_xdc ./target.xdc
#Synthesize Design
synth_design -top top -part xc7k325tffg900-2
#Create the debug core
create_debug_core u_ila_0 ila
#set debug core properties
set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0]
set_property C_TRIGIN_EN false [get_debug_cores u_ila_0]
set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0]
set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0]
set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0]
set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0]
set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0]
set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0]
#connect the probe ports in the debug core to the signals being probed in
the design
set_property port_width 1 [get_debug_ports u_ila_0/clk]
connect_debug_port u_ila_0/clk [get_nets [list clk ]]
set_property port_width 1 [get_debug_ports u_ila_0/probe0]
connect_debug_port u_ila_0/probe0 [get_nets [list A_or_B]]
create_debug_port u_ila_0 probe
#Optionally, create more probe ports, set their width,
# and connect them to the nets you want to debug
#Implement design
opt_design
place_design
report_drc -file ./placed_drc_rpt.txt
report_timing_summary -file ./placed_timing_rpt.txt
route_design
report_drc -file ./routed_drc_rpt.txt
report_timing_summary -file ./routed_timing_rpt.txt
write_bitstream