创建豁免的第 2 种方法是使用 DRC、Methodology 或 CDC 违例对象。GUI 使用此方法向 Tcl 控制台发送 create_waiver
命令。
以下语法用于从 1 个或多个违例对象创建豁免:
create_waiver -of_objects <ViolationObject(s)> -description <string> [-user <name>]
“description”(描述)为必填字段。不指定“user”(用户)时,系统使用当前运行 Vivado 工具的用户 ID。
注释: 指定多个违例对象时,系统会为每个违例创建 1 项豁免。创建的豁免不引用原始违例对象。而改为在豁免中包含违例所含的字符串和对象列表。
违例对象通过 get_cdc_violations
、get_drc_violations
和 get_methodology_violations
命令返回。仅当先前已运行 report_cdc
、report_drc
和 report_methodology
时,这些命令才会返回对象。请使用命令行选项 -name
从任一 GUI 报告获取违例对象的列表。
以下示例代码用于为起点位于 top/sync_1
模块内部的所有 CDC-1 违例创建豁免:
report_cdc -name cdc_1
set vios [get_cdc_violations -name cdc_1 -filter {CHECK == CDC-1}]
foreach vio $vios {
if {[regexp {^top/sync_1} [get_property STARTPOINT_PIN $vio]]} {
create_waiver -of $vio -description {Safe by protocol}
}
}
这样会根据违例内部引用的所有对象和字符串来构建从违例对象创建的豁免。这使该豁免成为该违例的独有豁免。如果希望此豁免涵盖多个违例,则必须将豁免导出到外部文件并编辑 create_waiver
命令以将单个对象和字符串替换为模式和通配符等。如需获取有关使用模式和通配符的更多信息,请参阅 创建 DRC 豁免和 Methodology 豁免。
注释: 对于某些 DRC 和 Methodology 检查,部分字符串将自动转换为通配符,例如,UCIO-1、NSTD-1、TIMING-15 和 TIMING-16。对于 TIMING-15 或 TIMING-16,违例内部的建立和保持裕量并不重要。从 TIMING-15 或 TIMING-16 违例对象创建豁免时,
create_waiver
命令会自动将表示裕量的字符串替换为通配符。这使豁免可应用于特定对象相关的违例,与报告的裕量无关。类似的行为也适用于 UCIO-1 和 NSTD-1。