建议验证豁免的违例是否符合预期。必须在定义豁免后且最终比特流之前执行此操作。
“Report CDC”(CDC 报告)、“Report DRC”(DRC 报告)和“Report Methodology”(方法论报告)命令支持多种报告模式:
- 默认情况下,
report_cdc
、report_drc
和report_methodology
命令仅报告未豁免的违例。 - 请使用
-waived
来强制report_cdc
、report_drc
和report_methodology
命令仅报告已豁免的违例。必须复审报告,确认所有已豁免的违例都符合预期。 - 使用
-no_waiver
可强制report_cdc
、report_drc
和report_methodology
命令在不应用豁免的情况下运行。在此模式下,所有违例无论是否豁免都会包含在报告中。
在命令行和 GUI 的“Report”对话框窗口中提供了 3 种报告模式。下图来自“Report DRC”,显示了“Waivers”(豁免)部分下的报告模式选择。在“Report CDC”和“Report Methodology”小组件下同样包含此“Waivers”部分。
当 CDC、DRC 和 Methodology GUI 的结果窗口中包含已豁免的违例时,这些窗口存在显而易见的差异,每个违例前的图标都不同,且结果窗口的名称包含已豁免的违例数量。
以下示例显示了已豁免的 DRC 的结果窗口,其中仅含 2 项豁免违例。
要获取所有豁免和已豁免的违例的汇总报告,请使用 report_waivers
命令。此报告只能从 Tcl 控制台使用。
report_waivers
仅报告由 report_cdc
、report_drc
和 report_methodology
命令提取的统计数据。要获取准确的统计数据,需在运行 report_waivers
前以及对豁免进行任意修改(添加或删除)时运行 report_cdc
、report_drc
和 report_methodology
。无论是从命令行还是从 GUI 运行报告,都会更新统计数据。如果未能获得统计数据更新,report_waivers
会发出以下 1 条或多条消息,具体取决于哪些 CDC、DRC 或 Methodology 信息已过期:
WARNING: [Vivado_Tcl 4-972] Waiver counts for 'CDC' will be invalid because
report_cdc has not been run since waivers were changed; please run the report_cdc
command.
WARNING: [Vivado_Tcl 4-972] Waiver counts for 'DRC' will be invalid because
report_drc has not been run since waivers were changed; please run the report_drc
command.
WARNING: [Vivado_Tcl 4-972] Waiver counts for 'METHODOLOGY' will be invalid because
report_methodology has not been run since waivers were changed; please run the
report_methodology command.
来自 report_waivers
的报告包含汇总表格和对应每项 CDC、DRC 和 Methodology 豁免的详细表格。表格中包含以下列:
- “Total Vios”(违例总数):应用豁免前的违例总数。将报告的违例数量(不含违例)。按端点数量计算多比特规则数量。
- “Remaining Vios”(剩余违例数):应用豁免后的违例数。没有任何违例获得豁免时,此数值与“Total Vios”相同。按端点数量计算多比特规则数量。
- “Waived Vios”(已豁免的违例数):已豁免的违例数。没有任何违例获得豁免时,此数值为 0。按端点数量计算多比特规则数量。
- “Used Waivers”(已用豁免数):已豁免部分违例的豁免数。如果豁免包含某些模式或通配符,则每项豁免均可应用于多项违例。
- “Set Waivers”(已落实的豁免数):已应用于设计的豁免数。理想情况下,“Used Waivers”与“Set Waivers”的数值应相同。当某些豁免已定义但不匹配任何违例时,这两者的数值不匹配。
默认情况下,在详细表格中仅报告已定义部分豁免的规则。但是,首个“Summary”(汇总)表会报告设计中的所有违例。
通过使用命令行选项 -show_msgs_with_no_waivers
,详细表格可报告含违例的所有检查,与此项特定规则是否存在豁免无关。
除上述报告外,report_waivers
还可导出具有匹配的 CDC、DRC 或 Methodology 违例的豁免列表以及不含任何匹配的违例的豁免列表。-write_valid_waivers
选项可用于导出含匹配的违例的豁免,而 -write_ignore_waivers
可用于导出不含任何匹配的违例的豁免。建议复查不匹配任何违例的豁免列表。如果不应出现不匹配的豁免,则请确保这些豁免的定义正确。
-write_valid_waivers
和 -write_ignore_waivers
选项可根据最近执行的 report_cdc
、report_drc
和 report_methodology
命令所报告的信息来对豁免进行筛选。当通过规则卡或少量检查运行 report_drc
或 report_methodology
时,对于尚未运行的检查可忽略部分豁免。建议在使用 -write_valid_waivers
和 -write_ignore_waivers
前运行所有 DRC/Methodology 检查。例如:
report_cdc -all_checks_per_endpoint
report_drc -checks [get_drc_checks]
report_methodology -checks [get_methodology_checks]
report_waivers -write_valid_waivers -file waivers_valid.xdc
report_waivers -write_ignored_waivers -file waivers_ignored.xdc