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

相关推荐
ye1501277745518 小时前
12V-24V升110V升压转换WT3207
单片机·嵌入式硬件·其他·硬件工程
小麦嵌入式20 小时前
FPGA入门(三):3-8 译码器 仿真波形解读
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
Opportunityl3 天前
CADENCE 切换层显示快捷键
硬件工程·硬件
周周记笔记3 天前
【元器件专题】初识三极管
硬件工程
苏州汇成元电子科技4 天前
为什么越来越多AI设备开始使用I-PEX 81463-100B-02-D 30Pin极细同轴线束?
人工智能·音视频·硬件工程·信号处理·材料工程
国产芯片设计4 天前
【LCD驱动实战】单颗YL1621脚位不足?双芯片联动驱动方案详解
stm32·单片机·mcu·51单片机·硬件工程
苏州汇成元电子科技5 天前
从I-PEX 82441-100B-02-D看14Pin极细同轴线束怎么选?
音视频·硬件工程·信号处理·材料工程
祝大家百事可乐6 天前
能源危机背景下浅谈如何降低电气设备生产制造成本_Continuously Updated
硬件工程
硬件狂人6 天前
PLL(五)模拟PLL与数字PLL(DPLL)的核心区别详解
硬件工程
llilian_167 天前
失真度测量仪校准 精准可靠的失真度校准检定测试仪筑牢检测根基 失真度检定装置
功能测试·单片机·嵌入式硬件·硬件工程