搜档网
当前位置:搜档网 › Design Complier 使用详解

Design Complier 使用详解

Design Complier 使用详解
Design Complier 使用详解

1DC 概论之一setup time与hold time(1)

ic代码的综合过程可以说就是时序分析过程,dc会将设计打散成一个个路经,这些路经上有cell延迟和net延迟,然后dc会根据你加的约束,来映射库中符合这种延迟以及驱动的器件。从而达到综合的目的。dc的所有时序约束基础差不多就是setup time 和 hold time。可以用下面的图片说明:

所谓setup time即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间,hold time 即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间。在深入建立时间和保持时间之前。先了解下dc中的路经以及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 sequential cell

path2:input port to output port

path3:clock pin to data pin of next sequential cell

path4:clock pin to output port

所有的设计也就这四种类型的路径。

另外一种就是带反馈的,也就是本身的clock pin to data pin 。

有了路径的概念之后,我们可以分析更复杂的setup time 和 hold time 。 dc中对于建立时间的分析是基于路径的最大延迟;而对于保持时间的分析是基于路径的最小延迟。

看下面一个例子:

这个是给定setup time 和hold 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

对于黄色路径: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的计算,可以体会下面的示意:

错误!

错误!

对照第一副示意图与此比较,建立时间看D2 ,保持时间看D1,因为同时把Tl 和Ts 放在一个图例中,看起来可能有些误解:)

有空会继续讨论setup time 和hold time ,下次讨论将包括clock skew 和input delay ,output delay 在其中。

2 DC 概论二之fanout 与skew

Dc 综合是基于路径,每个路径上都有Cell 和net

,所以基于路径的综合就是计算路径上的delay 和rc (dc 是使用互连线模型进行估算)。

在了解delay 和rc 的计算时,我们要先了解一下一个cell 对于drive (前级)和driven (后级)所用到的模型是什么。如下图,一个buffer ,从前级看过来是一个load (capacitance ,想获得这个load ,可以通过load_of buffer/a 获得),从后级看来是一个drive (resistance )。电路的的驱动能力是上一级的1/R,即电阻的倒数,驱动能力大,说明看过去的电阻小,也说明这个器件比较大(大器件有较大的驱动能力)大器件是大电容,小电阻,而小器件是小电容,大电阻。理解这些,对于dc 综合以及后端apr 版图都有很好的操作。

对于cell 的延迟,dc 是根据input_transition 和out_load 对应的查找表来计算的。 对于net 的延迟,dc 是根据wire_load_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,resistence可以得出这个互连线的电容为:0.046x1.0,互连线电阻为:0.046x0.02。

如果扇出是5,在查找表中没有找到fanout_length为5的項,互连线长度将会是

得出了rc就可以计算出信号的transition时间

实际的互联线如下:

扇出线上的转换时间根据在版图之后提取的rc参数信息求得:

2.2RC=(Rnet+Rout)×(Cnet+Cin)

无论如何,要记住的就是dc是基于路径分析的(怎么划分路径请参考另一篇:https://www.sodocs.net/doc/e011068762.html,/logs/20463915.html),每个路径上有cell延迟和net延迟,而cell延迟是根据input_transition和out_lod得出的,net延迟是根据fanout_length,resistance,capacitanc得出的。驱动和电阻成反比,负载和电容成正比。

由上面可以知道fanout 影响到load (capacitance )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_fanout 是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 的负载,那么这个输出端口上的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个与门的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;如果把扇出结构优化成如下形式:

那么信号经过这个网络后,延迟为:

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个有逻辑关联关系的路径最大skew 。 interClock skew 是指,不同时钟域之间路径的最大skew

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2009,版权所有,仅供试用。

另外还有一个useful skew

。本来打算在setup time 和hold time 中讲解。这里先大概说下 如下图:时钟周期为10ns ,各时钟路径延迟如下:可以看到有一条路径的slack 为-1,说明这条路径违规。可以看到与这条路径相关的skew 是T3-T2=-1ns 。

下面我们利用useful skew 向前面一个slack 比较充裕的路径(slack=2ns )借点time ,来修正现在这条路径。如下图:

经过useful skew ,修正了原来的violator 。

这就是useful skew 的作用,可以向前,或者向后接time 来修正violator

本节告一段落,欢迎访问:) 接下来会讲下setup time 和 hold time (二)加入input_delay output_delay 以及skew

3 DC 概论三setup time 与hold time 之二

前面一篇讲了基本的建立时间和保持时间以及时序路径划分。在这篇开始之前,先介绍一下很经典而且会时常用到的用来讲解的一个电路图,如下。这篇文章的讲解也会给予这个电路图,讲解的时候我把电路图分割成需要的部分:)

既然我们知道了建立时间和保持时间的含义,这篇主要是根据工厂提供的标准单元库中时序器件的建立时间和保持时间来预估我们的约束对设计的影响,是否满足时序要求,简单点就是说,时序有没有violator 。

是设置外部信号到达输入端口的时间,dc 会用它来计算留内内部逻辑的空余时间是多少。

之所以让ClkA 和Clk 的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2009,版权所有,仅供试用。

确认是很重要的。这是DC用来确定时间余量(slack)的关键。如上图所示,黄色部分已经确实是最小相位差。那么根据input_delay时间以及库中触发器的setup建立时间,可以知道留给内部逻辑的延迟时间是红色部分Tmin-Tinput_delay-Tsetup。综合过程中,dc会优化Logic2的时序,以使他达到时序要求。

同样set_output_delay是设置输出端口到数据采集处的延迟。如下图:

DC会根他来计算留给内部逻辑的时间。

这里还是要强调一下不同频率的问题:)

介绍完了input_delay和output_delay,以及skew(上篇:https://www.sodocs.net/doc/e011068762.html,/logs/20563101.html)

在分析时间余量之前再介绍下时钟的latency。

Latency分为source lantency 和一般的latency。

Source latency 指的是时钟源到时钟端口的延迟。

Latency指的是时钟端口到内部时序器件的时钟管脚的延迟。

一般只考虑latency即可。

再看下latency对于内部逻辑的影响.下图是不考虑latency的情况:

不考虑latency

内部逻辑延迟的限度为T2-T1-Tinput_delay-Tsetup。

当考虑了latency的时候。D1上的clock会变成时序图中的红色部分

那么留给内部逻辑的最大延迟为:T2’(T2+Tlatency)-T1-Tinput_delay-Tsetup。会发现留给内部逻辑的延迟会变大,那么会给DC更大的空间来综合。

同样如果ClakA上面如果也设置了Latency在分析slack的时候也要算进去。

顺便介绍一下时钟的jitter,如下图

正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可能提前(粉色)或者延迟(红色)到来,这就是jitter。提前到来充为setup jitter,延迟到来充为 hold jitter。

DC中把。用set_clock_uncertainty来设置。

下文中提到的skew指的是合体,即uncertainty。

Uncertainty分为setup和hold,顾名思义,如上图理解即可。

4DC概论四setup time 与 hold time 之三

下面开始正式分析时间余量slack。其实有了上面的知识,只要稍微说明下大家都会很明白。在介绍slack之前,我们要先了解一下要求时间(required time)和达到时间(arrive time)的概念以及计算方法。

如果没有特殊说明,黑色clock代表没有影响因素的理想时钟,红色(粉色)clock代表收到latency影响的时钟。蓝色clock代表同时受到latency和skew(uncertainty)影响的时钟。

对于建立时间(setup time)的到达时间和要求时间。

在分析前,记住,建立时间是分析路径中的考虑到各种最不利因素的最大延迟,打个比方:

前面一级用尽最大程度向后推(最大的延迟),本级就近打力气向前顶(最大不确定因素)。然后看中间有没有漏气(slack为负,时序违规)。

1,输入端口到时序器件的数据端口。

上图中

要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup

到达时间=T1+Tlantency+Tinput_delay+Tlogic2

2,

上图中:

要求时间=T2+Tlatency-Toutput_delay-Tuncertainty_setup 到达时间=T1+Tlatency+Tcell+Tlogic5

3.时序器件到时序器件

上图:

要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup 到达时间=T1+Tlatency+Tcell+Tlogic

4,输入端口到输出端口

如上图:

要求时间=T2+Tlatency-Tuncertainty_setup-Toutput_delay 到达时间=T1+Tlatency+Tinput_delay+Tlogic

我们再来看下保持时间,保持时间的到达时间和建立时间的到达时间是一样的。只是保持时间的要求时间不一样而已. 保持时间类似于龟兔赛跑:

系统要求时间就是尽可能的向后,而线上信号就是追那个要确定的时间,追上了,就没问题,追不上问题就有了。

说明:红色和粉色表示受latency 影响,蓝色表示受uncertainty 影响。 1. 输入端口到时序器件的数据端口。

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2009,版权所有,仅供试用。

2.

面相中的十大凶相都有这些,你知道吗,看完该注意了

面相中的十大凶相都有这些,你知道吗,看完该注意了 谓的面相‘五官’,指的就是‘耳、眉、眼、鼻、口’等五种人体器官。面相就是一个人所具有的独特气质,而成为形或色表现于面上,给人的一种感受。接下来为大家详细介绍面相算命图解大全。面相可分为三庭看,人的眉以上是上庭,人的眉至鼻头是中庭,人的鼻头以下就为下庭。面部三庭要均匀。即额头、眉眼鼻、嘴与下巴的比例要均匀,整个面部显得大方磊落。若是额形生得略高阔饱满,则代表少年运佳,但额不能太高,过高会克夫,太低则少年运差,当然没法早嫁。在面部五官之后,再细分便是十二宫。这十二个宫位囊括了面部所有的特性和吉凶。第一宫:命宫,又为愿望之宫。麻衣曰:其居两眉间,山根之上,为印堂。第二宫:财帛宫,位于土宿,包括天仓、地库、金甲、井灶。主察财运。第三宫:兄弟宫,又称交友宫。麻衣曰:位居两眉。主交友运。第四宫:田宅宫,田宅宫,位于两眼,及上眼睑。主家业运第五宫:男女宫,又称子女宫。麻衣曰:位于两眼之下,又称为泪堂。看子嗣运。第六宫:奴仆宫,麻衣说它位居地阁,重接水星。看管理运。第七宫:妻妾宫,也可以称为夫妻宫,就在眼尾。第八宫:疾厄宫,一说是山根位,一说是年寿位,建议以鼻梁统看。第九宫:迁移宫,迁移者,位居眉角。古相士,以迁移宫的位置看人阴阳宅状况。第十宫:官禄宫,

官禄者,为居中正,上合离宫。反应人的禄命官运。第十一宫:福德宫,福德者,位居天仓,牵连地阁。看福禄之运。第十二宫:父母宫,便是额头的日月角。主看父母的福祸疾厄。看面相,形体外貌、精神气质、举止情态皆可一视而察,情人、恋人、夫妻、同事、朋友之间、感情总会有变化的、是相互信任、倾慕也可以从面相看出来。额头眉毛之间只有一道纵纹。这种面相在相学中被称为天柱纹。有此面相的人个性都很顽强。是属于做事不达目的绝不会放弃,对利益也是分得很清楚。一般来讲他们是不做对自己无利的事情。这样的人不但严以律己。同时对别人的要求也非常严格。但还有就是是这种面相的人有一个特征,那就好是这道纵纹平时是不会出现。当他的身心俱疲的时候,这道皱纹才会出现。鼻子的上部这些部位若是出现了数条横纹的人。有此面相特征者对事物都会表现出十足的热情。甚至可以说是充满激情。不仅是做事情又积极又主动。待人处事也是持着一颗平常心。此外,如果是说笑时出现这种皱纹的人。一般性格都是较为温和。缺点就是比较好管别人的事情。也常常为此惹祸上身。 1、男人的眉毛中间稀疏杂乱、毛形逆生,是为乱性之相, 情绪十分不稳定,伴有较重的暴力倾向。-2、双眉过低而压眼,是为心性阴沉扭曲而走极端。-3、女子眉过粗浓,不仅一生婚姻难成,且有妨夫。-4、印堂过窄小,难容两指的人,一生运势不顺且多灾厄。-5、女子双颧露骨而突起,对夫运

14种鼻型图解

26种面型算命图解 侧面观察 1、凸面型 上停位居前额,代表十五至三十岁、父母缘分、思想智慧等事。从侧面观看,这种面型的额头是向后倾斜,表示思想敏捷,下巴向后退缩,不是行动迅速。 但一个人思想、行动都迅速,则其人是一个容易冲动的人 2、凹面型 这种面型的人额头与下巴皆凸出,形成中央鼻子部位凹入 这种人思想、行动都慢;但有忍耐力,不会轻易冲动,给人感觉城府很深,不轻易向他人吐露心声。 3、直面型 直面形是前额与下巴皆没有凸出或退缩,这种面型的人思想与行动都不会急躁或太慢,做任何事都会按部就班,从容面对。 4、额凸下巴退缩 额凸代表思想慢,下巴退缩则代表行动快。 这种面相的人思想慢而行动快,其行动往往未经深思熟虑,所以常有错误的抉择。 5、额斜下巴凸

额斜是思想迅速,下巴凸出是行动缓慢,这种人碰到任何问题都会立即得到思想是回应,但不会马上行动,而会慢慢地行动,大部分人都是这种下巴。 正面观察 正面观察面型的方法较侧面多,有西洋骨相学的三分法,中国的五分法、十分法 其实三分法与五分有许多相同之处,三分法是以人类的思想、行动、物欲享受划分种类,而十分法只是把三分发再细致分划为十种。 三分法 1、思想型 思想型的人其特点是上额广阔而高,下巴尖而小,形成一个倒三角形。 这种形格的人身材一般都属细小、腰部狭窄、手一般略长、面色带白、头发幼而密。 「思想型」这正是推动他们走向成功之路的因素;所以很多科学家、研究家在未成功之前常常会给人行为疯狂、不切实际之感觉。 这种形格的人适宜做科学研究、教育、建筑师、设计师或数学家、分析家等工作。 2、运动型

运动型的人特点就是颧骨高耸,鼻形长而鼻梁有节,腮骨显露,前额一般较低而额上有横纹、面色带黑、头发粗而多、身材高大强壮。其性格特点是忍耐力强,有冒险精神,有责任心,敢作敢为,刻苦耐劳。 这种面型的人最适合从事劳动工作,如工程师、冒险家、探险家、军人、警察或运动员等 3、享受型 享受型的人其特点是颐部园肥,前额较窄小,形成一个正三角形或圆形的面。鼻形较小,鼻头园而有肉,头发幼而疏,面色略微带红,手脚较短,脸部特别肥大,肉多骨少。 这种人处事圆滑,交际手腕强。这种人最适合经商 以上三种形质,只是基本形而已。因为每一个人同样会兼有思想型、运动型及享受型的特征,只是多寡而已,但最好是三种形质发展平衡,这样可工作不忘娱乐,娱乐不忘工作。 如果思想型过重的话,这种人每天只是充满幻想,不肯面对现实,容易引发神经衰落及头痛病等病症,如果再加上整个脸型搭配失宜,如眉粗,眼无神,鼻形短,这样的话,实际谋生能力多有问题。 如果运动型过重的话,则其人精力充沛,行事冲动,喜欢用武力解决问题。如果再加上形质配合不佳,如鼻形不端正,额骨凸露或低,眼神流露等,则其人大多从事低下的劳动工作,只能温饱而已,老来

相关主题