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