使用网表插入调试探测流程
在 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 信号的所有信号线。
• 选中任一设计视图 ( 例如 , “ Netlist ”或“ Schematic ”窗口 ) 中的信号线 , 然后右键单击选择“ Mark Debug ”选
项。
• 选中任一设计视图中的信号线 , 然后将其拖放到“ Unassigned Debug Nets ”文件夹中。
• 在“ Set up Debug ” Wizard 中使用信号线选择器 ( 请参阅“使用‘ Set Up Debug ’ Wizard 来插入调试核”以了解
详细信息 ) 。