当前位置: 首页 > 工具软件 > gls > 使用案例 >

数字IC之Gate-Level Simulation(GLS)概述

叶浩荡
2023-12-01

门级仿真也称为后仿真,是数字IC设计流程中的一个重要步骤。
RTL生成之后,会插入DFT,生成post_DFT的网表netlist;插入CPF/UPF描述的低功耗信息,生成post_ISO的网表netlist;之后插入时钟树(clock tree)和电源开关,生成最终的post_PR网表。
理论上每次生成新的netlist,都需要重新run门级仿真,保证功能级别仿真的正确性,但是门级仿真的速度较慢,消耗更多的计算资源,覆盖率低,对于 规模较大的芯片,跑完一个门级case可能需要几天时间。

门级仿真与RTL仿真区别:

1.RTL行为级仿真:

也叫功能仿真,在大部分设计中执行的第一个仿真将是RTL行为级仿真。这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。

2.门级仿真:

也叫综合后仿真, 一般在设计流程中的第二个仿真是综合后门级功能仿真。绝大多数的综合工具除了可以输出一个标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来做仿真使用,而输出的Verilog或者VHDL网表可以用来仿真,之所以叫门级仿真是因为综合工具给出的仿真网表已经是与生产厂家的器件的底层元件模型对应起来了,所以为了进行综合后仿真必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,不然仿真器并不认识其中的底层元件,无法进行仿真。Xilinx公司的集成开发环境ISE中并不支持综合后仿真,而是使用映射前门级仿真代替,对于Xilinx开发环境来说,这两个仿真之间差异很小。

3.时序仿真 (后仿真)

在设计流程中的最后一个仿真是时序仿真。在设计布局布线完成以后可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件(Standard Delay format Timing Anotation)。SDF时序标注最初使用在Verilog语言的设计中,现在VHDL语言的设计中也引用了这个概念。对于一般的设计者来说并不需知道SDF。

门级仿真模式:

1. 零延迟(Zero Delay Simulation)

如果仿真不携带任何时序信息(即不带SDF信息反标、标准单元和IP模型文件中Specify块指定的延迟信息为0),可以理解为就是零延迟,这种仿真放在后仿意义不大。

零延迟模拟意味着在不注释任何定时数据的情况下模拟网表。它主要用于在设计转换为门级网表后检查和验证其功能。在零延迟模拟模式中,指定块延迟被忽略。

这些类型的模拟比具有计时的模拟快得多,并且可以在设计周期的早期启动,此时网表尚未冻结,或者您没有可用的计时信息。

可以使用-NOSpecify开关或通过在命令行中添加delay_mode Zero来启用零延迟模式。此选项仅适用于Verilog设计,并禁用指定块中描述的定时信息,如模块路径、延迟和定时检查。

2.单元延迟(Unit Delay Simulation)

单位延迟模拟是在电路中所有元件都具有相同延迟时间的假设下进行的。因此,提供任何随机延迟值类似于添加单位延迟(1个时间单位)。这具有比SDF模拟更容易实现的优点。

然而,零延迟仿真会导致伪竞争条件和零延迟环路。但是,您可以运行单位延迟模拟来检测和解决真正的竞争条件和时间敏感循环。

在单位延迟模式下,模拟器忽略所有模块路径延迟信息和定时检查,并将所有非零结构和连续分配延迟表达式转换为一个模拟时间单位的单位延迟。

3. 完整时序(SDF Simulation)

SDF模拟是实际的延迟模拟,其中SDF文件中指定的延迟被注释到设计中,并执行所有定时检查。这种类型的模拟需要时间,并且比零延迟或单位延迟模拟慢得多。

SDF文件从合成工具(Genus)、位置和路线工具(Innovus)或静态时序分析工具(Tempus)输出。当SDF文件交付给验证团队时,将使用它和门级网表运行仿真。验证工具使用SDF并尝试将SDF中包含的延迟注释到网表中的相应实例/弧。这也称为反向注释。

在使用SDF进行GLS模拟期间,可能会遇到许多注释警告,需要根据警告和错误的类型进行分析、排序或放弃。需要研究的最重要的警告是由于路径不存在(SDF有弧,但网表没有弧)引起的警告。此外,特定IP的仿真模型指定块和库(.lib)之间可能不匹配。

典型的SDF文件包含一个标题部分,后跟一个或多个单元格条目。对于每个单元格条目,可以使用多种关键字指定延迟、计时检查和其他约束。

为什么仍然需要门级仿真?

既然门级仿真的速度较慢,消耗更多的计算资源,覆盖率低,为何如今我们仍然需要使用门级仿真验证设计的正确性和完备性呢?

GLS可以识别静态时序分析(STA)或逻辑等价工具无法报告的问题。以下是GLS在验证流程中重要的一些原因:

1.克服STA的局限性,例如:

a.STA无法识别异步接口。这是检查STA未检查的异步设计的关键时序路径的好方法。

b.静态定时约束要求,如假和多周期路径的要求。

2.验证系统初始化以及重置顺序是否正确。

3.验证所有电源域的加电和复位操作是否符合电源意图,并检查设计是否对初始条件没有任何无意的依赖性。

4.使用最坏情况和最佳情况定时信息揭示由于组合逻辑导致的边缘敏感信号上的毛刺。

5.执行DFT验证,因为在RTL合成之后插入扫描链。

6.验证时钟树合成是否满足要求。

7.捕获用于功率估计的开关因子。

8.在RTL或GLS中分析X状态悲观或乐观观点。

9.检查最终性能,以确保设计在预期频率下工作,实际延迟到位。

这包括STA或正式引擎未检查的结构元素,以及放置和路由期间添加的缓冲区或其他元素。GLS在低功耗验证中也发挥着重要作用

 类似资料: