formality verify cases

cut-point

切点cutpoints表示在信号路径中插入2:1多路复用器。
原始信号成为多路复用器0侧的输入,自由信号成为多路复用器1侧的输入。
其中哪一个通过多路复用器由命令脚本中是否启用了切点来控制。
切点用于将困难的等价性证明简化为更小、更简单、更容易解决的问题。
通常,可以按如下方式使用切点:

  1. 创建描述设计中某个节点行为的断言。
  2. 证明这些断言。
  3. 在该节点启用一个切点,假设刚才证明断言正确,在这些断言下证明设计的其余部分。
    这个过程被称为假设-保证推理,可以在任何必要的步骤中应用它。

异步旁路

一种时序单元,其中一些异步输入具有到输出的组合路径,绕过一般的时序元件SEQGEN,称为异步旁路。
async bypass异步旁路逻辑可能来源于:

  • 从一个技术库到另一个技术库的映射;
  • Verilog仿真库:Verilog模块例化逻辑电路,创建出直接影响时序型用户定义单元(UDP)输出的组合路径。
  • 用RTL代码建模触发器。RTL定义了一个显式异步路径,或者当清除和预设都处于活动状态时,RTL指定Q和QN具有相同的值。

异步旁路逻辑不能来自转换为.db文件的.lib文件。库编译器使用时序元素来建模异步行为,以避免创建显式的旁路路径。异步旁路逻辑导致一个比较失败点。

verification_asynch_bypass若要防止由于下游故障点而中止验证,使用:
set_app_var verification_asynch_bypass true
此过程在设计中的每个寄存器周围创建异步旁路逻辑。将验证异步旁路设置为true可能会导致以下情况:

  • 更长的验证运行时。
  • 在设计中引入循环。
  • 由于设计复杂性而中止验证。
    异步旁路影响整个设计,不能放置在单个实例上。此外,在验证技术库中的单元时,会自动启用异步旁路;由于库单元的相对简单性,不会发生任何负面影响。

异步状态保持循环圈

形式化用于验证同步设计。因此,您的设计不应该包含作为组合逻辑实现的异步状态保持循环。异步状态保持循环可能导致某些比较点中止,从而得出不确定的结果。异步状态保持循环通过以下方式影响形式:

  • 如果形式上确定异步状态保持循环影响比较点,它将中止该比较点,并且该点不是证明等效的或不等价的。
  • 如果形式证明异步状态保持循环具有不影响比较点的路径,则证明该点等价或不等价。
  • 如果形式不能确定异步状态保持循环具有不影响比较点的路径,它将中止该比较点,并且该点不是证明等效的或不等价的。

如果循环是相同的,则Formality会在验证过程中自动打断它们。
若要更改此行为,请将VERIFICATION_AUTO_LOOP_BREAK变量设置为False。
还可以在验证后指定REPORT_LOOPS命令。
在这种情况下,Formality会报告原始循环,即使它们在验证过程中自动中断。
若要报告异步状态保持循环,请使用formality shell。
report_loops [‑ref ] [‑impl ] [‑limit N ] [‑unfold ]

默认情况下,REPORT_LOOPS命令将返回参考设计和实施设计中的回路的网和接点列表。它报告每个设计10个回路,每个回路100个设计对象,除非使用-Limit选项另行指定。使用基于实例的路径名称报告对象。
使用-unfold选项分别报告嵌入在循环中的子循环。否则,它们将一起报告。
如果循环完全包含在技术库单元中,此命令将列出与其关联的所有网和接点。如果循环只有一部分属于技术库单元,则该单元名称不会显示在列表中。此外,如果循环跨越边界,则报告将显示层次结构。
确定任何异步状态保持回路的位置后,请确保通过插入断点成功验证回路。

重新编码有限状态机

FSM的结构由一组用于保持状态矢量的触发器和一个产生下一个状态矢量和输出矢量的组合逻辑网络组成。
在对实现设计中的重新编码的FSM与其在参考设计中的对应项进行验证之前,您必须采取使验证成为可能的步骤。
这些步骤定义FSM状态向量并使用它们各自的编码建立状态名。
如果没有正确的设置,Formality将无法验证两个具有不同编码的FSM,即使它们具有相同的状态序列和输出向量。
Formality提供了几种方法来命名触发器和定义编码。
用户定义的编码不是通过形式验证的,所以要注意正确地指定编码。
最简单的方法是使用由DesignCompiler生成的SVF文件。
还可以使用单个FM_shell命令读取用户提供的同时包含所有信息的文件,也可以使用两个命令来命名状态向量触发器,然后定义状态名称及其编码。

用于FSM重新编码的SVF文件。
由DesignCompiler生成的SVF文件包含FSM状态向量编码。
此编码采用GUIDE_FSM_REENCODING命令的形式。
使用以下变量告诉Formality使用Design Compiler SVF文件中的FSM guidance:
在读取SVF文件之前设置此变量。
读取用户提供的FSM状态文件。
若要命名FSM状态向量触发器,并同时提供带有其编码的状态名,请执行以下操作:
read_fsm_states filename [designID ]

如果您的FSM具有多个状态,请使用此方法。
如果您的FSM只有几个状态,请考虑下一节中介绍的方法。
您必须为验证成功提供参考和实施设计的FSM信息。
您提供的文件必须符合某些语法规则。
通过使用设计编译器中的REPORT_FSM命令并将报告输出重定向到文件,可以生成合适的文件。

单独定义FSM状态

要将状态机状态向量触发器命名为 ,然后定义状态名及其相应的编码,
set_fsm_state_vector flip-flop_list [designID ]
set_fsm_encoding encoding_list [designID ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值