首页 > 其他分享 >数字和模拟后仿总结

数字和模拟后仿总结

时间:2023-09-22 17:37:00浏览次数:42  
标签:总结 仿真 sdf 时序 SDF 后仿 网表 模拟 延迟

1      网表

数字芯片设计一般将布局布线前的工作称之为数字前端(Front End)设计,而将布局布线之后的工作称为数字后端(Back End)设计

 

Ø  按照芯片后端流程,门级网表主要分为综合网表,DFT网表,PR网表,其中PR网表是包含SDF的最终版网表。

Ø  网表验证一般有三种形式:仿真验证、形式验证和静态时序分析STA。

 

Ø  门级仿真有两种:

(1)       不带时序反标的门级仿真,即零延时仿真,通常使用布局布线之前的综合网表进行仿真,这在门级仿真中称为前仿(区别于EDA验证中的前仿,EDA验证中的前仿通常是指对RTL代码的仿真,不涉及网表)。

(2)       带时序反标(back-annotation)的门级仿真,使用布局布线后带时序信息的网表进行仿真,这在门级仿真中称为后仿。

 

Ø  门级仿真的选项

l  前仿选项:

+nospeicy :在仿真时忽略库文件中指定的延时。

+delay_mode_zero:将标准库单元中定义的延时替换为0。testbench中的#延时也都被消除。

+notimingcheck:时序检查开关,比如setup/hold/width检查等等,如使用了该option,则仿真时不检查时序,行为类似于RTL仿真。在PR未结束,sdf反标文件还没准备好时,可用该选

项忽略延时,可用于功能性的粗略检查。但真正跑后仿真时,不可使用该选项,否则仿真有效性大大降低。

l  后仿选项:

+sdfverbose:显示所有的sdf反标错误;

+no_notifier:可以关掉时序检查产生的不定态。通过这个命令参数可以使时序检查任务中检测到时序违例后,不影响其参数列表中的notifier的值,从而避免了notifier变化引起udp输出不定态的情况,该命令仅对notifier的值有影响,对于时序检查任务检测到的时序违例不产生任何影响;

+neg_tchk若要使用负延时检查,在编译设计时必须包含+neg_tchk选项。如果省略此选项VCS将所有负延迟更改为0。

-negdelay

用于SDF文件中有负延迟,如果省略此选项,VCS将

所有负延迟更改为0。

 

 

l  前端中的几个缩写的含义:

LEF是Library Exchange Format,是定义了晶圆尺寸、管脚名以及位置的文件。

CPM是Chip Power Model,包含整个芯片电源输送网络的信息,可以准确地模拟芯片在从DC到多GHz的宽频率范围内的电响应。它通常包括电流波形,以及片上电网等效电容和电阻(分别为Cdie和Rdie),用于系统级电源完整性设计

 

l  后端中的几个缩写的含义:

PR指的是Place and Route,即布局布线。

PT验证主要是对寄存器,对电路路径进行时钟约束,查看各个模块的延迟时间slack是否满足,其中PT指的是Synopys的静态时序分析工具Prime Time。

SPEF是Standard Parasitic Exchange Format,该类型文件包含了芯片中互连线的寄生参数信息。

CDL是Circuit Description Language,是一种用于描述集成电路的硬件描述语言。CDL文件是一种文本文件,其中包含了对集成电路的结构、元器件、信号传输和逻辑功能等方面的描述。CDL文件通常包含以下内容:1. 元器件的定义:包括器件的类型、名称、引脚数目、引脚名称和功能等信息。2. 电路的连接:描述电路中各个元器件之间的连接方式,包括直接连接、串联连接、并联连接等。3. 电路的逻辑功能:描述电路的逻辑功能,包括逻辑门、触发器、计数器等。4. 时序信息:描述电路中各个元器件的时序关系,包括时钟信号、时序控制信号等。

GDS是Graphic Data System,即图形数据库系统文件,集成电路版图用到的GDSII是二进制文件,用来描述版图的图形数据信息。GDSII是通用电气子公司calma的注册商标,GDSII对任何版本都具有兼容性。

 

 

1.1      PR网表

PR会对DC约束综合产生的网表进行布局布线,通过PT生成标准延迟文件SDF(Standard Dwlay Format)以及数字版图。综合后但PR前的网表只包含标准单元的延时信息,不含互连线的延时信息,而PR后的网表带有互连线的延时信息。

获取SDF文件的过程:

1、通过QRC来提取SPEF文件,QRC是cadence extraction tools,SPEF是Standard Parasitic Extraction Format的缩写,用于描述芯片在PR之后实际电路中互连线的寄生参数:电阻R、电感L和电容C,由于芯片的 current loops非常窄也比较短,所以一般不考虑芯片的电感,所以通常SPEF中包含的寄生参数为RC值。

 

2、由SPEF作为输入件,生成SDF文件。

 

1.2      PG网表

PG网表的PG指的是Power和Ground,即所有cell带电源和接地的门级网表。

 

 

2      Corner

2.1      工艺角

第一个字母代表NMOS的速度,第二个字母代表PMOS的速度

image-20221026142251940

Typical指晶体管驱动电流是一个平均值,FAST指驱动电流是其最大值,而SLOW指驱动电流是其最小值(此电流为Ids电流)这是从测量角度解释,也有理解为载流子迁移率(Carrier mobility)的快慢.载流子迁移率是指在载流子在单位电场作用下的平均漂移速度。

 

以上5种corner在 ± 3 σ可以覆盖约99.73%的范围,这种随机性的发生符合正态分布

对于芯片的corner,一般有6个spec,FF2(或2FF)表示往快的方向偏2个σ,SS3(或3SS)表示往慢的方向偏3个σ,S5F4(或5S4F)表示NMOS往慢方向偏5个σ而PMOS往快方向偏移4个σ。

 

2.2      PVT

为了衡量芯片在不同场景下是否能正常工作,引入了PVT(Process,Voltage,Temperature)的概念,即工艺、电压和温度,一般用于有源器件。

 

l  三种STA(Static TimingAnalysis)分析方法:

1、单一模式:用同一条件分析setup/hold ;

2、WC_BC模式: 用worst case计算setup,用bestcase计算hold;

3、OCV (On-chip Variations)模式:OCV可以描述PVT在单个芯片所造成的影响,计算setup时,用worstcase计算数据路径,用bestcase计算时钟路径;计算hold时,用bestcase计算数据路径,用worstcase计算时钟路径。

 

l  几种标准STA分析条件:

Ø  TYP (typical) : typical process, nominaltemperature, nominal voltage

Ø  WCS (Worst Case Slow) ,也叫WC: slow process, hightemperature, lowest voltage

Ø  BCF (Best Case Fast ),也叫BC : fast process, lowesttemperature, high voltage

Ø  WCL (Worst Case & Cold) : slow process,lowest temperature, lowest voltage

 

l  进行功耗分析的条件:

Ø  ML (Maximal Leakage ) : fast process, hightemperature, high voltage

Ø  TL (typical Leakage ) : typical process, hightemperature, nominal voltage

 

2.3      Scenarios分析

Scenarios分析其实多种条件的组合:

Scenarios = Interconnect + operation mode +PVT

其中Interconnect是内部连线,用来衡量制造对内部互连线的影响,如R_typical C_typical, R_max C_max,R_max C_min, R_min C_min;operation mode是工作模式,如function mode, scan mode, sleep mode, standbymode, active mode。

 

对多种scenarios的综合分析,称为MMMC (Multi-Mode Multi-Corner) Analysis。

 

 

2.4      Parasitic Corners

除了有源器件,无源的互连线也会有不同的工艺角,需要根据寄生电阻R和寄生电容C来分类。

Ø  Ctypical:电容和电阻不偏大也不偏小,居中状态;

Ø  Cworst (或Max C):由于绕线在制造过程中发生宽度偏大/间距变小,导致电容偏大,相应地电阻偏小的状态,对于较短的绕线,总体的RC乘积是偏大的,造成绕线延迟偏大;

Ø  Cbest (或Min C):与Cworst相反,电容偏小,电阻偏大,RC偏小的状态,较短的绕线延迟偏小;

Ø  RCworst (或Max RC):对于较长的绕线,RC值有可能是由电阻R主导,假如在制造过程中宽度偏小,造成电阻偏大,电容偏小,然而总体的RC乘积是偏大的,较长的绕线延迟偏大;

Ø  RCbest (或Min RC):与RCworst相反,电阻小,电容偏大,RC偏小的状态,较长的绕线延迟偏小;

 

在先进工艺下,引入了DPT(double pattern technology)之后,对于寄生参数提取又加入了新的需要考量的因素,即同一层金属两个Mask之间的间距偏差。因此有了下图的几个新的Parasitic Corners:

Ø  Ctypical_CCworst;

Ø  Ctypical_CCbest;

Ø  Cworst_CCworst;

Ø  RCworst_CCworst;

Ø  Cbest_CCbest;

Ø  RCbest_CCbest。

特点:在引入DPT之前的Corner的基础上加入CCworst或者CCbest,CCworst表示DPT的两个Mask间距更小,往总体电容变大的方向偏,而CCbest表示DPT的两个Mask间距更大的,往总体电容变小的方向偏。另外,寄生参数的提取也和温度有关,往往和PVT Corner的温度对应。不过,实际制造过程中也会发生不同层的金属处在不同Corner的情况,在这部分没有办法Cover,只能通过Net Derate,或者Clock Uncertainty去Cover了。

 

如果考虑OCV的variation还有以T开头的Parasitic Corners。

 

 

3      带SDF的PR网表后仿

 

3.1      SDF文件格式

SDF文件的格式:



 
   

 

                 


 

一个单元可以用指定四类时序规格来进行描述:

·         DELAY:用来描述时延;

·         TIMINGCHECK:用来描述时序检查;

·         TIMINGENV:用来描述时序环境;

·         LABEL:声明用以描述时延的时序模型变量;

 

 

可以在SDF中指定的时序检查包括:

·         建立时间:SETUP,SETUPHOLD;

·         保持时间:HOLD,SETUPHOLD;

·         恢复时间:RECOVERY,RECREM ;

·         撤销时间:REMOVAL,RECREM;

·         最大偏斜:SKEW,BIDIRECTSKEW;

·         最小脉冲宽度:WIDTH;

·         最小周期:PERIOD;

·         不变化:NOCHANGE;

 

 

DELAY时序规范有四种类型:

·         ABSOLUTE:在反标期间替换单元实例的现有延迟值;

·         INCREMENT:将新的延迟数据添加到单元实例的任何现有延迟值;

·         PATHPULSE:指定设计输入和输出之间的脉冲传播极限。此极限值用于决定是将出现在输入上的脉冲传播到输出,还是将其标记为X ,或者将其滤除;

·         PATHPULSEPERCENT:除了值以百分比表示外,这与PATHPULSE完全相同;

 

 

可以使用ABSOLUTE或INCREMENT描述八种延迟定义:

·         IOPATH:输入到输出路径的延迟;

·         RETAIN:保留时间定义,可以用于指定输出端口在其相关输入端口改变后应保留其先前值的时间;

·         COND:条件路径延迟,可以用于指定状态相关的输入到输出路径延迟;

·         CONDELSE:默认路径延迟,可以用于指定条件路径的默认值;

·         PORT:端口延迟,可以用于指定互连走线延迟,该延迟被建模为输入端口的延迟;

·         INTERCONNECT:互连走线延迟,可以用于指定从其源端到接收端的整个网络的传播延迟;

·         NETDELAY:网络延迟,可以用于指定从一个网络的所有源端到所有接收端的传播延迟;

·         DEVICE:器件延迟,主要用于描述分布式时序模型,可以用于指定通过单元到输出端口的所有路径的传播延迟;

 

 

3.2      SDF反标

SDF 反标(SDF Annotation)是指在IC设计的后端流程中,通过仿真工具对布局图(GDS)进行仿真,然后将仿真结果反标到源文件中,以使仿真结果更加精确和可靠的过程。其本质是用SDF文件中的延时信息替换verilog模型的specify中的延时信息。

 

verilog模型中的cell及其specify:



例如红框中的内容指的是A1端到ZN端的上升沿延时为0,下降沿延时为0。

工艺库中标准单元的verilog模型的specify只包含标准单元内部的延时信息,相比之下,sdf文件除了单元内部的延时信息,还包含单元之间连线的延时信息,更接近实际数字电路的延时。

 

l  反标的两种方法

(1)       作为elaboration的选项,在makefile中调用

格式为: -sdf min/typ/max:实例名:文件名.sdf

例如:-sdf min:TOP.CORE:test.sdf

(2)       使用系统函数$sdf_annotate

$sdf_annotate (“sdf_file”[, module_instance] [,“sdf_configfile”] [,“sdf_logfile”] [,“mtm_spec”] [,“scale_factors”][,“scale_type”]);

Ø  sdf_file:指定SDF文件的路径,传参必须有sdf文件,其他参数不指定时使用默认值。

Ø  module_instance:指定反标设计的范围(scope)

Ø  sdf_configfile:指定SDF配置文件

Ø  sdf_logfile:指定VCS保存error 和warnings消息的SDF日志文件。也可以使用+sdfverbose runtime option来打印所有反标消息

Ø  mtm_spec:指定延迟类型"MINIMUM(min)", "TYPICAL(typ)“或者"MAXIMUM(max)”。一般sdf中的delay信息包含min/type/max,但是很多时候只有min和max值。

Ø  scale_factors:分别指定minmax的缩放因子,默认是"1.01.0"

Ø  scale_type:指定缩放之前延迟值的来源,取值有三个,FROM_MINIMUX(选择SDF文件中mininum timing)、FROM_TYPICAL(选择SDF文件中typical timing)、FROM_MAXIMUM(选择SDF文件中maximum timing)、FROM_MTM(系统默认)。

下面是编译log中对于反标信息的打印:

 

注意:

单元的延迟通常是根据单元时序库(timing library)中定义的timing arc,从电路图间接提取计算出来的,而这些timing arc,要和仿真模型(specify block)中定义的io path要一一对应,在反标过程中才能标注成功。

 

SDF的版本目前常用的是2.1和3.0两个版本,这两个版本比较明显的一个区别就是removal的检查,2.1版本不支持这个timing check,而是用hold替代实现。后仿的时候注意SDF的版本和仿真模型的版本要保持一致。

 

如果sdf反标时没有设置mtm类型,即min/typ/max,则该选项会默认使用typ,但是在很多情况下sdf中路径的delay信息只有min和max而没有设置typ,这种情况下有可能有IOPATH not found的报错而导致反标失败。

 

如果sdf文件的条件信息在verilog的specify中没有的话,就会报SDFCOM_INF的warning,即IOPATH not found。

log中时序违例的打印:




 

4      参考链接

https://blog.csdn.net/weixin_45270982/article/details/113776799

https://blog.csdn.net/qq_41554005/article/details/127533241

https://zhuanlan.zhihu.com/p/74060446

http://www.360doc.com/content/22/0622/14/18252487_1036997391.shtml

https://baijiahao.baidu.com/s?id=1719305671380214451&wfr=spider&for=pc

https://blog.csdn.net/weixin_45270982/article/details/113776799

https://blog.csdn.net/weixin_39015789/article/details/102637772

https://blog.csdn.net/zyn1347806/article/details/111804012

https://it.cha138.com/nginx/show-320555.html

https://m.elecfans.com/article/2101722.html

https://zhuanlan.zhihu.com/p/401152579

标签:总结,仿真,sdf,时序,SDF,后仿,网表,模拟,延迟
From: https://www.cnblogs.com/kid-kid/p/17722964.html

相关文章

  • dockerfile编写总结
    编写Dockerfile文件1.dockerfile结构介绍  from基础镜像  maintainer维护者信息  run命令前加run  CMD容器启动时执行的操作,可以自定义脚本,也可执行系统命令  ENTRYPOINT容器启动时执行的操作,设置指令指定容器启动时执行的命令,可以追加命......
  • #11 模拟赛真是一天比一天恶心
    Square-freedivision题面因为是判断是否有两个数乘起来为完全平方数是,所以可以先把数里的完全平方项,这样判断是否有两个数乘起来为完全平方数可以直接判断是否有两个相同的数。又因为一次修改可以改为任何数,所以如果存在\(x\)个数相同,我们需要修改的次数为\(x-1\)。可以想......
  • 总结,知识的结构性
    一门程序设计语言的基本要素和技能可以概括为以下几点:语法和语义:每门语言都有自己的语法规则和语义理解,比如操作符的使用、变量的定义,如何创建和使用函数等。数据类型和数据结构:理解基本的数据类型(例如整数、浮点数、字符串等)和数据结构(例如数组、列表、字典、集合等)。控......
  • 基于Kubernetes的Serverless PaaS稳定性建设万字总结
    作者:许成铭(竞霄)数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的SLA数字,更是与客户切身利益乃至身家性命息息相关,稳定性压倒一切。本文将侧重于实际落地而非方法论,阐述云产品SAE......
  • 9.21 周四总结
    //生成1-100内的整数Randomr1=newRandom();intnum1=r1.nextInt(0,100);importjava.util.*;publicclassTestRandom{ publicstaticvoidmain(String[]args) { Randomrand=newRandom(); System.out.println("rand.nextBoolean():"+rand.nextBoo......
  • 3-Linux文档查看指令,关机重启、相关知识点的拓展与总结
    一、文档的查看指令1、tail指令作用:查看一个文件的末n行语法:#tail-n文件的路径说明:-n可以不写,不写,默认表示10行。案例:新建一个1.txt文档,使用tail指令查看root/1.txt文件的末5行和末10行tail-5/root/1.txttail/root/1.txt2、head指令作用:查看文件的头n行语法:#hea......
  • 9月21日总结
    一.今天做了什么今天上午学了统一建模语言,然后上体育课,测了体前屈、跳远、50米跑和引体向上,所幸基本及格下午学习数据结构给我听蒙了,然后上离散课,老师讲的飞快,嘴一直突突都不听。晚上趁着选修课又学了一下二.遇到的问题,如何解决无三.明天准备做什么明天准备摆烂......
  • 每日总结
    今天进行了echart的学习<template><divref="chartContainer"style="width:400px;height:300px;"></div></template><script>importechartsfrom'echarts';exportdefault{mounted(){//创建ech......
  • 每日总结
    今日收获成功将数据从hive导入到mysql中,同时在本地的Navicat中显现出来!超额背了单词嘞!学习了python的相关知识,但是有的问题还没有解决;明天预计希望!明天顺利通过考试!!!......
  • 9.21每日总结
    学习所花时间(包括上课):1h代码量(行):0行博客量(篇):1篇今天,上午上课,下午上课。我了解到的知识点:1.了解了关于模型训练的一些知识和注意事项;2.了解了关于软件构造的一些知识,明日计划:1.完成Hive的测试;......