数字系统设计中形式验证


下图给出等价性验证的基本概念。

 

等价性验证用于验证AB是否等价,这里的B是由A转换得到的。这里的AB可以是RTL代码,也可以是门级网表。在进行等价性验证时,A是参考,B称为实现。可以用形式验证来检查综合结果是否正确(将RTL级的设计与门级网表比较)、插扫描链前后的网表是否一致、布局前后网表是否一致、插时钟树前后的网表是否一致、布线前后的网表是否一致。如下图所示。

 

通常在综合后、在第一次布线完成后以及每次对网表中的错误进行修改(ECO)时均要进行等性验证,等价性验证可以验证EDA工具的结果是否正确,也可以验证网表修改是否正确。例如,在设计布线完成后,设计者发现设计中有错误。这时候,需要在RTL代码与网表中同时作修改。如果RTL与门级修改不一致, 通过形式验证可以很容易发现。在进行RTL级与门级网表进行等价性比较的时候,等价性工具先将RTL代码综合成网表,然后将其与实现进行比较。其原理如下图:

 

等价性验证工具通过比较设计点中比较点的功耗与状态是否等价,以此来验证两个参考设计与实现是否等价。比较点是等价性验证中的一个重要概念。它包括输出、寄存器、黑盒子的输入等。一般来说形式工具会根据信号的命名来自动选择比较点,对一些特殊的、形式工具难以识别的比较点,设计者也可以手工进行设置。如下图所示:

 

需要注意的是,等价性验证仅能保证两个设计的一致性,但不能保证两个设计的正确性。因此在IC设计中,仿真仍然是必不可少的步骤。但是有了等价性验证工具之后,我们可以将主要精力放在RTL的仿真上。

下面介绍用formality进行形式验证的流程。

formalitysynopsys的形式验证工具,它在进行形式验证的时候,步骤如下:

1)读入链接库:read_db ../../lib/target.db

2)读入参考设计,并设置顶层设计:

     read_verilog r rtl/rtl.v

set_top mydesign

3)读入实现,并设置顶层设计:

     read_verilog i gate/gate.v

     set_top mydesign

4)设置一些与进行等价性验证有关的设置。例如:若设计中的某些模块不需要进行检查,可以将其设置为“黑盒子”;在验证插入扫描链的网表时,需要将测试模式信号与扫描使能信号设置为0等等。

5)进行比较点的匹配。采用match命令即可。一般来说,等价性验证工具会根据相近的信号命令来选取比较点,并给出比较点的报告。如果等价性工具无法识别某些比较点,或者识别有错误,设计者可以手工进行相应的设置。

6)进行验证。采用verif命令即可。

7)给出报告,如果发现错误,则利用图形方式进行调试。

整个流程图可以总结为下图:

 

 

 

 

 

  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值