slide1
Download
Skip this Video
Download Presentation
DC 相关时序概念

Loading in 2 Seconds...

play fullscreen
1 / 67

DC 相关时序概念 - PowerPoint PPT Presentation


  • 239 Views
  • Uploaded on

DC 相关时序概念. 主要内容 . 建立时间与保持时间. 扇入与扇出. 时钟. 常用术语. Clock setup :时间建立关系 tsu :输入建立时间 th :输入保持时间 tco :时钟到输出延时 tpd :管脚到管脚延时 Minimum tpd & tco :最小 tpd & tco Clock Skew :时钟偏斜 最小时钟周期与最高频率 Setup Time :建立时间 Hold Time :保持时间 Latency :延迟 Slack :时间裕量. 设计中常用的约束.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' DC 相关时序概念' - susane


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
主要内容
  • 建立时间与保持时间
  • 扇入与扇出
  • 时钟
slide3
常用术语
  • Clock setup:时间建立关系
  • tsu:输入建立时间
  • th:输入保持时间
  • tco:时钟到输出延时
  • tpd:管脚到管脚延时
  • Minimum tpd & tco:最小tpd & tco
  • Clock Skew:时钟偏斜
  • 最小时钟周期与最高频率
  • Setup Time:建立时间
  • Hold Time:保持时间
  • Latency:延迟
  • Slack:时间裕量
slide4
设计中常用的约束

设计中常用的约束(Assignments或Constraints)主要分为3类:

  • 时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,指导综合和布局布线阶段的优化算法等。
  • 区域与位置约束:主要用于指定芯片I/O引脚位置以及指导实现工具在芯片特定的物理区域进行布局布线。
  • 其他约束:泛指目标芯片型号、接口位置,电气特性等约束属性。
slide5
时序约束的主要作用

提高设计的工作频率

通过附加时序约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。

  • 获得正确的时序分析报告

QuartusII的静态时序分析(STA)工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入时序约束,以便STA工具能输出正确的时序分析结果。

slide6
静态时序分析与动态时序仿真

动态时序仿真是针对给定的仿真输入信号波形,模拟设计在器件实际工作时的功能和延时情况,给出相应的仿真输出信号波形。它主要用于验证设计在器件实际延时情况下的逻辑功能。由动态时序仿真报告无法得到设计的各项时序性能指标,如最高时钟频率等。

  • 静态时序分析则是通过分析每个时序路径的延时,计算出设计的各项时序性能指标,如最高时钟频率、建立保持时间等,发现时序违规。它仅仅聚焦于时序性能的分析,并不涉及设计的逻辑功能,逻辑功能验证仍需通过仿真或其他手段(如形式验证等)进行。静态时序分析是最常用的分析、调试时序性能的方法和工具。
slide9

Launch Edge:

前级寄存器发送数据对应的时钟沿,是时序分析的起点。

Latch Edge

后级寄存器捕获数据对应的时钟沿,是时序分析的终点

clock skew
时钟偏斜(clock skew)

时钟偏斜:指一个同源时钟到达两个不同的寄存器时钟端的时间差别。

clock 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 is the most common cause of internal hold violations.

slide11
skew
  • 实例
  • 由于时钟到每个触发器的互连线长短不一样,造成信号到达clock pin的时间也不一样,触发器也不会同时翻转。Skew的定义就是最长路径减去最短路径的值。
slide12

根据时钟域以及路径关系,skew可以分为global skew,local skew,interclock skew。

  • Global skew是指,同一时钟域,任意路径的最大skew。
slide13

Local skew是指,同一时钟域,任意2个有逻辑关联关系的路径最大skew。

slide14

interClock skew是指,不同时钟域之间路径的最大skew

latency
latency
  • Latency分为source lantency 和 一般的latency。
  • Source latency指的是时钟源到时钟端口的延迟。
  • 一般Latency指的是时钟端口到内部时序器件的时钟管脚的延迟。
  • 一般只考虑latency即可。
latency1
latency对于内部逻辑的影响
  • 下图是不考虑latency的情况
  • 内部逻辑延迟的限度为:

T2-T1-Tinput_delay-Tsetup

slide17
当考虑了latency的时候。
  • 那么留给内部逻辑的最大延迟为:T2’(T2+Tlatency)-T1-Tinput_delay-Tsetup。
  • 会发现留给内部逻辑的延迟会变大,那么会给DC更大的空间来综合。
jitter
时钟jitter
  • 正常的时钟到来时蓝色的时序图。但是由于无法预知的因素,时钟可能提前(粉色)或者延迟(红色)到来,这就是jitter。
  • 提前到来为setup jitter,延迟到来为 hold jitter。
uncertainty
uncertainty
  • DC中把skew和jitter合成一个uncertainty。

用set_clock_uncertainty来设置。

  • 下文中提到的skew指的是合体,即uncertainty。
slide20
最小时钟周期与最高时钟频率

最小时钟周期:

tCLK = Microtco + tLOGIC + tNET + MicrotSU- tCLK_SKEW

tCLK_SKEW = tCD2 - tCD1

最高时钟频率:

fmax = 1 / tCLK

同步电路数据传输模型

slide21
Tips
  • setup slack = (<setup relationship>) - (<maximum clock pin to source register delay> + <tCO of source register> + <register-to-register delay> + <tSU of destination register> - <minimum clock pin to destination register delay>)

同步系统的运行速度 即同步时钟的速度。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间处理的数据量就愈大。

slide22
建立时间与保持时间
  • IC 代码的综合过程可以说是时序分析过程,dc会将设计打散成一个个路经,这些路经上有cell延迟和net延迟,然后dc会根据你加的约束,来映射库中符合这种延迟以及驱动的器件。从而达到综合的目的。
  • setup time 和 hold time是dc所有时序约束的基础。
slide23
setup time即建立时间,也就说数据在时钟到来之前保持稳定所需要的时间。
  • hold time即保持时间,也就是说在时钟到来之后数据需要保持稳定的时间。
slide26
Launch Edge + 前级寄存器Clock path的延时 + 前级寄存器Cell从时钟Pin到数据输出Pin的Net延时(uTco) + Data path的延时

Data Arrival Time:

时钟到达前级寄存器的时刻 + 前级寄存器时钟到后级寄存器数据输入的延迟

slack
Slack

Slack用于表示设计是否满足时序:正的Slack表示满足时序(时序裕量),负的Slack表示不满足时序(时序的欠缺量)。

Slack: Slack is the margin by which a timing 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.

slack = <required maximum point-to-point time> - <actual maximum point-to-point time>

slide34

遵循的原则是信号从Launch edge开始计时,经过一系列的时序路径,到达后级寄存器的数据输入Pin的速度不能太快,时间不能太短,否则会侵占后级寄存器数据输入Pin相对于上一个Latch edge的保持时间。

刚好满足后级寄存器保持时间的数据到达时间是Data Required Time(相对于Latch edge计算),实际的数据到达时间是Data Arrival Time(相对于Launch edge计算)。

显然,在保持时间检查中,Data Arrival Time要大于Data Required Time,否则就会造成保持时间违规。也就是说,Data Required Time是Data Arrival Time的最小值。二者之差就是保持时间的时序余量。

clock to output delay
时钟到输出延时(Clock to output delay)

时钟到输出延时:从时钟信号有效沿到数据有效的时间间隔。

tCO = Clock Delay + MicrotCO +Data Delay

pin to pin delay
管脚到管脚延时(pin-to-pin delay)

管脚到管脚延时tPD:指信号从输入管脚进来,穿过纯组合逻辑,到达输出管脚的延迟。

  • tPD (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.
slide40
指定全局时序约束

时序驱动的编译

全局时钟设置

全局的I/O时序设置

时序分析和报告选项

时序向导

slide41
指定个别时序约束

指定个别时钟要求

个别时序约束

输入最大最小延时

输出最大最小延时

反相时钟

非时钟

tCO要求(最大、最小)、 tSU要求、 tH要求、 tPD要求

剪除时序路径

个别时序约束的对象

单点

点到点

通配符

时序组

slide42
指定个别时钟要求

时钟分类:

独立时钟

衍生时钟

dc path
DC中的路径(Path)
  • start point

1. input port(顶层设计的输入端口)

2.clock pin of sequential cell(触发器的clock pin)

  • end point

1. output port(顶层设计的输出端口)

2.data pin of  sequential cell(触发器的data pin)

slide44
一个设计中基本的路经分为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

slide45
dc中对于建立时间的分析是基于路径的最大延迟dc中对于建立时间的分析是基于路径的最大延迟
  • dc中对于保持时间的分析是基于路径的最小延迟
slide46
例:时序分析案例
  • 给定setup time 和hold time ,要求算出最小时钟周期
  • 假设时钟周期是20,每个触发器的cell 延迟是1, 触发器的建立时间是1, 保持时间是0.5, 分析图中的建立时间和保持时间的slack。
slide48
对于红色路径: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
slide49
分析结论
  • 对于hold time的slack : Tshortest-Thold=8-0.5=7.5
  • Tlongest=11,Tshortest=8
  • 对于setup time的slack:Tclk-Tlongest-Tsetup=20-11-1=8
slide50

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

set input delay
set_input_delay
  • input_delay是设置外部信号到达输入端口的时间,dc会用它来计算留给内部逻辑的空余时间是多少。
slide52
之所以让ClkA和Clk的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的确认是很重要的。这是DC用来确定时间余量(slack)的关键。之所以让ClkA和Clk的时钟周期不一致,主要是用来说明上图中黄色部分的。黄色部分的确认是很重要的。这是DC用来确定时间余量(slack)的关键。
  • 如上图所示,黄色部分已经确实是最小相位差。那么根据input_delay时间以及库中触发器的setup建立时间,可以知道留给内部逻辑的延迟时间是红色部分

Tlogic_delay=Tmin-Tinput_delay-Tsetup。

  • 综合过程中,dc会优化Logic2的时序,以使他达到时序要求。
set output delay
set_output_delay
  • set_output_delay是设置输出端口到数据采集处的延迟。 DC会根它来计算留给内部逻辑的时间。如下图:
drive load
DRIVE与LOAD
  • DC综合是基于路径的,每个路径上都有Cell和net,所以基于路径的综合就是计算路径上的delay和rc(DC是使用互连线模型进行估算)。 
  • 在了解delay和rc的计算时,我们要先了解一下一个cell对于drive(前级)和driven(后级)所用到的模型是什么。
slide55
如图,一个buffer,从前级看过来是一个load(capacitance,想获得这个load,可以通过load_of buffer/a获得),从后级看来是一个drive(resistance)。
  • 电路的的驱动能力是上一级的1/R,即电阻的倒数,驱动能力大,说明看过去的电阻小,也说明这个器件比较大(大器件有较大的驱动能力)。
  • 电路的负载能力是下一级的load(即电容)总和,负载能力大,说明能驱动下级的器件就很多。
  • 大器件是大电容,小电阻,而小器件是小电容,大电阻。理解这些,对于dc综合以及后端APR版图都有很好的操作。
slide56
对于cell的延迟,dc是根据input_transition和out_load对应的查找表来计算的。对于cell的延迟,dc是根据input_transition和out_load对应的查找表来计算的。
  • 对于net的延迟,dc是根据wire_load_model中的fanout_length和resistance,capacitance,area的查找表计算的。
slide57
例如:

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。
slide58
如果扇出是5,在查找表中没有找到fanout_length为5的項,互连线长度将会是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095如果扇出是5,在查找表中没有找到fanout_length为5的項,互连线长度将会是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095
  • 得出了rc,就可以计算出信号的transition时间=2.2RC。
slide59
实际的互联线如下:

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

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

slide60

dc是基于路径分析的

  • 每个路径上有cell延迟和net延迟
    • cell延迟是根据input_transition和out_lod得出的
    • net延迟是根据fanout_length,resistance,capacitanc得出的。
    • 驱动和电阻成反比
    • 负载和电容成正比。
  • fanout影响到load(capacitance),transition,delay
dc design
DC对design建模
  • DC中的约束,其实就是给chip设计一个环境,比如驱动这个chip输入端口的cell,或者这个chip输出端口驱动了哪些单元或者端口接入了哪些负载,以及这个芯片的工艺,电压,温度,等等。
  • 对于一个cell来说
    • 输出端口具有max_fanout属性
    • 输入端口有fanout_load属性
slide63
举例
  • 将一个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.
slide64
如果使用了系统提供的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属性。
max fanout max capacitance
Max_fanout与Max_capacitance
  • Max_fanout检查的是输入端口的fanout_load最大值
  • Max_capacitance检查的是input port or output port or design 的load值。
  • 两者概念不同。
fanout delay
fanout与delay
  • 实例
  • 到buffer的net延迟是2,buffer延迟是1
  • fanout为1时net延迟为3,每增加一个扇出,net延迟增加2
  • 如果一个信号经过这个扇出网络后,那么延迟为:2+1+(3+(8-1)×2)=20;
slide67
如果把扇出结构优化成如下形式:
  • 那么信号经过这个网络后,延迟为:2+1+2+1+(3+(4-1)×2)=15.
  • 那么延迟减少了5。
ad