首页 > 其他分享 >Formality:两种等价状态consistency和equality

Formality:两种等价状态consistency和equality

时间:2025-01-12 15:03:48浏览次数:3  
标签:输出 equality Formality state consistency 设计 out

相关阅读

Formalityicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482


背景

        逻辑锥的等价性检查时,存在两种验证模式:一致(consistency)和等同(equality),要理解这两点,首先得明白综合工具(Design Compiler)是如何处理不定态(x)的信号。

        下面是一个存在x值的RTL代码示例(这不推荐,因为会造成前仿和后仿的不一致)。

// 文件:case_example.v
module case_example (
    input [1:0] state,
    output reg out
);

    always @ (state) begin
        case (state)
            2'b00: out = 1'b0;
            2'b01: out = 1'b1;
            2'b10: out = 1'b1;
            2'b11: out = 1'bx;
        endcase
    end

endmodule

        当进行前仿时,如果state信号取得10值时,输出信号out直接为x值,如图1所示。

图1 前仿中出现的x值

        但在使用Design Compiler进行综合时,x值会被当做不关心(don't care),因而可以有任意的实现方式,如果state信号取得11值时,输出信号out的值由Design Compiler决定,在这个例子中,Design Compiler选择输出1,因为这样就可以直接用一个与门描述逻辑功能了,如图2所示。

图2 综合结果

正题

        下面介绍一致(consistency)和等同(equality)的概念。

一致(consistency)

        对于参考设计中比较点响应为1或0的每一个输入模式(pattern),实现设计必须给出相同的响应;对于参考设计中比较点响应为x(不关心,don't care)的每一个输入模式,实现设计在相应为1或0时都可以通过。可以注意到,这与Design Compiler的处理方式是一致的。一致是不对称的,也就是说如果RTL到门级设计的验证通过,但门级到RTL的验证可能会失败。

等同(equality)

        在一致性的基础上增加了额外的要求,对于参考设计中比较点响应为1或0或x的每一个输入模式(pattern),实现设计必须给出相同的响应才可以通过。等同常在检查两个RTL之间的等价性时很有用。

        可以在Setup模式下使用下面的两种方式切换验证的两种模式(默认为consistency):

fm_shellGUI
使用set_app_var verification_passing_mode [consistencyequality]命令

1、选择Edit > Formality Tcl Variables,将会显示Formality Tcl Variables对话框。

2、在Verification部分,选择verification_passing_mode变量。

3、点击consistencyequality

实践

        下面将继续用上面的例子进行详细说明,假设其综合后的网表如下所示。

/
// Created by: Synopsys DC Expert(TM) in wire load mode
// Version   : O-2018.06-SP1
// Date      : Sun Jan 12 14:18:23 2025
/


module case_example ( state, out );
  input [1:0] state;
  output out;


  OR2X1 U4 ( .A(state[0]), .B(state[1]), .Y(out) );
endmodule

默认情况

        当设置为一致时,验证结果如图3所示,可以从Pattern窗口中看出,当state信号取得11值时,参考设计输出x而实现设计输出1(符合预期),最终验证通过。

图3 默认情况下的匹配结果

非默认情况

        当设置为等同时,验证结果如图4所示,可以从Pattern窗口中看出,当state信号取得11值时,参考设计输出x而实现设计输出1(符合预期),但验证没有通过。

图4 非默认情况下的匹配结果

x值的建模

        可能有人会有疑问,在参考设计中x值是如何建模的?要回答这个问题,可以从逻辑锥入手,首先打开输出端口对应的逻辑锥,如图5所示。

图5 逻辑锥 

        接着选中输出值为x的线网,并依次右键->Find->Find X Sources,结果如图6所示。

图6 x值的源头:C0单元

        C0单元是x值的源头,当DC引脚为1时,无论F引脚是何值,输出都为x值。

标签:输出,equality,Formality,state,consistency,设计,out
From: https://blog.csdn.net/weixin_45791458/article/details/145084710

相关文章

  • 论文阅读:Deep embedded clustering with distribution consistency preservation for
    论文地址:Deepembeddedclusteringwithdistributionconsistencypreservationforattributednetworks-ScienceDirect代码地址:https://github.com/Zhengymm/DCP1摘要许多现实世界中的复杂系统可以被表征为带属性的网络。为了挖掘这些网络中的潜在信息,近年来深度嵌入......
  • CF2050F Maximum modulo equality 题解
    【题意简述】你有一个长度为\(n\)的数组\(a\)。每一次询问给定\(l,r\),寻找最大的\(m\)使得\(a_l\)到\(a_r\)的所有数对\(m\)同余,【前置数学芝士】首先是一个非常Naive的结论,请自行感性证明:设\(a>b\),\(a\)和\(b\)对\(a-b\)同余。理性证明:设\(p=a-b\),\(......
  • formality:antenna cell被看做black box引起的verify failed原因分析
    我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口跑formality对比pr前后网表一致性时发现verifyfailed,打开gui,tracefailed的点发现pr后的网表因为在clocktree上插入了antennacell,而antennacell此时是blackbox,导致clocktree无法trace到clockso......
  • Panasonic Programming Contest 2020 C (Sqrt Inequality) 题解
    题目大意输入三个整数\(a\),\(b\),\(c\),如果\(\sqrta+\sqrtb<\sqrtc\)成立,输出Yes,否则输出No。样例输入#1239输出#1No\(\sqrt2+\sqrt3<\sqrt9\)不成立。输入#22310输出#2Yes\(\sqrt2+\sqrt3<\sqrt10\)成立。分析错误思路首先,由......
  • 何谓相等 (Equality),在类型理论(Type Theory)语境下
    两个元素a,b相等,即a=b,就是a和b是被完全一样地构建出来的。在《类型(Type)是可构建集合(constructiveset)》 一文中,说到,类型中的每个元素都是可构建的,因此,如果在一个类型中的两个元素a,b,是通过一样的方式构建出来,包括其构建时的输入,构建函数,那么,就说a等于b,a=b。......
  • A. Tokitsukaze and Strange Inequality(dp版)
    链接https://codeforces.com/problemset/problem/1677/A题目思路这题感觉还是挺有难度的(为啥题解都说不难Orz),给我启发最大的是这句话:具体怎么处理呢?把i按照n->1的顺序遍历,然后j从反方向遍历:i+1->n。求S[i][j]时用S[i+1][j],因为S对应的是以j为结尾的,然后在遍历中相当于不知......
  • [题解]AT_abc250_e [ABC250E] Prefix Equality
    思路对于这种题目,通常会想到用哈希维护。由于集合相同与\(a_{1\simx}\),\(b_{1\simy}\)的顺序无关,所以对于我们的哈希函数\(h(x)\)必定需要用一种有交换律的符号。首先想到的当然是加法,但是不太好实现,因为这些数太大了,不因会爆unsignedlonglong,还会爆__int128,所以不......
  • (FM)Formality 基础知识简介-SVF
            在Formality中,SVF(SetupVerificationforFormality)文件扮演着重要的角色,能够帮工具理解和处理由于其他工具的使用而引入的设计变更。Formality是一个形式验证工具,用于完成表面逻辑的验证,确保在导入RTL代码和DC综合后的门级网表前后逻辑的一致性。而SVF文件,是D......
  • Equality in OOP and ADT
    在现实物理世界中,任何对象都是不相等的但是对于人类语言,或者对于数学世界,完全可以有很多相同的东西,例如√9和3表现了相等的数值,我们完全可以认为两者是相同的那么在软件世界中,Java的==和equals()有什么区别?在很多场景下,需要判定两个对象是否“相等”,例如:判断某个Collectio......
  • Formality Template
    set_host_options-max_cores8set_app_varhdlin_interface_only""set_app_varverification_failing_point_limit3000set_app_varsh_continue_on_errortrueset_app_varsh_new_variable_messagefalseset_app_varsynopsys_auto_setuptrueset_app_varhdlin......