28 STA时序分析 下

本文总结了时序分析的关键概念,包括同步时钟下的DFFsetup/hold检查,异步复位的恢复/去除需求,信号脉冲宽度检查,时钟脉冲门的setup/hold检查,以及DRC设计规则检查。此外,还介绍了celllibrary的不同工艺类型对时序的影响,时钟特性如频率、占空比、相位和输入延迟。文章强调了setup和hold检查的计算方法,以及如何处理来自不同时钟源的时序分析。
摘要由CSDN通过智能技术生成

总结课程的文章:http://t.csdn.cn/fWPf9

目录

1.时序分析的上半部分总结——STA的check point检查类型!

1.同步时钟下的 DFF Setup/hold check ——寄存器setup/hold 检查——DFF时钟端和数据输入端D

2.Async Reset——Set recovery/removal requirement 的 check——DFF时钟端和异步复位端

3.信号脉冲宽度的检查(signal pulse requirement check)—— 时钟和异步复位端 产生的脉冲宽度不能太短

4.时钟脉冲门(clock gate)的setup/hold check——clk_en信号和clk信号之间,en信号

5.DRC(Design Rule Check)的要求——电路的最大电容(capacitance)、电路的翻转时间(transition)、电路的扇出(fanout)

2.时序分析的上半部分总结——cell library简介!

3.时序分析的上半部分总结——时钟特性!

4.STA—静态时序分析—下

4.1 STA术语

4.2 STA的Timing path——路径类型——4种

4.3 STA Start/End Points

5. setup/hold check 计算

5.1 Setup check 计算

1.data_arrive_time 从时钟端开始,使得数据从寄存器D pin到另一个寄存器D pin的时间

2.data_require_time 数据必须在哪个时间之前就要来,最晚时间点,如果data_arrive_time <= data_require_time,就算满足setup检查

3.检查工具的计算

4.总结:数据到达的时间必须小于数据需求时间,也就是数据要在下一个时钟沿抓数据之前到达下一个寄存器且满足下一个寄存器的setup要求。

5.2 Hold check 计算

总结1.0:hold check的是寄存器C不能在当前时钟上升沿抓到寄存器B当前时钟上升沿的数据。

5.3 寄存器的时钟来源于两个不同的时钟源

6.其他基础知识

6.1下约束的TCL,创建一个时钟:

6.2下 input_delay:

6.3对于input_delay和output_delay都可以下最大值和最小值的delay constraint。

6.4 set_false_path不需要检查的地方

6.5 set_multicycle_path——有些时候如data_en保持两个周期

7.高级STA概念


1.时序分析的上半部分总结——STA的check point检查类型!

1.同步时钟下的 DFF Setup/hold check ——寄存器setup/hold 检查——DFF时钟端和数据输入端D

2.Async Reset——Set recovery/removal requirement 的 check——DFF时钟端和异步复位端

http://t.csdn.cn/asbd7,恢复时间和去除时间——异步清零的恢复需求/去除需求。 removal time /recovery time 类似于DFF的setup time / hold time,不同之处在于前者是用来描述异步复位的。 总结:描述异步复位——的 recovery/removal 和DFF寄存器的 setup/hold 相似。

 复习:1.为什么在异步复位/置位端会有 recovery/removal的需求?
假设没有 reset/removal 形成的时间窗口,那么如图中在CK的上升沿,ARST同时生效,此时寄存器是复位?还是将D端的数据寄存到Q?——存在歧义!

3.信号脉冲宽度的检查(signal pulse requirement check)—— 时钟和异步复位端 产生的脉冲宽度不能太短

4.时钟脉冲门(clock gate)的setup/hold check——clk_en信号和clk信号之间,en信号

5.DRCDesign Rule Check)的要求——电路的最大电容(capacitance)、电路的翻转时间(transition)、电路的扇出(fanout)

2.时序分析的上半部分总结——cell library简介!

各种工艺的library至少会提供三种library,slow/typical/fast三种。 在slow工艺下主要关注setup分析,因为信号比较慢,容易setup violation,而在fast的时候主要关注hold的violation。
现在的先进工艺还会提供不同的Vt工艺的cell library,分为:LVT、RVT、SVT( Standard V threshold )、HVT ( High V threshold ) 在每个VT下也至少会给出三种opration conor。 不同的VT工艺下器件的delay是不同的LVT的器件delay是很小的,阈值电压越低,因为饱和电流变小,所以速度性能越高;但是因为漏电流会变大,因此功耗会越大。速度大小按快到慢依次排列为SLVT, LVT, RVT, HVT。 功耗大小却正好相反。
(不要觉得是工艺部分自己就可以不用看了,在修复set up/hold violation的时候,就可以通过改变器件工艺的方式来修复,所以需要知道LVT、RVT、HVT各自的区别)

如果用RVT的工艺角做了一块芯片最高跑到380M频率,而我们想让他跑到400M,那么就可以用更快速的LVT工艺的器件,替换一些critical path 上的器件,这样就能让电路整体的频率高一点,对应的也会牺牲一些功耗的代价。HVT什么时候用呢,在那些delay很小不是critical path的路径上把RVT的一些器件换成HVT的,在不影响电路速度的情况下就可以降低功耗。

对于一个cell的延迟,它延迟具体取多少,在cell library里是有具体设置显示的,并且他的查找方式是通过查找表的形式来的。

DRC在检查DC里面max capacitance和max loading 的设置时,最大值不能超过类似上面表的cell library规定的最大值。

3.时序分析的上半部分总结——时钟特性!

同步时钟是能够明确定义多个时钟间如下关系的时钟:

① 时钟频率
② 时钟高低电平的持续时间(duty cycle)
③ 各个时钟的相位(waveform)
④ 时钟的input latency

异步时钟不能明确定义多个时钟间以上关系的时钟源。 clock有很多参数,频率、占空比等,这里介绍一下和时钟有关的参数。 clock period (时钟周期):芯片上的时钟为了准确,一般都是由晶振生成。

clock jitter :就是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。,这个一般问题不大,因为产生jitter的是晶振,可能晶振这个时钟周期为100ns,下一个时钟周期为101ns,产生了1ns的jitter,但是这也不会对时序有很大的影响,因为晶振是时钟树的源头,寄存器A有jitter,寄存器B也有jitter,大家都有clock jitter。

transition time:时钟的翻转不是直上直下的,其实有一个传输延时,传输延时定义是从时钟的10%~90%所花的时间(上升传输延时)和从时钟的90%~10%所花的时间(下降传输延时)。

phase 相位:第一个上升沿和第一个下降沿的位置,相对于零时刻的时间。

input latency:输入终点相对于时钟源头的延迟,latency,(走线导致的延时)

clock skew:clock tree 到不同的寄存器的距离是不同的,因为这些距离的不同到达寄存器的时间也不同,同一个时钟的同一个沿,到达不同寄存器的时间差异称为clock skew。

clock uncertainty:clock jitter + pessimistic (悲观量)

4.STA—静态时序分析—下

4.1 STA术语

port:顶层设计的端口
pin:input/output of a cell(not the top design)

4.2 STA的Timing path——路径类型——4种

STA Timing Path:① 输入到寄存器 ② 寄存器到输出 ③ 寄存器到寄存器 ④ 输入到输出

1.输入——组合逻辑——输出:
2.input——(组合逻辑)——register寄存器:需要check这条路径的Timeing check能不能过!与之前check的种类不一致,这只是一条path的check! 
3.内部:从一个元件如sequential cell——到另一个元件如register
4.输出——会定义output delay— —如 clk: ck to Q 然后经过sequential 到output,能否满足output delay

4.3 STA Start/End Points

Start Points:input ports、Clock pins of sequential cells(clocks 可以推广到clock,工具会自动去找时钟接到的寄存器)
End Points:output ports、Data pins of sequential cells、Clock pins of sequential cells(clocks,时钟永远是起点,但是可以-2,就会在把时钟接的第二个模块作为终点吧(from clock0 - to clock1))

5. setup/hold check 计算

setup 的要求、setup 行为上的解释 如果有两个寄存器相连,setup 满足要求的条件是:前一个寄存器A在clockA 第一个上升沿发出的数据,能被后一个寄存器B在clockB第二个上升沿抓到(即二者的延迟在一个时钟周期以内,如果不能被clockB第二个上升沿抓到,那就是delay太大了)。

hold 的要求、hold 行为上的解释 如果有两个寄存器相连,hold满足要求的条件是:前一个寄存器在clockA 第一个上升沿发出的数据,不能被后一个寄存器在clockB第一个上升沿抓到(如果被第一个上升沿抓到,那就是delay太小了,数据很快就到第二个寄存器了)。

5.1 Setup check 计算

如果有两个寄存器相连,setup 满足要求的条件是:前一个寄存器A在clockA 第一个上升沿发出的数据,能被后一个寄存器B在clockB第二个上升沿抓到(即二者的延迟在一个时钟周期以内,如果不能被clockB第二个上升沿抓到,那就是delay太大了)。

数据到达的时间必须小于数据需求时间——setup检查要求数据比时钟先到
选的最长路径——路径的data arrive到达时间最大——但也满足小于等于data require需求的时间——则说明,到达时间更端的路径也都满足 setup check

1.data_arrive_time 从时钟端开始,使得数据从寄存器D pin到另一个寄存器D pin的时间

如图所示的紫色路径数据从clk端,到达寄存器C的D端所需要的时间为: data_arrive_time = clk_latency(外部时钟过来) + clk_path1_delay + ck_to_q + logic_delay; 数据到达时间为时钟的延迟、时钟从外部到clk端的路径延迟、从clk端到数据输出有一个延迟、再加上组合逻辑延迟

2.data_require_time 数据必须在哪个时间之前就要来,最晚时间点,如果data_arrive_time <= data_require_time,就算满足setup检查

相应的寄存器C还有一个数据要求时间,如果数据延迟小于require那就没问题,如果大于require(数据来晚了)就会出现setup violation。 data_require_time = clk_period (因为是CLKA的0号时钟沿 在CLKB的1号时钟沿)+clk_latency + clk_path2_delay - dff_set_up (DFF 查找表,查到DFF setup)- clk_uncertainty; 数据需求时间:加一个时钟周期 clk_period,因为C要求的数据是上一个周期的数据。

3.检查工具的计算

绿色的部分是一样的

 

 解决:
1.等式右边要大于等于左边——clk_period时钟周期可以通过调节时钟PLL——减小时钟频率——如果发现芯片能够符合要求了——等式满足,说明很有可能就是 setup check不满足了
2.PLL调不了,把ck_to_q 变小、dff_setup减小(负的) ——PVT——调节温度(降低)和电压等等(1V —— 改1.05V试试)

4.总结:数据到达的时间必须小于数据需求时间,也就是数据要在下一个时钟沿抓数据之前到达下一个寄存器且满足下一个寄存器的setup要求。

5.2 Hold check 计算

如果有两个寄存器相连,hold满足要求的条件是:前一个寄存器在clockA 第一个上升沿发出的数据,不能被后一个寄存器在clockB第一个上升沿抓到(如果被第一个上升沿抓到,那就是delay太小了,数据很快就到第二个寄存器了)。——所以这里不会存在 clk_period这一项——所以数据要来的比时钟慢——因为B不能在第一个上升沿抓到A第一个上升沿的数据(?还未更新)

真实数据到达的时间必须大于数据需求时间——hold检查要求数据比时钟后到
因为真实想要传输的数据,需要在第一个寄存器的一个周期以后,即第二个寄存器的第二个时钟周期才采集数据。
所以选一条最短的路径——最短的路径的数据来的很早——也能满足数据hold的需求——那最长的路径也会满足hold的需求

data_arrive_time = clk_latency + clk_path1_delay + ck_to_q + logic_delay; 数据到达时间为时钟的延迟、时钟从外部到clk端的路径延迟、从clk端到数据输出有一个延迟、再加上组合逻辑延迟。

hold check的是寄存器C不能在当前时钟上升沿抓到寄存器B当前时钟上升沿的数据。

data_require_time = clk_latency + clk_path2_delay + dff_hold + clk_uncertainty;

 让不等式更容易成立: 方法ck to q 和 logic delay放大——PVT!!!——降低电压、增加温度

总结1.0:hold check的是寄存器C不能在当前时钟上升沿抓到寄存器B当前时钟上升沿的数据。

总结:数据到达时间data arrive time要比数据要求时间data required time长,因为是同一个时钟的数据,数据不能到的太快,不能在同一个时钟沿被后一个寄存器抓到,数据实际的到达时间要在窗口之后,不能被同一个时钟沿抓到。

setup check的时候,要走一个组合逻辑路径比较长的路径,这样容易setup violation hold check的时候,要走一个组合逻辑路径比较短的路径,这样容易hold violation 就是在两种check阶段都要考虑最坏情况。

5.3 寄存器的时钟来源于两个不同的时钟源

上面讲的setup check和hold check 针对的是来自同一个时钟的check,如果两个寄存器的时钟来源于两个不同的时钟源

对于setup check 还是用他的含义去理解,A寄存器在一个时钟沿的数据,在B寄存器的一个时钟沿抓到,但是两个时钟是异步时钟,不确定相位,所以综合工具就会找两个时钟相距最近(这里最近是找waveform波形最近的地方)的地方去做check。

异步时钟的STA分析里的hold分析,取setup check point 前一个上升沿作为hold check point,hold间隔最近的地方做hold check,如下图:

setup hold都会去找最差的情况去做check。

两个不同源的时钟,我们不希望他去分析STA,就可以下false_path,因为很多这样的violation是假的violation,我们不希望花很多的算力优化这些不会出错的地方上,就可以下false_path

6.其他基础知识

两个不同源的时钟,我们不希望他去分析STA,就可以下false_path,因为很多这样的violation是假的violation,我们不希望花很多的算力优化这些不会出错的地方上,就可以下false_path

6.1下约束的TCL,创建一个时钟:

6.2下 input_delay:

input_delay 下的是外部信号的delay,内部还有的余量是clock_period - input_delay,一般在逻辑的顶层,下的外部逻辑的delay。 比如:set_input_delay -clock CLK $dly [get_ports D]

下 output_delay也是一样:

 6.3对于input_delay和output_delay都可以下最大值和最小值的delay constraint。

input_delay 最大值用于setup分析,output_delay最小值用于hold分析。——外部影响!

 看第二个时钟上升沿,在第二个时钟上升沿过了2ns后数据开始不稳定,因为clock delay最快是2ns,过了6ns后数据就稳定了,因为时钟最大delay是6ns,超过这个6ns后,数据就稳定了。

如果没有分别设置 max数值和min数值,那么综合工具就默认两个数值相同。

set_output_delay ,是设置端口外部的delay,所以留给内部的delay就只有T-$delay,当然这里注意:约束的output_delay也可以是负数,负数的意思就是,模块内部连接到外部部分的delay,必须大于这个负数的绝对值,比如:

set_output_delay -clock CLK -min -3 [get_ports OUT]

设置了output_delay是负数,那么你内部逻辑到output的delay必须大于3ns,这样,内部delay+外部delay > 0 才合理。可以理解为外部接了一个寄存器,然后寄存器的hold是3ns,在同一个时钟沿,前一个寄存器在该时钟沿的数据不能被后一个寄存器抓到,所以数据到后一个寄存器的delay必须大于该寄存器的hold time,否则就出现hold violation。设置外部delay为负数,其实目的是为了约束内部delay 必须大于这个负数的绝对值

6.4 set_false_path不需要检查的地方

如果我们下了这个路径,意思就是不让工具做STA分析, 例如:set_false_path -from A -to B ※A→B之间的路径不check timing;但是B→A之间的路径仍需要进行check timing。

6.5 set_multicycle_path——有些时候如data_en保持两个周期

如果data数据需要稳定两个周期,也就是setup分析的时候,前一个寄存器第一个时钟上升沿的数据可以被后一个寄存器第三个时钟上升沿抓到,不希望setup分析按默认的来,那就下set_multicycle_path,例如:set_multicycle_path 2 -setup -from A -to B; set_multicycle_path 1 -hold -from A -to B;

 

 一般来说,如果用set_multicycle_path,setup约束和hold约束往往成对出现。比如上面设置了setup延迟一个周期(set_multicycle_path 2),还设置hold提前一个周期(set_multicycle_path 1)。这意思就是,数据在第一个上升沿发出,能被下一个寄存器第三个上升沿抓到(setup满足),数据在第一个上升沿发出,不能被下一个寄存器同一个上升沿抓到(hold满足),如果set_multicycle_path 2 -hold -from A - to B 那就是 数据在第一个上升沿发出,不能被下一个寄存器第二个上升沿抓到(hold满足)

7.高级STA概念

on-chip-Variation:OCV

同一个芯片,不同位置的cell的PVT不一致,在STA分析setup的时候,在计算data_arrive_time时,故意用延迟大一点的工艺,让数据延时变大,而在下一个寄存器的时钟路径上用延时小的工艺,即让setup更容易违例。

 但是这种方式有些过于悲观,原本能跑很高频率的电路,给这样悲观的分析,跑了一个低频率,所以实际上一般都是在延迟的基础上加一个5%的悲观量,这个具体多少人为设定。

common-Path-Pessimism-Remove :CPPR

 在共同的clock路径上,cell的delay是一样的。比如计算setup的时候走了一条clock path经过了一个buffer,计算下一个寄存器的data_require_time的时候走了另一条clock path也经过了这个buffer那么两条路径都经过了这个buffer,按照OCV,我们不可能给这个buffer同时用好的工艺和坏的工艺来做悲观,所以这种情况下就可以把这个共同路径上的cell设为同样的工艺,即同样delay。

下节内容:

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STA时序分析相关书籍有很多,以下介绍几本比较常用的: 1.《ASIC和FPGA设计的时序分析和优化》 该书由加州大学圣地亚哥分校教授Edward A. Lee所著,详细介绍了ASIC和FPGA设计的时序分析和优化技术。书中介绍了从时钟分析到时序优化的整个设计过程,内容丰富、通俗易懂,适合初学者和从事ASIC和FPGA设计的工程师阅读。 2.《时序分析与优化:原理、工具与方法》 该书由美国东北大学教授Steven M. Rubin所著,介绍了时序分析和优化技术的原理、工具和方法,涵盖了电子设计自动化(EDA)工具、时钟与时序分析、信号完整性分析、时序优化等方面。深入浅出地讲解了时序分析与优化的基本概念和技术,是一本较为综合的时序分析与优化参考书。 3.《高速数字系统的时序设计》 该书由美国约翰·霍普金斯大学教授Timothy J. Schultz所著,主要介绍了高速数字系统的时序设计技术。书中涉及了数字系统的时序分析、时钟布局、时序优化、稳定性分析等方面的内容,并附有大量的实例,使读者更好地理解和掌握高速数字系统的时序设计。 以上是一些比较常用的STA时序分析相关书籍,读者可以根据自己的需求选择适合自己的参考书。 ### 回答2: STA (Static Timing Analysis)时序分析是集成电路设计中必不可少的一道工序,其主要任务是计算设计的最坏时延、时序路径、安全裕量等信息来保证芯片的工作速度和正确性。在STA时序分析这个领域中,有许多值得关注的书籍,以下是其中的几本: 1.《STA和相关的时序分析方法》:本书全面介绍了STA和相关的时序分析方法,从基本概念到实际应用都有详细的阐述,非常适合初学者。 2.《ASIC和FPGA的时序分析:基础和实践》:本书首先介绍了时序分析的基础知识,然后介绍了ASIC和FPGA平台的不同点,分别从不同平台的角度讲解了时序分析的相关内容。 3.《高速信号传输与信噪比分析》:本书主要介绍了高速信号传输技术及其相关问题。其中,有一部分内容是关于时序分析的,非常值得一看。 4.《时序分析:原理与实践》:本书从初级到高级的层次分别介绍了时序分析的原理和实践。书中还给出了大量的实例,有利于巩固理论知识并提高实践能力。 以上是我对STA时序分析相关书籍的一些看法,望能对大家有所帮助。 ### 回答3: STA时序分析是硬件设计中非常重要的工具。它可以评估电路中的信号传输速度和准确度,从而确保电路的可靠性和稳定性。在学习STA时序分析时,需要找一些相关的书籍来帮助自己掌握理论和实践技巧。 以下是一些推荐的STA时序分析相关书籍: 1. 《时序分析与优化:基于IR的方法》(Timing Analysis and Optimization:Based on IR Method)。 这本书是由美国加州大学伯克利分校的教授Jin Hu和理查德·欧文斯(Richard Owens)合作编写的。它主要介绍了基于IR的时序分析和优化技术,从而为读者提供了一个深入了解STA的框架。书中包含了各种不同的技术,包括时序图、时序检查、时序优化等。读者可以通过阅读这本书来掌握STA的核心概念和技术。 2. 《高速数字信号传输:理论与STA应用》(High-Speed Digital System Design: A Handbook of Interconnect Theory and Design Practices with Emphasis on ISI Mitigation and Signal Integrity)。 这本书是由美国加州理工学院教授埃里克·韦斯特曼(Eric Westerman)编写的。它主要介绍了高速数字信号传输方面的理论和技术,并强调了如何减轻ISI和保持信号完整性。这本书不仅提供了读者理解高速数字信号传输的关键概念,还包含了实践中常见的STA技术。 3. 《数字IC时序与分析》(Digital IC Timing and Analysis)。 这本书是由美国加州大学圣塔芭芭拉分校的教授Christophe Basso编写的。它主要介绍了数字IC时序和STA的理论和实践技能。这本书具有清晰的结构和易读的写作风格,涉及了时序设计基础原理、设计验证方法和常见问题的排查等内容。它为读者提供了全面理解数字IC设计的核心知识。 通过阅读以上任何一本书籍,你可以深入了解STA时序分析的基础概念、技术和实践技巧,从而更好地应用这一工具来提高电路设计的可靠性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sean--Lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值