>
首页 » 技术文章 » 静态时序分析(Static Timing Analysis)基础(5)

静态时序分析(Static Timing Analysis)基础(5)

作者:  时间:2009-01-09 19:46  来源:52RD手机研发

前言

在制程进入深次微米世代之后,晶片(IC)设计的高复杂度及系统单晶片(SOC)设计方式兴起。此一趋势使得如何确保IC品质成为今日所有设计从业人员不得不面临之重大课题。静态时序分析(Static Timing Analysis简称STA)经由完整的分析方式判断IC是否能够在使用者指定的时序下正常工作,对确保IC品质之课题,提供一个不错的解决方案。在「静态时序分析(Static Timing Analysis)基础及应用(上)」一文中笔者以简单叙述及图例说明的方式,对STA的基础概念做了详尽的说明。接下来,就让我们藉由实际设计范例来了解STA在设计流程的应用。

设计范例说明

设计范例为一个32bit x 32bit的Pipeline乘法器,其架构如图一所示。Pipeline共分3级,电路之输出输入端皆有暂存器储存运算数值。

图一

依据Cell-based设计的方式,首先以硬体描述语言设计图一之电路。接下来实作此电路,进行合成(Synthesis)及布局与绕线(P&R)。并在实作的各步骤后进行静态时序分析,确认时序规格是否满足。实作及验证所用到的软体及设计资料库如下所示:

l    合成:Synopsys? Design Compiler

l    布局与绕线:Synopsys? Astro

l    设计资料库:Artisan? 0.18um Cell Library

在接下来的文章中,各位将会看到静态时序分析在实作过程中的应用。藉由实际产生的数据了解在不同实做步骤上时序分析的差异。

  

时序限制(Timing Constraint)

要作静态时序分析,首先要有时序限制。此设计范例的时序限制如下所述。( 后为设定时序限制之SDC指令)

1          时脉规格(Clock Specification)

1.1         周期:6ns 
  create_clock -name "MY_CLOCK" -period 6 -waveform {0 3} [get_ports {clk}]

1.2         Source Latency:1ns 
  set_clock_latency -source 1 [get_clocks {MY_CLOCK}]

1.3         Network Latency:1ns 
  set_clock_latency 1 [get_clocks {MY_CLOCK}]

1.4         Skew:0.5ns 
  set_clock_uncertainty 0.5 [get_clocks {MY_CLOCK}]

2          周边状况(Boundary Condition)

2.1         输入延迟(Input Delay):1.2ns 
  set allin_except_CLK [remove_from_collection [all_inputs] [get_ports clk] ]
  set_input_delay $I_DELAY -clock MY_CLOCK $allin_except_CLK

2.2         输出延迟(Output Delay):1.2ns 
  set_output_delay $O_DELAY -clock MY_CLOCK [all_outputs]

2.3         输出负载(Output Loading):0.5pF 
  set_load $O_LOAD 0.5 [all_outputs]

3          时序例外(Timing Exception):无

 

合成软体之时序报告

当Synopsys? Design Compiler将电路合成完毕后,执行下面指令可以产生时序报告:

report_timing -path full -delay max -max_paths 10 -input_pins
-nets -transition_time -capacitance > timing_syn.txt

时序报告会储存在timing_syn.txt此档案中。在档案的开头不远处,会列出此电路最有可能不符合时序规格的路径(Critical Path)。例如:

  Startpoint: S2/B2_reg_0_

                (rising edge-triggered flip-flop clocked by MY_CLOCK)

  Endpoint: S3/P3_reg_47_

              (rising edge-triggered flip-flop clocked by MY_CLOCK)

  Path Group: MY_CLOCK

  Path Type: max

在这个例子中,Critical Path的起点Flip-Flop是第2个Pipeline Stage内的B2暂存器的第0个位元,终点Flip-Flop则是第3个Pipeline Stage内的P3暂存器的第47个位元(图二)。

在Critical Path报告的下方会有Wire Load Model的资讯,此范例使用的是UMC18_Conservative Model。这个Model会以较悲观的方式预估连线的延迟时间(Interconnect Delay)。

 

图二

继续往下检视档案,你会看到Critical Path的详细时序资讯。例如:

Point                                  Fanout       Cap     Trans      Incr       Path

-------------------------------------------------------------------------------

clock MY_CLOCK (rise edge)                                           0.00      0.00

clock network delay (ideal)                                           2.00      2.00

S2/B2_reg_0_/CK (DFFHQX4)                                   0.00      0.00      2.00r

S2/B2_reg_0_/Q (DFFHQX4)                                     0.16     0.30      2.30r

S2/n36 (net)                               1         0.03               0.00      2.30r

S2/U10/A (BUFX20)                                             0.16     0.00      2.30r

S2/U10/Y (BUFX20)                                             0.23     0.21      2.51r

...

...

S3/add_106/U0_5_47/A (XNOR2X2)                              0.18      0.00      7.74f

S3/add_106/U0_5_47/Y (XNOR2X2)                              0.12      0.22      7.96f

S3/add_106/SUM[47] (net)                 1         0.01                0.00      7.96f

S3/add_106/SUM[47] (stage3_DW01_add_54_0)                            0.00      7.96f

S3/N94 (net)                                         0.01                 0.00      7.96f

S3/P3_reg_47_/D (DFFTRXL)                                    0.12      0.00       7.96f

data arrival time                                                                    7.96

 

clock MY_CLOCK (rise edge)                                             6.00       6.00

clock network delay (ideal)                                            2.00       8.00

clock uncertainty                                                       -0.50       7.50

S3/P3_reg_47_/CK (DFFTRXL)                                             0.00       7.50r

library setup time                                                      -0.28       7.22

data required time                                                                   7.22

--------------------------------------------------------------------------------

data required time                                                                   7.22

data arrival time                                                                   -7.96

--------------------------------------------------------------------------------

slack (VIOLATED)                                                                     -0.74

 

先由左往右看,第一个直行Point标示出路径中的节点,节点可以是元件的输出入端点,也可以是元件间的连线(Net)。第二个直行Fanout标示节点推动的元件个数。第三个直行Cap标示出节点推动的负载。第四个直行Trans标示出节点上信号的转换时间(Transition Time)。第五个直行Incr标示出节点造成的延迟时间。最后一个直行Path则是自路径起点到到此节点为止的总延迟时间。

再来我们由上往下检视Critical Path的时序资讯。

clock network delay (ideal)                                            2.00       2.00

此处的2ns的clock network delay是由我们给定的时序限制计算而来的,因为我们给定了各1ns的source latency及network latency,加起来共有2ns。

S2/B2_reg_0_/CK (DFFHQX4)                                   0.00       0.00       2.00 r

此行表示Critical Path的起点为S2 Instance下的B2_reg_0_这个instance的CK端点。由于有2ns的network delay,所以时脉信号到达此节点的时间为2ns(图三)。至于0ns的Transition Time则是因为我们没有在时脉规格中定义其数值,合成软体的会假设是一个0ns Transition Time的理想波形。最右边的r是因为这个Flip-Flop是正缘触发,所以以r表示。如果是f就是负缘触发。

 

图三

S2/B2_reg_0_/Q (DFFHQX4)                                    0.16       0.30       2.30 r

接着信号自起点开始向终点传递,这一行表示路径起点的Flip-Flop从CK端点到Q端点的时间延迟为0.3ns,且在此节点的Transition Time为0.16ns。所以信号到达此节点的时间为2+0.3=2.3ns(图四)。最右边显示r是因为Q端点从0变化到1时的延迟时间比1变化到0时的延迟时间还长,如果状况相反的话,最右边会标示f。以上数值是由元件库(Cell Library)里的时序表(Timing Table)查出来的,其计算的方式请参照「静态时序分析(Static Timing Analysis)基础及应用(上)」。

S2/n36 (net)                               1         0.03                0.00       2.30 r

S2/U10/A (BUFX20)                                              0.16      0.00       2.30 r

这两行和上一行最右边的Path栏位都一样,这是因为其实它们是同一个节点,所以信号到达时间一样。仔细的读者这时候可能会有个疑问,Flip-Flop的Q输出端和后面Buffer的输入端A信号到达时间应该有一个连线延迟(Interconnect Delay)的差距吧?想法上是没错,但因为Design Compiler这个合成器将连线延迟的时间合并到元件延迟(Cell Dealy)的时间内计算,所以从时序报告中看不到延迟时间的资讯。也就是说,如果Point栏是net的话,各位只需去检视Fanout和Cap栏位即可。S2/n36这个net只有推动一个Buffer,其Fanout为1。负载则是Buffer的输入负载和预估连线负载的总和,其值为0.03pF。

 

图四

S2/U10/Y (BUFX20)                                              0.23      0.21       2.51 r

这一行是描述Buffer从输入端到输出端的时间延迟,其值为0.21,所以信号到达Buffer输出端的时间为2.3+0.21=2.51ns(图五)。

接下来是一堆类似的元件时序资讯,我们略过它们不讨论,直接跳到最后面几个元件。

S3/add_106/U0_5_47/A (XNOR2X2)                              0.18      0.00       7.74 f

S3/add_106/U0_5_47/Y (XNOR2X2)                              0.12      0.22       7.96 f

这是到Critical Path终点前的最后一个元件,信号到达的时间是7.96ns。各位可以看到最右边的标示已经变成f了,这表示信号由1变0的状况元件延迟时间较长。

S3/add_106/SUM[47] (net)                 1        0.01                 0.00       7.96 f

S3/add_106/SUM[47] (stage3_DW01_add_54_0)                            0.00       7.96 f

S3/N94 (net)                                          0.01                0.00       7.96 f

S3/P3_reg_47_/D (DFFTRXL)                                    0.12      0.00       7.96 f

data arrival time                                                                     7.96

这几行都是同一个节点的时序资讯,只是逻辑阶层(Logic Hierarchy)不同。信号最后到达Critical Path终点的时间为7.96ns(图六)。以上是Arrival Time(AT)的计算,接下来我们看Required Time(RT)的计算。

 

图五

 

图六

clock MY_CLOCK (rise edge)                                             6.00       6.00

clock network delay (ideal)                                            2.00       8.00

clock uncertainty                                                       -0.50       7.50

S3/P3_reg_47_/CK (DFFTRXL)                                             0.00       7.50 r

library setup time                                                      -0.28       7.22

data required time                                                                   7.22

Critical Path终点的Flip-Flop的时脉输入一样有2ns的network delay,所以本来1个时脉周期后(6ns)要抓取资料就变成了6+2=8ns后抓取资料,也就是Required Time(RT)变成8ns。但因为我们的时脉规格有0.5ns的不确定性(clock uncertainty),以最坏状况考量,时脉提早了0.5ns到,则RT变为8-0.5=7.5ns。再考量元件库中定义的Setup Time 0.28ns,RT就变为7.5-0.28=7.22ns(图七)。

 

图七

data required time                                                                   7.22

data arrival time                                                                   -7.96

--------------------------------------------------------------------------------

slack (VIOLATED)                                                                     -0.74

有了RT和AT就可以计算slack,这个例子的slack值是负的,也就是无法达到时序规格。由于我们只是要以实例说明STA,时序规格不符合也无所谓。实际制作晶片时,这当然是不允许的。

 

相关推荐

全新ZVS 升降压稳压器的工作温度可低至-55°C,适用于恶劣环境的应用

产品与技术 2020-03-13

提高 48V 配电性能

产品与技术 2020-02-27

使用48V分布式电源架构解决汽车电气化难题

产品与技术 2020-02-17

分比式电源架构助力 Phasor 实现卫星宽带信号稳定性的变革

产品与技术 2020-01-09

Phasor 使用分比式电源架构增强移动卫星的连通性

产品与技术 2019-12-19

u-blox最新的公尺级定位技术提供增强的GNSS效能

行业应用 2019-10-18
在线研讨会
焦点