创建 DRC 豁免和 Methodology 豁免 - 2023.2 简体中文

Vivado Design Suite 用户指南: 设计分析与收敛技巧 (UG906)

Document ID
UG906
Release Date
2023-10-19
Version
2023.2 简体中文

create_waiver 的附加实参的数量和类型取决于需豁免的 DRC 和 Methodology 违例。极少数 DRC 和 Methodology 违例(如 TIMING-9)不含其他实参,因为消息为通用消息而非专用消息。其他 DRC 和 Methodology 违例可能包含多个字符串和不同类型的对象。

注释: 如果违例不引用任何字符串或对象(例如,TIMING-9 和 TIMING-10),不建议将其豁免。

违例内的字符串是通过豁免内的 -string 来指定的。器件或设计对象(管脚、单元、信号线、Pblock 和 site)是以 -objects 选项来指定的。对于违例包含的上述每个元素,都应单独指定上述每个命令行选项。

从 GUI 或者从违例对象创建豁免时,豁免通过指定所有相应字符串和对象来构成唯一违例,并定义为仅适用于该违例。手动创建豁免时,可拓宽豁免适用范围以便使单一豁免适用于多个违例。要将豁免扩展为覆盖多个违例,请执行以下操作:

  • 使用 get_* 命令模式来代替具体名称
  • 使用通配符代替单一字符串或对象。通配符为特殊字符,例如,以“*”代替“任意字符串”,或者以“*PIN”代替“任意管脚”(请参阅下表)。只要相同类型的对象与相同位置的违例中找到的元素匹配,即表示成功匹配。如果来自豁免的所有元素都与违例匹配,则该违例可享受豁免。
  • 指定对象列表以代替单一对象。只要违例内的对象与豁免内相同位置的对象列表内的任一对象匹配,即表示成功匹配。如果来自豁免的所有元素都与违例匹配,则该违例可享受豁免。

例如,以下命令将豁免引用 mux2_inst/mux_out_INST_0 单元的单一 TIMING-14 违例:

create_waiver -id "TIMING-14" -description "Reviewed by the team" \
                  -objects [get_cells mux2_inst/mux_out_INST_0 ]

假设设计包含多个 mux2_inst/mux_out_INST_* 单元,那么可通过修改上述豁免,来豁免与所有这些单元相关的 TIMING-14 违例,方法是针对 get_cells 命令使用如下模式:

create_waiver -id "TIMING-14" -description "Reviewed by the team" \
                   -objects [get_cells mux2_inst/mux_out_INST_* ]

下表汇总了基于对象类型用作为通配符的关键字。

表 1. 通配符关键字
对象 通配符
单元 *CELL
信号线 *NET
管脚 *PIN
端口 *PORT
Site *SITE
拼块 *TILE
BEL *BEL
封装 bank *PKGBANK
时钟区域 *CLKREGION
时钟 *CLOCK
Pblock *PBLOCK
字符串 *
注释: create_waiver -scope 会将管脚和单元的通配符强制限定为创建豁免的当前实例。创建限定作用域的豁免时,-scope 可确保管脚和单元的通配符与位于比该作用域更高层次的对象不匹配,否则可能导致对不允许豁免的违例执行豁免。