Formality:两种等价状态consistency和equality

相关阅读

Formalityhttps://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_shell | GUI |
| 使用set_app_var verification_passing_mode consistency**\|**equality命令 | 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值。

相关推荐
Industio_触觉智能14 小时前
RK3576开发板GPIO驱动入门教程,基于触觉智能开发板教学-上
嵌入式硬件·硬件工程·智能硬件·开发板·gpio·瑞芯微·rk3576
CoreTK芯通康EMC整改1 天前
《2026 电子制造业 EMC 合规白皮书》解读:PCB EMC 设计全链路优化指南(附器件选型矩阵)
人工智能·硬件工程·设计规范·emc整改案例·emc整改
czhaii1 天前
单片机光学自动打靶机寻点流程分析
单片机·嵌入式硬件·硬件工程
会编程是什么感觉...1 天前
立创商城封装转AD自动化 -- JLC2AD_AutoLib
自动化·硬件工程·layout
科恒盛远3 天前
【无标题】
fpga开发·硬件工程·信号处理
AI的探索之旅4 天前
AI Agent辅助立创EDA设计——从原理图到PCB
人工智能·stm32·硬件工程
JNX_SEMI5 天前
ATR2652 GNSS双频LNA:0.75dB噪声系数与22dB高增益设计
前端·单片机·嵌入式硬件·物联网·硬件工程
就叫一片白纸5 天前
【电子基础——电容】
电脑·硬件工程
Topplyz5 天前
如何减小DCDC的纹波?
单片机·嵌入式硬件·硬件工程·电源·layout·dcdc
ICGOODFIND16 天前
2026物联网模组选型指南:U-BLOX定位模组+SIMCOM芯讯通主流蜂窝通信模组参数与场景适配
嵌入式硬件·物联网·硬件工程·iot