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

相关推荐
云空5 小时前
《新凯来:半导体设备制造领域的“国家队”》
硬件工程·制造·材料工程·精益工程
小麦嵌入式17 小时前
Linux驱动开发实战(九):Linux内核pinctrl_map详解与优势分析
linux·c语言·汇编·驱动开发·stm32·嵌入式硬件·硬件工程
Moonnnn.2 天前
运算放大器(三)运算放大器的典型应用
笔记·学习·硬件工程
硬件进化论3 天前
从基础到实践(二十三):MCU选型设计指南
单片机·嵌入式硬件·数码相机·电脑·硬件工程·智能手表·智能电视
Yesheldon4 天前
高速电路中的存储器应用与设计三
单片机·嵌入式硬件·fpga开发·硬件架构·硬件工程·智能硬件
陌夏微秋6 天前
开源项目-数控直流电子负载2 120w数控直流电子负载-硬件分析
stm32·单片机·嵌入式硬件·硬件架构·硬件工程·智能硬件
Hug Freedom.6 天前
CHI协议——retry
开发语言·前端·硬件工程·risc-v
Yesheldon7 天前
高度电路中时序设计之二
嵌入式硬件·fpga开发·硬件架构·硬件工程·智能硬件
lindaakk12 天前
从设计到量产:MHO5000如何实现电源EMIEMC测试全流程自动化?
人工智能·驱动开发·fpga开发·硬件工程·dsp开发·射频工程
XYN6113 天前
【嵌入式学习】嘉立创画pcb门电路
笔记·嵌入式硬件·学习·硬件工程