ImageVerifierCode 换一换
格式:DOCX , 页数:70 ,大小:2.48MB ,
资源ID:5195609      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5195609.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DC概论总结.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DC概论总结.docx

1、DC概论总结DC概论总结1 DC概论之一setup time与hold time之一 22 DC概论二之fanout与skew 53 DC概论三setup time与hold time 之二 114 DC概论四setup time 与 hold time 之三 155 DC概论五之high fanout 216 DC 概论六之multicycle_path 327 DC 概论七之multicycle_path 补充 428 DC概论八之gated clock之一 479 DC概论九之gated clock之二 5210 DC概论十之virtual clock 5511 DC概论十一之IO约束

2、5812 DC概论十二之优化约束 631 DC概论之一setup time与hold time之一IC代码的综合过程可以说就是时序分析过程,dc会将设计打散成一个个路经,这些路经上有cell延迟和net延迟,然后dc会根据你加的约束,来映射库中符合这种延迟以及驱动的器件。从而达到综合的目的。dc的所有时序约束基础差不多就是setup time 和 hold time。 可以用下面的图片说明:所谓setup time即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间,hold time 即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间。在深入建立时间和保持时间之前。先了解下dc中的

3、路经以及start point ,end point。所谓start point 就是:1. input port(顶层设计的输入端口)2.clock pin of sequential cell(触发器的clock pin)所谓的end point 就是:1 output port(顶层设计的输出端口)3.data pin of sequential cell(触发器的data pin)了解 start point 和 end point,就可以方便的了解 dc是如何将设计打散成路经,一个设计中基本的路经分为4种,如下图:path1: Input port to data pin of se

4、quential cellpath2: Input port to output portpath3: Clock pin to data pin of next sequential cellpath4: Clock pin to output port所有的设计也就这四种类型的路径。另外一种就是带反馈的,也就是本身的clock pin to data pin 。有了路径的概念之后,我们可以分析更复杂的setup time 和 hold time 。dc中对于建立时间的分析是基于路径的最大延迟;而对于保持时间的分析是基于路径的最小延迟。看下面一个例子:这个是给定setup time 和hol

5、d time 的案例,要求算出最小时钟周期。同理也可以给你一个周期和setup time 和hold time,计算时间裕度。 我们假设时钟周期是20,每个触发器的cell 延迟是1,触发器的建立时间是1,保持时间是0.5,分析下列图中的建立时间和保持时间的slack。看到设计,首先要分析路径,找出最长和最短路径,因为dc的综合都是根据约束而得到最短和最长路径来进行器件选择的。所以接下来将图中的所有路径标出。因为没有前级(input_delay)和后级电路(output_delay),我们只分析图中给出的 路径,如下图:对于红色路径:Td=Tcell+Td4+Td5+Td6=1+4+3+1=9

6、对于黄色路径:Td=Tcell+Td4+Td5+Td6+Td8=1+4+3+1+2=11对于紫色路径:Td=Tcell+Td1+Td2+Td3=1+2+3+2=8对于绿色路径:Td=Tcell+Td7+Td2+Td3=1+2+3+2=8所以Tlongest=11,Tshortest=8对于setup time的slack:Tclk-Tlongest-Tsetup=20-11-1=8对于hold time的slack : Tshortest-Thold=8-0.5=7.5对于setup time 和 hold time 的slack的计算,可以体会下面的示意: 对照第一副示意图与此比较,建立时间

7、看D2 ,保持时间看D1,因为同时把Tl和Ts放在一个图例中,看起来可能有些误解:)有空会继续讨论setup time 和hold time,下次讨论将包括clock skew 和input delay,output delay在其中。 2 DC概论二之fanout与skewDc综合是基于路径,每个路径上都有Cell和net,所以基于路径的综合就是计算路径上的delay和rc(dc是使用互连线模型进行估算)。在了解delay和rc的计算时,我们要先了解一下一个cell对于drive(前级)和driven(后级)所用到的模型是什么。如下图,一个buffer,从前级看过来是一个load(capac

8、itance,想获得这个load,可以通过load_of buffer/a获得),从后级看来是一个drive(resistance)。电路的的驱动能力是上一级的1/R,即电阻的倒数,驱动能力大,说明看过去的电阻小,也说明这个器件比较大(大器件有较大的驱动能力)。电路的负载能力是下一级的load(即电容)总和,负载能力大,说明能驱动下级的器件就很多。大器件是大电容,小电阻,而小器件是小电容,大电阻。理解这些,对于dc综合以及后端apr版图都有很好的操作。对于cell的延迟,dc是根据input_transition和out_load对应的查找表来计算的。对于net的延迟,dc是根据wire_lo

9、ad_model中的fanout_length和resistance,capacitance,area的查找表计算的。例如:Wire_load(small)Resistance : 0.2;Capacitance : 1.0;Area :0;Slop :1.0;Fanout_length(1,0.022);Fanout_length(2,0.046);Fanout_length(3,0.070);Fanout_length(4,0.095);比如现在扇出是2,根据fanout_length(2,0.046)可以知道这个互连线的长度是0.046,然后再根据capacitance,resisten

10、ce可以得出这个互连线的电容为:0.046x1.0,互连线电阻为:0.046x0.2。如果扇出是5,在查找表中没有找到fanout_length为5的項,互连线长度将会是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095得出了rc就可以计算出信号的transition时间=2.2RC。 实际的互联线如下:扇出线上的转换时间根据在版图之后提取的rc参数信息求得:2.2RC=(Rnet+Rout)(Cnet+Cin) 无论如何,要记住的就是dc是基于路径分析的(怎么划分路径请参考另一篇:由上面可以知道fanout影响到load(capacita

11、nce),transition,delay。了解了上面,我们来理解下dc中对design建模,所用到的一些跟fanout有关的参数。Dc中的约束,其实就是给chip设计一个环境,比如驱动这个chip输入端口的cell,或者这个chip输出端口驱动了那些单元或者端口接入了哪些负载,以及这个芯片的工艺,电压,温度,等等。对于一个cell来说,输出端口具有max_fanout属性,输入端口有fanout_load属性。例如将一个AND2作为design的驱动cell(set_driving_cell),这样就把AND2的max_fanout属性加在了输入端口上。如果一个AND2的输出端口max_fa

12、nout是5,输入端口fanout_load是2。一个buffer输入端口的fanout_load是3。那么这个AND2的输出端可以接2个AND2,或者可以接一个buffer,或者可以接一个buffer和一个AND2。如上图所示,则会引起DC产生DRC错误。因为输入端口的fanout_load=2XAND2+buffer=7,超过了AND2的max_fanout2.如果使用了系统提供的set_max_fanout 5 all_inputs,将会忽略set_driving_cell中cell的max_fanout属性,而使用set_max_fanout属性如果将一个AND2作为design的负载

13、,那么这个输出端口上的fanout_load属性将会为2.dc中一般的做法是set_fanout_load expr get_attribute slow/and2/a fanout_load *xxx all_outputs,来设置输出端口的fanout_load属性。这样dc就可以根据这些设置,选择优化端口处的器件,以及时序。说到fanout,所以顺带说明一下容易混淆的max_fanout,max_capacitance。如上图所示,输入端口的fanout_load=2个与门的fanout_load和一个buffer的fanout_load。输入端口的load(capacitance)=2

14、个与门的load_of和一个buffer的load_of。(如果通过set_load设置了输入端口,另外还要加上set_load的值)。Max_fanout检查的是输入端口的fanout_load最大值,Max_capacitance检查的是input port or output port or design 的load值。两者概念不同。下面讲下fanout与delay,看如下一个例子:到buffer的net延迟是2,buffer延迟是1,fanout为1时net延迟为3,每增加一个扇出,net延迟增加2.如果一个信号经过这个扇出网络后,那么延迟为:2+1+(3+(8-1)2)=20;如果把

15、扇出结构优化成如下形式:那么信号经过这个网络后,延迟为:2+1+2+1+(3+(4-1)2)=15.那么延迟减少了5。接下来讲一下skew,既然知道了fanout对于delay的影响,下面看一个例子:由于时钟到每个触发器的互连线长短不一样,造成信号到达clock pin的时间也不一样,触发器也不会同时翻转。Skew的定义就是最长路径减去最短路径的值。根据时钟域以及路径关系,skew可以分为global skew,local skew,interclock skew。Global skew是指,同一时钟域,任意路径的最大skew。Local skew是指,同一时钟域,任意2个有逻辑关联关系的路径

16、最大skew。interClock skew是指,不同时钟域之间路径的最大skew另外还有一个useful skew。本来打算在setup time 和hold time中讲解。这里先大概说下如下图:时钟周期为10ns,各时钟路径延迟如下:可以看到有一条路径的slack为-1,说明这条路径违规。可以看到与这条路径相关的skew是T3-T2=-1ns。下面我们利用useful skew向前面一个slack比较充裕的路径(slack=2ns)借点time,来修正现在这条路径。如下图:经过useful skew,修正了原来的violator。这就是useful skew的作用,可以向前,或者向后接t

17、ime来修正violator本节告一段落,欢迎访问:)接下来会讲下setup time 和 hold time (二)加入input_delay output_delay 以及skew 3 DC概论三setup time与hold time 之二前面一篇讲了基本的建立时间和保持时间以及时序路径划分。在这篇开始之前,先介绍一下很经典而且会时常用到的用来讲解的一个电路图,如下。这篇文章的讲解也会给予这个电路图,讲解的时候我把电路图分割成需要的部分:)既然我们知道了建立时间和保持时间的含义,这篇主要是根据工厂提供的标准单元库中时序器件的建立时间和保持时间来预估我们的约束对设计的影响,是否满足时序要求

18、,简单点就是说,时序有没有violator。set_input_delay :input_delay是设置外部信号到达输入端口的时间,dc会用它来计算留给内部逻辑的空余时间是多少。之所以让ClkA和Clk的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的确认是很重要的。这是DC用来确定时间余量(slack)的关键。如上图所示,黄色部分已经确实是最小相位差。那么根据input_delay时间以及库中触发器的setup建立时间,可以知道留给内部逻辑的延迟时间是红色部分Tmin-Tinput_delay-Tsetup。综合过程中,dc会优化Logic2的时序,以使他达到时序要求。同样set

19、_output_delay是设置输出端口到数据采集处的延迟。如下图:DC会根据他来计算留给内部逻辑的时间。这里还是要强调一下不同频率的问题:)介绍完了input_delay和output_delay,以及skew(上篇:在分析时间余量之前再介绍下时钟的latency。Latency分为source lantency 和 一般的latency。Source latency 指的是时钟源到时钟端口的延迟。Latency指的是时钟端口到内部时序器件的时钟管脚的延迟。一般只考虑latency即可。再看下latency对于内部逻辑的影响.下图是不考虑latency的情况:内部逻辑延迟的限度为T2-T1-

20、Tinput_delay-Tsetup。当考虑了latency的时候。D1上的clock会变成时序图中的红色部分那么留给内部逻辑的最大延迟为:T2(T2+Tlatency)-T1-Tinput_delay-Tsetup。会发现留给内部逻辑的延迟会变大,那么会给DC更大的空间来综合。同样如果ClockA上面如果也设置了Latency在分析slack的时候也要算进去。顺便介绍一下时钟的jitter,如下图正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可能提前(粉色)或者延迟(红色)到来,这就是jitter。提前到来充为setup jitter,延迟到来充为 hold jitter。DC

21、中把skew和jitter合成一个uncertainty。用set_clock_uncertainty来设置。下文中提到的skew指的是合体,即uncertainty。Uncertainty分为setup和hold,顾名思义,如上图理解即可。4 DC概论四setup time 与 hold time 之三下面开始正式分析时间余量slack。其实有了上面的知识,只要稍微说明下大家都会很明白。在介绍slack之前,我们要先了解一下要求时间(required time)和达到时间(arrive time)的概念以及计算方法。如果没有特殊说明,黑色clock代表没有影响因素的理想时钟,红色(粉色)cl

22、ock代表受到latency影响的时钟。蓝色clock代表同时受到latency和skew(uncertainty)影响的时钟。对于建立时间(setup time)的到达时间和要求时间。在分析前,记住,建立时间是分析路径中的考虑到各种最不利因素的最大延迟,打个比方:前面一级用尽最大程度向后推(最大的延迟),本级就尽最大力气向前顶(最大不确定因素)。然后看中间有没有漏气(slack为负,时序违规)。1, 输入端口到时序器件的数据端口。上图中要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup到达时间=T1+Tlantency+Tinput_delay+Tlogic

23、22, 时序器件的输出管脚到输出端口上图中:要求时间=T2+Tlatency-Toutput_delay-Tuncertainty_setup到达时间=T1+Tlatency+Tcell+Tlogic53.时序器件到时序器件上图:要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup到达时间=T1+Tlatency+Tcell+Tlogic4,输入端口到输出端口如上图:要求时间=T2+Tlatency-Tuncertainty_setup-Toutput_delay到达时间=T1+Tlatency+Tinput_delay+Tlogic我们再来看下保持时间,保持时

24、间的到达时间和建立时间的到达时间是一样的。只是保持时间的要求时间不一样而已.保持时间类似于龟兔赛跑:系统要求时间就是尽可能的向后,而线上信号就是追那个要确定的时间,追上了,就没问题,追不上问题就有了。说明:红色和粉色表示受latency影响,蓝色表示受uncertainty影响。1. 输入端口到时序器件的数据端口。到达时间:Tarrive=T1+Tlatency+Tinput_delay+Tlogic要求时间:Trequire=T2+Tlatency+Tuncertainty_hold+Thold2. 时序器件的输出管脚到输出端口到达时间:Ta=T1+Tlatency+Tcell+Tlogic

25、要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delay3时序器件到时序器件到达时间:Ta=T1+Tlatency+Tcell+Tlogic要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold4,输入端口到输出端口到达时间:Ta=T1+Tlatency+Tinput_delay+Tlogic要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delaySlack计算:对于建立时间:Slack=要求时间-到达时间对于保持时间Slack=到达时间-要求时间

26、5 DC概论五之high fanoutdc在综合高扇出的网络的时候,约束优先级是:1.功能正确2.DRC(max_transition ,max_fanout,max_capacitance )3.Setup time (max_delay)4.Hold time (min_delay)5. Other.为了符合drc要求,dc通常花费很多时间来编译和修正这些DRC violators。路径上的cell延迟由input_transition 和output_load(包括扇出pin上的load)决定,这个由查抄表可以得到。而net延迟是由net上的R,C决定的。在没有布局布线之前,我们不知道实

27、际的R,C是多少,dc根据互联线模型(set_wire_load_model)来计算出R,C。然后根据得到的R,C计算出net上的延迟:Net_delay=R*C*OC其中系数OC是根据操作环境(set_opearting_conditions)中设置的rc树模型得到。一般的工艺库的操作环境有三种,WORST,TYPICAL,BEST,分别是最差,典型,最坏。在ic中出现high fanout的情况基本有三种:1.时钟clock2.复位reset3.一般信号dc中对于高扇出net的处理,基本就是加buffer(前提,如果没有对这条net设置一些约束,比如set_ideal_network,se

28、t_dont_touch,后面会讲到),以此来减少cell输出端的负载,从而减少transition time 和delay time,以及max_capacitance。而事实上我们是不希望dc这么处理的,我们希望的是可以在后端版图的时候让后端工具自己加buffer,因为我们不知道真实的high fanout net上的RC,所以不知道应该加怎么样的buffer,dc只是根据互联线模型来计算RC,接着加入buffer,不是真实的,只有布线以后我们才可以得到几乎真实的rc。所以在dc综合过程中我们要阻止dc最high fanout net进行insert buffer处理。因此这些没被处理的高

29、扇出net就会引起一些drc或者timing错误,在dc中,dc用价值函数(cost function)来判断这些约束对设计的影响。价值函数=DRC violator和+ timing violator 和。一般的,dc会根据所有drc和timing错误,通过使价值函数趋近等于0来修正这些违规。为了达到效果,dc会每次修正一个路径,然后重新计算价值函数,如果价值函数变小,说明设计被改进了。在介绍如何处理 high fanout net之前,先介绍3个命令。Set_ideal_net (已经被set_ideal_network -no_propagate代替) 忽略port,pin,net上的时

30、序优化(timing optimization),以及drc修正(drc fixxing)。network具有传输型。Set_dont_touch (已经被set_dont_touch_network -no_propagate代替)忽略,port,cell,design,pin上的优化(timing optimization),但是不会忽略DRC。network具有传输型 这样我们在综合的时候就要对high fanout net做一定的约束,让dc不对这些net做优化以及加入buffer。下面分三种情况来说明。1.Clock,对于clock,当我们用create_clock,or creat_generated_clock创建clock的时候,这些clock已经有了ideal_network的属性。Dc已经不会在clock tree上加入buffer,同时也不会计算drc violation,但是del

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1