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值。

相关推荐
ehiway12 小时前
FPGA+GPU+CPU国产化人工智能平台
人工智能·fpga开发·硬件工程·国产化
weixin_535854221 天前
oppo,汤臣倍健,康冠科技,高途教育25届春招内推
c语言·前端·嵌入式硬件·硬件工程·求职招聘
美好的事情总会发生2 天前
以太网的MAC(介质访问控制)详解
linux·网络·人工智能·嵌入式硬件·硬件工程
7yewh2 天前
嵌入式知识点总结 网络编程 专题提升(二)-HTTP/IP
网络·arm开发·物联网·网络协议·http·硬件工程
sjh21005 天前
学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统
linux·stm32·嵌入式硬件·debian·硬件工程
美好的事情总会发生5 天前
NPU(Neural Processing Unit)详解
linux·人工智能·嵌入式硬件·ai·硬件工程
美好的事情总会发生6 天前
ARINC 429详解
linux·嵌入式硬件·硬件工程
AndrewHZ6 天前
Audio-Visual Speech Enhancement(视听语音增强)领域近三年研究进展与国内团队及手机厂商动态分析
算法·计算机视觉·智能手机·硬件架构·硬件工程·智能硬件
iMr_Stone7 天前
GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
人工智能·嵌入式硬件·opencv·音视频·硬件工程
weixin_535854227 天前
oppo,康冠科技25届春招内推
运维·算法·硬件工程·求职招聘·用户运营