使用网表插入调试探测流程
在
Vivado
工具中插入调试核的过程以分层方式来演示
,
以应对多样化的
Vivado
用户组的不同需求
:
• 最高层是根据选定调试的一组信号线来自动创建并配置
Integrated Logic Analyzer (ILA)
核的简单向导。
• 下一层是“
Debug
”主窗口
,
此窗口支持控制个别调试核、端口及其属性。从“布局选择器
(Layout Selector)
”或
“布局
(Layout)
”菜单中选择“
Debug
”布局以打开“已综合的设计
(Synthesized Design)
”时即可显示“
Debug
”
窗口
,
或者也可以使用“
Window
” → “
Debug
”来直接打开此窗口。
• 最底层是一组
Tcl XDC
调试命令
,
您可在
XDC
约束文件中手动输入这些命令
,
或者也可以将其作为
Tcl
脚本来进行
重复运行。
您也可将多种模式组合使用
,
以插入和自定义调试核。
标记要调试的
HDL
信号
您可在综合前使用
mark_debug
约束在
HDL
源代码级别识别要调试的信号。在“调试
(Debug)
”窗口中的“未分配的
调试信号线
(Unassigned Debug Nets)
”文件夹下
,
会自动列出对应于
HDL
中标记调试的信号的信号线。
注释
:
在“
Debug
”窗口中
,
“调试信号线
(Debug Nets)
”视图是主要围绕信号线的视图
,
其中显示了您选中调试的信
号线。“调试核
(Debug Cores)
”视图则是主要围绕核的视图
,
您可在其中查看和设置核属性。
标记调试的信号线的过程取决于您当前正在处理基于
RTL
源代码的工程还是基于已综合的网表的工程。对于基于
RTL
网表的工程
:
• 通过使用
Vivado
综合功能
,
您就可以有选择性地使用
VHDL
和
Verilog
源文件中的
mark_debug
约束来标记要调试
的
HDL
信号。
mark_debug
约束的有效值为“
TRUE
”或“
FALSE
”。
Vivado
综合功能不支持“
SOFT
”值。
对于基于已综合的网表的工程
:
• 通过使用
Synopsys
®
Synplify
®
综合工具
,
您就可以有选择性地使用
VHDL
或
Verilog
中的
mark_debug
和
syn_keep
约束来标记要调试的信号线
,
或者也可以使用
Synopsys
设计约束
(SDC)
文件中的
mark_debug
约束来进行标记。
Synplify
不支持“
SOFT
”值
,
因为此行为由
syn_keep
属性来控制。
• 通过使用
Mentor Graphics
®
Precision
®
综合工具
,
您就可以有选择性地使用
VHDL
或
Verilog
中的
mark_debug
约
束来标记要调试的信号线。
以下小节提供了适用于
Vivado
综合、
XST
、
Synplify
和
Precision
源文件的语法示例。
图标和
ILA
核
• 空心绿色图标 表示已设置
MARK_DEBUG
属性但并未连接到任何
ILA
核的信号线。
• 实心绿色图标 表示已设置
MARK_DEBUG
属性并且已连接到
ILA
核的信号线。
• 黄色图标 表示信号线上未设置
MARK_DEBUG
,
但此信号线已连接到
ILA
核。
Vivado
综合
mark_debug
语法示例
以下是使用
Vivado
综合时的
VHDL
和
Verilog
语法示例。
•
VHDL
语法示例
attribute mark_debug : string;
attribute mark_debug of char_fifo_dout: signal is "true";
•
Verilog
语法示例
(* mark_debug = "true" *) wire [7:0] char_fifo_dout;
Synplify mark_debug
语法示例
以下是适用于
VHDL
、
Verilog
和
SDC
的
Synplify
语法示例。
•
VHDL
语法示例
attribute syn_keep : boolean;
attribute mark_debug : string;
attribute syn_keep of char_fifo_dout: signal is true;
attribute mark_debug of char_fifo_dout: signal is "true";
•
Verilog
语法示例
(* syn_keep = "true", mark_debug = "true" *) wire [7:0] char_fifo_dout;
•
SDC
语法示例
define_attribute {n:char_fifo_din[*]} {mark_debug} {"true"}
define_attribute {n:char_fifo_din[*]} {syn_keep} {"true"}
重要提示
!
SDC
源代码中的信号线名称必须使用“
n:
”限定符作为前缀。
注释
:
Synopsys
设计约束
(SDC)
是业内普遍接受的标准
,
用于将设计意图告知工具
,
主要用于时序分析。请访问以
下网址注册
TAP-in
程序即可获取
Synopsys
所提供的
SDC
规范的参考副本
:
https://www.synopsys.com/
Community/Interoperability/Pages/TapinSDC.aspx
Precision mark_debug
语法示例
以下是使用
Precision
时的
VHDL
和
Verilog
语法示例。
•
VHDL
语法示例
attribute mark_debug : string;
attribute mark_debug of char_fifo_dout: signal is "true";
•
Verilog
语法示例
(* mark_debug = "true" *) wire [7:0] char_fifo_dout;
对设计执行综合
下一步是在
Vivado Design Suite
中单击“
Run Synthesis
”或者运行以下
Tcl
命令来对包含调试核的设计执行综合
:
launch_runs synth_1
wait_on_run synth_1
您也可以使用
synth_design Tcl
命令来对设计执行综合。如需了解有关各种设计综合方法的更多详细信息
,
请参阅
《
Vivado Design Suite
用户指南
:
综合》
(
UG901
)
。
在已综合的设计中标记要调试的信号线
在
Flow Navigator
中单击“
Open Synthesized Design
”打开已综合的设计
,
然后选择“
Debug
”窗口布局以查看“调
试
(Debug)
”窗口。这样会在“
Debug
”窗口中的“未分配的调试信号线
(Unassigned Debug Nets)
”文件夹下显示对应
于带调试标记的
HDL
信号的所有信号线。
![](https://i-blog.csdnimg.cn/blog_migrate/0c65f16e668f16dd3d1eff16cd21cbbf.png)
• 选中任一设计视图
(
例如
,
“
Netlist
”或“
Schematic
”窗口
)
中的信号线
,
然后右键单击选择“
Mark Debug
”选
项。
• 选中任一设计视图中的信号线
,
然后将其拖放到“
Unassigned Debug Nets
”文件夹中。
• 在“
Set up Debug
”
Wizard
中使用信号线选择器
(
请参阅“使用‘
Set Up Debug
’
Wizard
来插入调试核”以了解
详细信息
)
。