《DC时序分析.ppt》由会员分享,可在线阅读,更多相关《DC时序分析.ppt(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、主要内容主要内容n建立时间与保持时间n扇入与扇出n时钟常用术语常用术语nClock setup:时间建立关系ntsu:输入建立时间nth:输入保持时间ntco:时钟到输出延时ntpd:管脚到管脚延时nMinimum tpd & tco:最小tpd & tconClock Skew:时钟偏斜n最小时钟周期与最高频率nSetup Time:建立时间nHold Time:保持时间nLatency:延迟:延迟nSlack:时间裕量设计中常用的约束设计中常用的约束n设计中常用的约束(Assignments或Constraints)主要分为3类:时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时
2、序条件,指导综合和布局布线阶段的优化算法等。区域与位置约束:主要用于指定芯片I/O引脚位置以及指导实现工具在芯片特定的物理区域进行布局布线。其他约束:泛指目标芯片型号、接口位置,电气特性等约束属性。时序约束的主要作用时序约束的主要作用n提高设计的工作频率通过附加时序约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。n获得正确的时序分析报告QuartusII的静态时序分析(STA)工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入时序约束,以便STA工具能输出正确的时序分析结果。静态时序分析与动态时序仿真静态时序分析与动态时序仿真n动态时序仿真是
3、针对给定的仿真输入信号波形,模拟设计在器件实际工作时的功能和延时情况,给出相应的仿真输出信号波形。它主要用于验证设计在器件实际延时情况下的逻辑功能。由动态时序仿真报告无法得到设计的各项时序性能指标,如最高时钟频率等。n静态时序分析则是通过分析每个时序路径的延时,计算出设计的各项时序性能指标,如最高时钟频率、建立保持时间等,发现时序违规。它仅仅聚焦于时序性能的分析,并不涉及设计的逻辑功能,逻辑功能验证仍需通过仿真或其他手段(如形式验证等)进行。静态时序分析是最常用的分析、调试时序性能的方法和工具。Path & Analysis TypeLaunch & Latch Edge前级寄存器发送数据对应
4、的时钟沿,是时序分析的起点。后级寄存器捕获数据对应的时钟沿,是时序分析的终点时钟偏斜(clock skew)n时钟偏斜:指一个同源时钟到达两个不同的寄存器时钟端的时间差别。nclock skew:The difference in the arrival time of a clock signal at two different registers, which can be caused by path length differences between two clock paths, or by using gated or rippled clocks. Clock skew i
5、s the most common cause of internal hold violations. n实例 n由于时钟到每个触发器的互连线长短不一样,造成信号到达clock pin的时间也不一样,触发器也不会同时翻转。Skew的定义就是最长路径减去最短路径的值。 Global skew是指,同一时钟域,任意路径的最大skew。n根据时钟域以及路径关系,skew可以分为global skew,local skew,interclock skew。Local skew是指,同一时钟域,任意2个有逻辑关联关系的路径最大skew。interClock skew是指,不同时钟域之间路径的最大ske
6、wnLatency分为source lantency 和 一般的latency。n一般一般Latency指的是时钟端口到内部时序器件的时钟管脚的延迟。nSource latency 指的是时钟源到时钟端口的延迟。n一般只考虑latency即可。latency对于内部逻辑的影响对于内部逻辑的影响 n下图是不考虑latency的情况 n内部逻辑延迟的限度为:T2-T1-Tinput_delay-Tsetupn当考虑了latency的时候。n那么留给内部逻辑的最大延迟为:T2(T2+Tlatency)-T1-Tinput_delay-Tsetup。n会发现留给内部逻辑的延迟会变大,那么会给DC更大的
7、空间来综合。时钟时钟jitter n正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可能提前(粉色)或者延迟(红色)到来,这就是能提前(粉色)或者延迟(红色)到来,这就是。n提前到来为提前到来为,延迟到来为,延迟到来为 。nDC中把skew和jitter合成一个。 用set_clock_uncertainty来设置。n下文中提到的skew指的是合体,即uncertainty。最小时钟周期与最高时钟频率最小时钟周期与最高时钟频率n最小时钟周期:tCLK = Microtco + tLOGIC + tNET + MicrotSU
8、 tCLK_SKEWtCLK_SKEW = tCD2 tCD1n最高时钟频率:fmax = 1 / tCLK同步电路数据传输模型Tipsn同步系统的运行速度同步系统的运行速度 即即同步时钟的速度。同步时钟愈快,同步时钟的速度。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间处理的数电路处理数据的时间间隔越短,电路在单位时间处理的数据量就愈大。据量就愈大。nsetup slack = () - ( + + + - ) 建立时间与保持时间建立时间与保持时间IC 代码的代码的综合过程综合过程可以说是可以说是时序分析过程时序分析过程,dc会将设计会将设计打散成一个个路经,这些路经上有打散成一个
9、个路经,这些路经上有cell延迟和延迟和net延迟,然延迟,然后后dc会根据你加的约束,来映射库中符合这种延迟以及驱会根据你加的约束,来映射库中符合这种延迟以及驱动的器件。从而达到综合的目的。动的器件。从而达到综合的目的。 setup time 和和 hold time是是dc所有时序约束的基础。所有时序约束的基础。 nsetup time即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间。即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间。nhold time 即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间。即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间。 D
10、ata Arrival TimeLaunch Edge + 前级寄存器Clock path的延时 + 前级寄存器Cell从时钟Pin到数据输出Pin的Net延时(uTco) + Data path的延时 时钟到达前级寄存器的时刻 + 前级寄存器时钟到后级寄存器数据输入的延迟 Clock Arrival TimeSlacknSlack用于表示设计是否满足时序:正的正的Slack表示满足表示满足时序(时序裕量),负的时序(时序裕量),负的Slack表示不满足时序(时序表示不满足时序(时序的欠缺量)。的欠缺量)。nSlack: Slack is the margin by which a timin
11、g requirement was met or not met. A positive slack value, displayed in black, indicates the margin by which a requirement was met. A negative slack value, displayed in red, indicates the margin by which a requirement was not met.nslack = - 时钟到输出时钟到输出 n时钟到输出延时:从时钟信号有效沿到数据有效的时间间隔。tCO = Clock Delay + M
12、icrotCO + Data Delay管脚到管脚延时管脚到管脚延时(pin-to-pin delay) n管脚到管脚延时tPD:指信号从输入管脚进来,穿过纯组合逻辑,到达输出管脚的延迟。ntPD (pin-to-pin delay) :The time required for a signal from an input pin to propagate through combinational logic and appear at an external output pin.指定全局时序约束指定全局时序约束n时序驱动的编译n全局时钟设置n全局的I/O时序设置n时序分析和报告选项n时
13、序向导指定个别时序约束指定个别时序约束n指定个别时钟要求n个别时序约束输入最大最小延时输出最大最小延时反相时钟非时钟tCO要求(最大、最小)、 tSU要求、 tH要求、 tPD要求剪除时序路径n个别时序约束的对象单点点到点通配符时序组指定个别时钟要求指定个别时钟要求n时钟分类:独立时钟衍生时钟DC中的路径(中的路径(Path)nstart point 1. input port(顶层设计的输入端口)2.clock pin of sequential cell(触发器的clock pin) nend point 1. output port(顶层设计的输出端口)2.data pin of seq
14、uential cell(触发器的data pin)n一个设计中基本的路经分为4种: path1: input port to data pin of sequential cellpath2: input port to output portpath3: clock pin to data pin of next sequential cellpath4:clock pin to output portn dc中对于建立时间的分析是基于路径的最大延迟n dc中对于保持时间的分析是基于路径的最小延迟 例:时序分析案例例:时序分析案例n给定给定setup time 和和hold time ,要
15、求算出最小时钟周期,要求算出最小时钟周期n假设时钟周期是假设时钟周期是20,每个触发器的每个触发器的cell 延迟是延迟是1, 触发器的建触发器的建立时间是立时间是1, 保持时间是保持时间是0.5, 分析图中的建立时间和保持时分析图中的建立时间和保持时间的间的slack。 n首先要分析路径,找出最长和最短路径,因为dc的综合都是根据约束而得到最短和最长路径来进行器件选择的。所以接下来将图中的所有路径标出。因为没有前级(input_delay)和后级电路(output_delay),我们只分析图中给出的 路径,如下图: n对于红色路径:Td=Tcell+Td4+Td5+Td6=1+4+3+1=9
16、n对于黄色黄色路径:Td=Tcell+Td4+Td5+Td6+Td8=1+4+3+1+2=11n对于路径:Td=Tcell+Td1+Td2+Td3=1+2+3+2=8n对于路径:Td=Tcell+Td7+Td2+Td3=1+2+3+2=8 分析结论分析结论n对于hold time的slack : Tshortest-Thold=8-0.5=7.5nTlongest=11,Tshortest=8n 对于setup time的slack:Tclk-Tlongest-Tsetup=20-11-1=8n对照第一副示意图与此比较,建立时间看D2 ,保持时间看D1,因为同时把Tl和Ts放在一个图例中,看起
17、来可能有些误解:)set_input_delay ninput_delay是设置外部信号到达输入端口的时间,dc会用它来计算留给内部逻辑的空余时间是多少。n之所以让ClkA和Clk的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的确认是很重要的。这是DC用来确定时间余量(slack)的关键。n如上图所示,黄色部分已经确实是最小相位差。那么根据input_delay时间以及库中触发器的setup建立时间,可以知道留给内部逻辑的延迟时间是红色部分n综合过程中,dc会优化Logic2的时序,以使他达到时序要求。Tlogic_delay=Tmin-Tinput_delay-Tsetup。se
18、t_output_delay nset_output_delay是设置输出端口到数据采集处的延迟。 DC会根它来计算留给内部逻辑的时间。如下图:nDC综合是基于路径的,每个路径上都有Cell和net,所以基于路径的综合就是计算路径上的计算路径上的delay和和rc(DC是使用互连线模型进行估算)。 n在了解delay和rc的计算时,我们要先了解一下一个cell对于drive(前级)和driven(后级)所用到的模型是什么。n如图,一个buffer,从前级看过来是一个load(capacitance,想获得这个load,可以通过load_of buffer/a获得),从后级看来是一个drive(
19、resistance)。n电路的的驱动能力是上一级的1/R,即电阻的倒数,驱动能力大,说明看过去的电阻小电阻小,也说明这个器件比较大(大器件有较大的驱动能力)。n电路的负载能力是下一级的load(即电容)总和,负载能力大,说明能驱动下级的器件就很多。n大器件是大电容,小电阻,而小器件是小电容,大电阻。理解这些,对于dc综合以及后端APR版图都有很好的操作。n对于cell的延迟,dc是根据input_transition和out_load对应的查找表来计算的。n对于net的延迟,dc是根据wire_load_model中的fanout_length和resistance,capacitance,
20、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);n比如现在扇出是比如现在扇出是2,根据,根据fanout_length(2,0.046)可以知)可以知道这个道这个是是0.046,然后再根据,然后再根据capacitance,resistence可以得出这个可以得出这个为:为:0.
21、046x1.0,为:为:0.046x0.02。 n如果扇出是5,在查找表中没有找到没有找到fanout_length为5的項,互连线长度将会是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095n 得出了rc,就可以计算出信号的transition时间=2.2RC。 n实际的互联线如下:扇出线上的转换时间根据在版图之后提取的rc参数信息求得:2.2RC=(Rnet+Rout)(Cnet+Cin) n每个路径上有cell延迟和net延迟cell延迟是根据input_transition和out_lod得出的net延迟是根据fanout_leng
22、th,resistance,capacitanc得出的。驱动和电阻成反比负载和电容成正比。 ndc是基于路径分析的 nfanout影响到load(capacitance),transition,delay DC对对design建模建模 nDC中的约束,其实就是给chip设计一个环境,比如驱动这个chip输入端口的cell,或者这个chip输出端口驱动了哪些单元或者端口接入了哪些负载,以及这个芯片的工艺,电压,温度,等等。 n对于一个对于一个cell来说来说输出端口具有输出端口具有max_fanout属性属性输入端口有输入端口有fanout_load属性属性举例举例n如果图中:AND2的输出端口
23、max_fanout是5,输入端口fanout_load是2。buffer输入端口的fanout_load是3n将一个AND2作为design的驱动cell(set_driving_cell),这样就把AND2的max_fanout属性加在了输入端口上。n那么这个AND2的输出端可以接2个AND2或者可以接一个buffer或者可以接一个buffer和一个AND2n如上图所示,则会引起DC产生DRC错误。因为输入端口的fanout_load=2XAND2+buffer=7,超过了AND2的max_fanout2.n如果使用了系统提供的set_max_fanout 5 all_inputs,将会忽
24、略set_driving_cell中cell的max_fanout属性,而使用set_max_fanout属性n如果将一个AND2作为design的负载,那么这个输出端口上的fanout_load属性将会为2ndc中一般的做法是set_fanout_load expr get_attribute slow/and2/a fanout_load *xxx all_outputs,来设置输出端口的fanout_load属性。 Max_fanout与与Max_capacitancenMax_fanout检查的是输入端口的fanout_load最大值nMax_capacitance检查的是input
25、port or output port or design 的load值。n两者概念不同。fanout与与delay n到buffer的net延迟是2,buffer延迟是1nfanout为1时net延迟为3,每增加一个扇出,net延迟增加2n如果一个信号经过这个扇出网络后,那么延迟为:2+1+(3+(8-1)2)=20; n实例n如果把扇出结构优化成如下形式: n那么信号经过这个网络后,延迟为:2+1+2+1+(3+(4-1)2)=15.n那么延迟减少了5。slack n先要了解一下要求时间(required time)和达到时间(arrive time)的概念以及计算方法。 n要求时间(re
26、quired time)n达到时间(arrive time)n n n如果没有特殊说明:代表没有影响因素的理想时钟代表受到latency影响的时钟代表同时受到latency和skew(uncertainty)影响的时钟。 n如果没有特殊说明:代表没有影响因素的理想时钟代表受到latency影响的时钟代表同时受到latency和skew(uncertainty)影响的时钟。 建立时间(建立时间(setup time)的到达时间和要求时间)的到达时间和要求时间n建立时间是分析路径中的考虑到各种最不利因素的最大延迟 n下面分四种情况考虑:输入端口到时序器件的数据端口 时序器件的输出管脚到输出端口时序
27、器件到时序器件输入端口到输出端口 n输入端口到时序器件的数据端口 n图中:要求时间(required time) =T2+Tlatency-Tuncertainty_setup-Tsetup到达时间(arrive time) =T1+Tlantency+Tinput_delay+Tlogic2 时序器件的输出管脚到输出端口 n要求时间=T2+Tlatency-Toutput_delay-Tuncertainty_setupn到达时间=T1+Tlatency+Tcell+Tlogic5 时序器件到时序器件 n要求时间=T2+Tlatency-Tuncertainty_setup-Tsetupn到
28、达时间=T1+Tlatency+Tcell+Tlogic 输入端口到输出端口 保持时间的到达时间和要求时间保持时间的到达时间和要求时间n保持时间的到达时间和建立时间的到达时间是一样的。只是保持时间的要求时间不一样而已.注:红色和粉色表示受注:红色和粉色表示受latency影响,影响,蓝色表示受蓝色表示受uncertainty影响。影响。 1 输入端口到时序器件的数据端口。 n到达时间:Tarrive=T1+Tlatency+Tinput_delay+Tlogicn要求时间:Trequire=T2+Tlatency+Tuncertainty_hold+Thold 2. 时序器件的输出管脚到输出端
29、口n到达时间:Ta=T1+Tlatency+Tcell+Tlogicn要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delay3 时序器件到时序器件n到达时间:Ta=T1+Tlatency+Tcell+Tlogicn要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold4 输入端口到输出端口输入端口到输出端口n到达时间:Ta=T1+Tlatency+Tinput_delay+Tlogicn要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delaySl
30、ack计算:计算:n对于保持时间对于保持时间n对于建立时间:对于建立时间:Slack=要求时间要求时间-到达时间到达时间Slack=到达时间到达时间-要求时间要求时间 ndc在综合高扇出的网络的时候,约束优先级是:在综合高扇出的网络的时候,约束优先级是:1.功能正确功能正确2.DRC(max_transition ,max_fanout,max_capacitance )3.Setup time (max_delay)4.Hold time (min_delay)5. Other.n为了符合为了符合drc要求,要求,dc通常花费很多时间来编译和修正这通常花费很多时间来编译和修正这些些DRC v
31、iolators。 n路径上的cell延迟由input_transition 和output_load(包括扇出pin上的load)决定,这个由查找表可以得到。 nnet延迟是由net上的R,C决定的。在没有布局布线之前,我们不知道实际的R,C是多少,dc根据互联线模型(set_wire_load_model)来计算出R,C。然后根据得到的R,C计算出net上的延迟:其中系数OC是根据操作环境(set_opearting_conditions)中设置的rc树模型得到。nhigh fanout的情况基本有三种:1.时钟clock2.复位reset3.一般信号ndc中对于高扇出net的处理,基本就
32、是加buffer(前提,如果没有对这条net设置一些约束,比如set_ideal_network, set_dont_touch,后面会讲到),以此来减少cell输出端的负载,从而减少transition time 和delay time,以及max_capacitance。n而事实上我们是不希望dc这么处理的,我们希望的是可以在后端版图的时候让后端工具自己加buffer,因为我们不知道真实的high fanout net上的RC,所以不知道应该加怎么样的buffer,dc只是根据互联线模型来计算RC,接着加入buffer,不是真实的,只有布线以后我们才可以得到几乎真实的rc。 n所以在dc综
33、合过程中我们要dc最high fanout net进行insert buffer处理。因此这些没被处理的高扇出net就会引起一些drc或者timing错误,在dc中,dc用价值函数(cost function)来判断这些约束对设计的影响。价值函数=DRC violator和+ timing violator 和。n一般的,dc会根据所有drc和timing错误,通过使价值函数趋近等于0来修正这些违规。为了达到效果,dc会每次修正一个路径,然后重新计算价值函数,如果价值函数变小,说明设计被改进了。 处理处理 high fanout net的主要相关命令的主要相关命令 :nset_ideal_ne
34、twork -no_propagate: 忽略port,pin,net上的时序优化(timing optimization),以及drc修正(drc fixxing)。network具有传输型。nset_dont_touch_network -no_propagate:忽略port,cell,design,pin上的优化(timing optimization),但是不会忽略DRC。network具有传输型 n这样我们在综合的时候就要对high fanout net做一定的约束,让dc不对这些net做优化以及加入buffer。 ,当我们用create_clock,or creat_generated_clock创建clock的时候,这些clock已经有了ideal_network的属性。Dc已经不会在clock tree上加入buffer,同时也不会计算drc violation,但是delay timing 仍然会被计算。不计算drc不是说没有负载。 n对于对于Reset,对于复位高扇出信号,因为没有那些属性,所以要手动设置,set_ideal_network:同样需要手动set_ideal_network