前仿后仿与形式验证

 Modelsim仿真方法 前仿真和后仿真的区别  一定要看!!!!

https://www.cr173.com/html/46179_1.html

前仿针对RTL的功能验证,

后仿针对是综合后(加入了约束,单元延时等信息)的网标文件,

形式验证,https://www.cnblogs.com/guolongnv/articles/8005544.html

  1. 形式验证是一种综合性的验证方式,我们可以设定一些属性,它会以一种严密的逻辑方式穷尽所有可能去尝试着证明我们的设计满足/不满足这种属性,不像我们的逻辑仿真存在一定的概率性,因为在逻辑仿真中我们不可能穷尽所有的可能去验证(可能要花费数年甚至几十年去穷尽所有可能),但形式验证可以做到而且往往只需要几十分钟或者数个小时

  2. 现在,形式验证现在可以应用在跨时钟域CDC(Clock Domain Crossing)验证,在CDC验证中,它可以识别CDC区域并进入电路中任何一个同步逻辑块中,建立CDC的稳定性模型并用于RTL的仿真中以确认没有这种不稳定的状态穿过Clock Domain的边界在DUT中继续进行传播;覆盖率收敛方面,形式验证也可以发挥很大作用,现在在我们的设计中会集成许多可配置可复用的设计模块,但是由于配置方式的不用,使得它的功能不同,覆盖率也就很难打到我们的要求(通常为100%),形式验证可以根据对模块的配置做一个覆盖率的分析,如果可以覆盖,它会给出一个覆盖的例子,如果不可以那我们就需要高度重视去重新检查可不可以过滤掉

静态主要保证电路能对得上逻辑(包括时序上,和网标的门级对应RTL级)
动态主要保证逻辑功能真确(前仿真保证RTL逻辑功能真确,后仿保证加入时序信息后,逻辑功能依旧真确)

一、后仿介绍

1.概述

后仿是在前仿的基础上加入了延时信息的功能仿真,同时验证了设计的时序以及功能都正确,并且确保后仿功能和前仿一致。前仿与后仿所使用的仿真器是相同的,所加激励也是相同的,不同点主要有:仿真所需文件不完全相同;作用不同;波形不同。

后仿可以分为综合后仿真和布局布线后仿真。综合后仿真是对DC综合后的网表进行仿真,连线延时来自于通过线负载模型的估计;布局布线后仿真是对布局布线后的网表进行仿真,连线延时来自于版图的提取。

为什么有了静态时序分析(STA)还要进行后仿?

后仿也称为动态时序仿真,是对加入了延时信息的网表文件进行的仿真,目的是验证时序以及功能都正确。同步电路的分析采用静态时序分析实现,异步电路的分析则需要运行特殊仿真激励确认。静态时序分析的功能是根据设计规范的要求检查所有可能路径的时序,不需要通过仿真或者测试向量就可以有效的覆盖门级网表中的每一条路径,在同步电路设计中快速找出时序上的异常。动态时序分析主要是指门级的仿真,它主要应用在异步逻辑、多周期路径、错误路径的验证中。随着设计向65nm以下的工艺发展,只用静态分析工具将无法精确验证串扰等动态效应。通过动态时序分析与静态时序分析相结合可以验证时序逻辑的建立/保持时间,并利用动态技术来解决串扰效应、动态模拟时钟网络等问题。

二、仿真所需文件

DC综合或布局布线后生成的网表文件.v和SDF文件.sdf,与综合时所用工艺库db对应的标准单元工艺库.v文件(不区分工艺角),以及前仿所用的测试激励文件testbench.v。
https://blog.csdn.net/weixin_38197667/article/details/90739352

 

静态时序分析和动态时序仿真各有什么特点

https://blog.csdn.net/weixin_30826761/article/details/99862527

回答一:

IC时序验证用两种方法实现:一是动态时序分析,即根据电路中提取的延时参数,通过仿真软件动态的仿真电路以验证时序是否满足要求。二是静态时序分析,即通过分析设计中所有可能的信号路径以确定时序约束是否满足时序规范。
  动态时序分析的时序确认通过仿真实现,分析的结果完全依赖于验证工程师所提供的激励。不同激励分析的路径不同,也许有些路径(比如关键路径)不能覆盖到,当设计规模很大时,动态分析所需要的时间、占用的资源也越来越大。
  静态时序分析根据一定的模型从网表中创建无向图,计算路径延迟的总和,如果所有的路径都满足时序约束和规范,那么认为电路设计满足时序约束规范。静态时序分析的方法不依赖于激励,且可以穷尽所有路径,运行速度很快,占用内存很少。它完全克服了动态时序验证的缺陷,适合大规模的电路设计验证。对于同步设计电路,可以借助于静态时序分析工具完成时序验证的任务。

回答二:

动态时序分析就是通常我们所说的仿真,该仿真可以验证功能,也可以验证时序,首先确定测试向量,输入硬件模型,进行仿真。由于为了完整地测试每条路径的功能或者时序是否都满足,测试向量需要很大,也不能保证100%的覆盖率。如果到了门级的仿真将非常消耗时间。
       静态时序分析只能分析时序要求而不能进行功能验证。不需要测试向量,能比动态时序分析快地多的完成分析。静态时序分析只能对同步电路进行分析,而不能对异步电路进行时序分析。但是它却可以验证每一条路径,发现时序的重大问题,比如建立时间和保持时间冲突,slow path以及过大的时钟偏移。
      静态时序分析的优缺点
静态时序分析可以大大提高仿真时间,并能100%覆盖所有的路径。它通过预先计算所有的延时来提高速度。包括内部门延时以及外部的线延时。静态时序分析并不是简单的把各个延时相加,而是引入真值表,分析各种输入情况下所有可能经过的路径,而且能识别flase path。但是由于在深亚微米的工艺条件下,静态时序分析不能完整的把所有影响延时的因素给包含进去,因此在关键路径方面,便可以用STA工具导出关键路径的spice网表,用门级或者管级仿真工具进行电路仿真,以确定时序的正确性。

STA静态时序分析/Formality形式化验证

https://blog.csdn.net/a389085918/article/details/80078519

1.    静态时序分析STA

对于仿真而言,电路的逻辑功能的正确性可以由RTL或者门级的功能仿真来保证;其次,电路的时序是否满足,通过STA(静态时序分析)得到。两种验证手段相辅相成,确保验证工作高效、可靠地完成。时序分析的主要作用是查看FPGA内部逻辑和布线的延时,确保其是否满足设计者的约束。


synopsys的STA工具是PT(primeTime),这是一个signoff的独立工具。
在早期的流程中,反标SDF的动态后仿真是标准的流程,现在的流程中后仿真已经不再需要进行,而是由STA+ formality形式验证 来代替。

基于动态仿真的验证和STA+FORMALITY的差别在于:一个需要开发仿真的pattern,另外一个不需要任何输入pattern。
另外,基于仿真的做法能验证到的path取决于输入pattern的完备性(覆盖率不高),VCS可以统计模块验证的覆盖率,而STA+Formality是基于数学的,可以分析所有的path。

但是在下面三个方面,还是需要进行后仿真,后仿在下面三种情况是必要的:
1。异步逻辑设计部分
2。ATPG向量验证
3。初始化状态验证
对于全同步的设计,在做了RTL仿真后,可以不作门级仿真,而对于存在异步电路的设计,需要针对异步电路进行相应的门级仿真。

其实不是后仿不需要,只是这可能花的时间太多,所以人们想用形式验证+STA代替。但是这种方法还是有漏洞的,因为STA只检查边沿timing,而形式验证只看register和combination的抽象功能。后仿在下面三种情况是必要的:异步逻辑设计部分、ATPG向量验证和初始化状态验证。另外,后仿产生的VCD文件还可以做功耗分析。

现在通常的策略是:采用形式验证手段来保证门级网表在功能上与RTL设计保持一致,配合静态时序分析工具保证门级网表的时序,对于全同步的设计,甚至可以不做门级仿真;对于存在异步电路的设计,也只需要针对异步电路进行极少的门级仍真工作。这无疑会加快设计进度,加快产品上市时间。

总结下来:

STA + Formality 不能完全替代后仿真,但是因为后仿真的时间太长,因此也不能完全进行后仿真,而是进行STA+Formality,并且对异步设计和初始化等提供后仿真的case来进行简单的后仿真。

 

PT和DC的timing分析差不多,下面一个功能比较特殊:

Bottleneck Analysis:

提取violation的path*同的cell。

report_bottleneck

2.    形式验证Formality

Formality形式验证是一个基于数学意义的验证方法,通过比较两个设计A,B:

如果A的逻辑功能被B包含,那么形式验证认为是通过的。

需要注意的是并不是说着两个design是完全相等的,而是逻辑上具有包含的关系。

 

在IC的流程中通常用于进行不同流程步骤的netlist的比较:

逻辑综合netlist,floorplannetlist,placement netlist ,CTSinserted netlist,P&R netlist,在每一个步骤后都有新的逻辑加入到netlist中,但是这个新的逻辑的加入不能改变之前netlist的功能。

在dynamicsimulation的流程中,需要开发验证pattern作为输入来进行验证,验证的覆盖率取决于pattern的开发的完备性;而formality是基于数学比较的,不需要任何的输入pattern。因此相比于动态仿真的优势在于:

不需要开发验证pattern

速度比较快

覆盖率100%

纯逻辑上的验证,不考虑物理和timing信息

缺点在于:

由于不考虑timing,因此需要配合STA工具使用。

后仿真能否被形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)所取代...

https://blog.csdn.net/weixin_30826761/article/details/99862527

验证的主要目的:就是检查时间模型是否满足时间要求,是否实现了时间所需的功能。对于集成电路来说,具体就是在时间需求规定的激励下,电路是否产生了符合功能要求的输出;以及在设计需求规定的条件下,电路是否完成正常的功能。

    RTL级设计为仿真对象的前仿真,主要是验证电路的逻辑功能,信号的跳变是瞬时完成的因此只能在功能上证明设计的正确性,而无法证明在实际电路中逻辑功能仍然正确。

    门级仿真(后仿)是对RTL代码综合并布局布线后生成的门级网表进行时序仿真,是引入了逻辑延时时间的仿真。在后仿真阶段,仿真的过程中引入了线上和门级的延时,重点是验证在引入了实际时延之后系统功能是否正确,以避免因时延问题而导致系统时序功能的错误。

PS:前仿和后仿的激励输入是否一致呢?还不清楚

    我们知道,当RTL级功能仿真或FPGA验证结束之后,传统的IC设计流程需要完成以下几次门级仿真:综合之后的门级仿真、DFT之后的门级仿真、布局布线之后的门级仿真等。如果设计很大或者电路很复杂,往往需要庞大的测试向量来验证设计的功能及时序是否正确,这就使得我们花费在门级仿真的时间会随着电路规模的增大而直线上升。

    那么,可不可以用形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)来代替动态后仿真呢?让我们先简单了解一下形式验证和静态时序分析。

    形式验证是一种静态的验证手段,它根据电路结构静态地判断两个设计在功能上是否等价,常用来判断一个设计在修改前和修改后其功能是否保持一致。它运行时无须测试向量,但是必须有一个参照设计和一个待验证的设计。参照设计是设计者认为功能上完备无缺的设计,理论上它可以是用高级语言如C,C++实现的,也可以是用集成电路的建模语言SystemC,但就现实而言,多数形式验证过程中的参照设计就是我们的RTL设计,一般是用verilog或VHDL实现的。

    静态时序分析简称STA ,它提供了一种针对大规模门级电路进行时序验证的有效方法。它只需要根据电路网表的拓扑,就可以检查电路设计中所有路径的时序特性,测试路径的覆盖率理论上可以达到100%,从而保证时序验证的完备性;同时由于不需要测试向量,所以STA验证所需时间远小于门级仿真的时间。当然,静态时序分析也有自己的弱点,它只能有效地验证同步时序电路的正确性,而无法验证电路功能的正确性,对于大部分设计中可能包含的异步电路的时序验证,则必须通过门级仿真来保证其时序的正确性。

    对于上面的问题,我们的答案是模论两可的。

    其实不是后仿不需要,只是这可能花的时间太多,所以人们想用形式验证+STA代替。但是这种方法还是有漏洞的,因为STA只检查边沿timing,而形式验证只看register和combination的抽象功能。后仿在下面三种情况是必要的:异步逻辑设计部分、ATPG向量验证和初始化状态验证。另外,后仿产生的VCD文件还可以做功耗分析。

    现在通常的策略是:采用形式验证手段来保证门级网表在功能上与RTL设计保持一致,配合静态时序分析工具保证门级网表的时序,对于全同步的设计,甚至可以不做门级仿真;对于存在异步电路的设计,也只需要针对异步电路进行极少的门级仍真工作。这无疑会加快设计进度,加快产品上市时间。

https://wenku.baidu.com/view/bf5a40b665ce050876321321.html

前仿后仿与形式验证