仅对英特尔可见 — GUID: sav1631895934775
Ixiasoft
仅对英特尔可见 — GUID: sav1631895934775
Ixiasoft
1.7.2.2. 保留信号以进行监控和调试
Compiler会在综合和布局布线期间优化RTL信号。除非被保留,否则RTL中的信号名称在信号优化后可能不存在于布局布线后的网表中。例如,编译过程可以合并重复的寄存器,或者向从节点扇出的网络名称添加波浪符号 (~)。
- 标记信号以便保留。
可以在您的RTL代码中或通过QSF约束命令直接标记信号。
- 对整个工程或对包含被标记信号的实例启用信号保留。
您可以通过 Quartus® Prime GUI或QSF约束命令来启用工程范畴的信号保留。要保留实例中的信号,请使用QSF约束命令。
通过分离标记信号以便于保留和启用信号保留,您可以在编写代码时标记感兴趣的信号,并且直到启用信号保留时才会对优化产生影响。
属性 | 结果 |
---|---|
preserve | 防止 Quartus® Prime通过优化或重新定时寄存器 |
keep | 防止 Quartus® Prime 在组合逻辑优化过程中最小化或移除信号网络 |
noprune | 防止 Quartus® Prime删除或优化扇出空闲寄存器 |
dont_merge | 防止 Quartus® Prime将寄存器与复制寄存器合并 |
dont_replicate | 防止 Quartus® Prime复制寄存器 |
- Preserve for Debug Assignments报告显示所有标记为保留的节点的保留状态和名称。
- Node Finder中的preserved for debug过滤器可帮助您快速找到保留的节点。
保留信号以进行监控和调试,需要遵循的总体流程如下:
- 采用下列方式之一标记要保留的信号:
- 直接在您的RTL代码中以preserve_for_debug属性标记信号:
表 13. 在RTL中以 preserve_for_debug Attribute标记信号的实例 Verilog实例 VHDL实例 (* preserve_for_debug *) wire [3:0] counter_wire; (* preserve_for_debug *) reg [3:0] counter_reg; (* preserve_for_debug *) wire [15:0] decode_out_top; (* preserve_for_debug *) reg [15:0] decode_out_reg_top;
attribute preserve_for_debug : boolean;attribute preserve_for_debug of counter_wire : signal is true; attribute preserve_for_debug of counter_reg : signal is true; attribute preserve_for_debug of decode_out : signal is true; attribute preserve_for_debug of decode_out_reg : signal is true;
- 使用PRESERVE_FOR_DEBUG约束对信号进行标记,具体方法如下:
- 对特定节点指定PRESERVE_FOR_DEBUG约束,这些节点从命令行或QSF文件中来:
set_instance_assignment -name PRESERVE_FOR_DEBUG ON -to <node hpath>
- 在Assignment Editor中,将Preserve signal for debug约束指定To 任何感兴趣的节点。选择On作为分配值。
重要: 某些罕见情况下,当您使用PRESERVE_FOR_DEBUG约束时,在信号可以被保留之前,可能逻辑已经内优化。如果您遇到此问题,请在使用HDL代码中的preserve_for_debug属性取而代之。 - 对特定节点指定PRESERVE_FOR_DEBUG约束,这些节点从命令行或QSF文件中来:
- 在Platform Designer中标记要保留的系统模块、接口或端口。
有关详细信息,请参阅 Quartus® Prime专业版 User Guide: Platform Designer中的“Preserving a System Module, Interface, or Port for Debugging”。
- 直接在您的RTL代码中以preserve_for_debug属性标记信号:
- 启用保留功能以对整个工程或特定实例进行调试。
- 要启用工程相关的保留和报告,请执行以下步骤之一:
- 从Signal Tap Logic Analyzer设置启用工程的信号保留:
选择Assignments > Settings > Signal Tap Logic Analyzer > Enable preserve for debug assignments。
- 指定全局PRESERVE_FOR_DEBUG_ENABLE约束,从命令行或QSF文件中:
set_global_assignment -name PRESERVE_FOR_DEBUG_ENABLE ON
- 在Assignment Editor中指定全局Enable preserve for debug assignments约束。选择On作为约束值。
提示: 当启用工程相关的信号保留和报告时,请使用实例级设置将实例从工程范畴的信号保留和报告中排除。 - 从Signal Tap Logic Analyzer设置启用工程的信号保留:
- 仅对特定实例启用(或禁用)保留和报告:
- 将实例PRESERVE_FOR_DEBUG_ENABLE约束指定为ON(或者OFF),从命令行或在您的QSF文件中:
set_instance_assignment -name PRESERVE_FOR_DEBUG_ENABLE ON -to <instance hpath>
- 在Assignment Editor中将Enable preserve for debug assignments约束指定To任何感兴趣的实例。选择On(或者Off)为约束值。
- 在您的RTL中将实例的PRESERVE_FOR_DEBUG_ENABLE属性指定为ON(或OFF)。
表 14. 在RTL中设置PRESERVE_FOR_DEBUG_ENABLE属性的实例 Verilog实例 VHDL实例 ... (* altera_attribute = "-name PRESERVE_FOR_DEBUG_ENABLE ON" *) decoder decoder_inst( ...
... attribute altera_attribute : string; attribute altera_attribute of my_decoder_inst : LABEL is "-name PRESERVE_FOR_DEBUG_ENABLE ON"; ... begin ... my_decoder_inst : decoder
- 将实例PRESERVE_FOR_DEBUG_ENABLE约束指定为ON(或者OFF),从命令行或在您的QSF文件中:
- 要启用工程相关的保留和报告,请执行以下步骤之一:
- 综合您的设计
在Compilation Dashboard上,单击Analysis & Synthesis。综合完成后,将生成Compilation Report。您现在还可以使用Node Finder中的 preserved for debug过滤器帮助您快速找到保留的节点。
- 查看信号保留的结果。
打开Preserve for Debug Assignments,具体位于Synthesis > Partition <name> > Preserve for Debug报告文件夹。图 39. 保留以用于调试约束报告
- 通过选择Processing > Start Compilation来运行完整的编译从而执行设计的布局和布线以及Signal Tap实例。
您保留的调试信号将通过Fitter持续保存到最终的编译数据库中。
运行完整编译后,您可以使用以下任意一种 Quartus® Prime调试工具调试您的设计:
约束 | 描述 | 实例 |
---|---|---|
preserve_for_debug (Assignments Editor中的Preserve signal for debug) |
当启用“保留以进行调试”时,标记在编译期间需要保留的信号,以用于综合后或适配后调试。 | set_instance_assignment -name PRESERVE_FOR_DEBUG ON -to <node hpath> |
preserve_for_debug_enable (Assignments Editor中的Enable preserve for debug assignments) |
在工程或实例级启用“保留以进行调试”。 启用后,Compiler会报告编译后Preserve for Debug Assignments报告中信号保留的结果。 编译之后,Compiler报告Preserve for Debug Assignment中的这些节点。 |
set_global_assignment -name PRESERVE_FOR_DEBUG_ENABLE ON set_instance_assignment -name PRESERVE_FOR_DEBUG_ENABLE ON -to <instance hpath> |