Formality中的verification_set_undriven_signals变量
文章目录
前言
对于design出现的undriven signal,在做formality时需要对verification_set_undriven_signals变量进行设置,否则,formality结果failed。
一、verification_set_undriven_signals变量
Formality中关于verification_set_undriven_signals变量的介绍如下。
NAME
verification_set_undriven_signals
Specifies how Formality treats undriven nets and pins during verification.
TYPE
String
DEFAULT
“BINARY:X”
ENABLED SHELL MODES
Setup
DESCRIPTION
Use this variable to control the value that Formality assumes for undriven nets and pins.
By default, Formality treats undriven pins and nets in the reference design as BINARY (cut points) and in the implementation design as X. This conservative value results in verification failure if any matched compare point in the reference design is ever controlled by any undriven signal. This ensures that your reference design’s behavior is not controlled by any unexpected undriven signals. To be sure your reference and implementation designs propagate undriven net or pin values to compare points identically, you need to specify the value BINARY for this variable.
Note: When the synopsys_auto_setup Tcl variable is set to true, Formality sets the verification_set_undriven_signals variable to SYNTHESIS.
To change the value of the variable, use the set verification_set_undriven_signals value variable. Where value is one of the following:
X: Treats undriven pins and nets as X (don’t-care in the reference design and don’t-know in the implementation design to be consistent with the simulation).
Z: Treats undriven pins and nets as Z (high-impedance).
0: Treats undriven pins and nets as 0.
1: Treats undriven pins and nets as 1.
0:X: Treats undriven pins and nets in the reference design as 0 and in the implementation design as X (ensures undriven reference signals are tied to 0 in implementation).
BINARY: Treats each undriven pin or net as a matchable independent free variable by creating a cut point at each undriven signal. This value results in verification failure when the downstream compare points are controlled by unmatched (undriven signal) cut points.
BINARY:X: The default. Treats undriven pins and nets in the reference design as BINARY and in the implementation design as X. This value results in verification failure if any matching reference compare point is controlled by any undriven signal.
SYNTHESIS: Treats reference undriven pins and nets as treated by the Design Compiler tool and implementation undriven pins and nets as BINARY.
The PI value for this variable is deprecated and support discontinued starting with S-2021.06.
SEE ALSO
synopsys_auto_setup(3)
————————————————
一般地,不太希望设计上存在undriven。Designer Compiler工具默认只要存在undriven point,最后的网表都是会接0处理的。因此,Formality对于undriven的pin/nets在默认状态下是在ref中按照BINARY(cut)处理,在imp中按照X处理,这样操作比较保守确保,一旦存在undriven point,fm的结果就会fail。
二、如何解决由undriven nets/pins导致的failing points
在fm.tcl中一般会先set synopsys_auto_setup true,但是根据上面的描述如果set synopsys_auto_setup true之后,Formality会将verification_set_undriven_signals 变量设置为SYNTHESIS。因此需要对undriven的选项单独再设置一下,这样对设计的验证更加充分。
代码如下(示例):
set_app_var synopsys_auto_setup true
set_app_var verification_set_undriven_signals BINARY:X
如果设计中存在undriven nets/pins导致fail,首先确认设计中存在的这些undriven points是否是期望的, 如果设计中存在的这些undriven points是期望的,那么将变量verification_set_undriven_signals设置为0即可。
代码如下(示例):
set_app_var synopsys_auto_setup true
set_app_var verification_set_undriven_signals 0
总结
对于design中出现的undriven signals,Formality默认设置是failing points。因此首先确认设计中存在的这些undriven points是否是期望的,如果是期望的,在做formality时需要对verification_set_undriven_signals变量进行设置,这样才会succeed。