您的位置:技术中心首页 > 电路综合 >> 静态时序分析(Static Timing Analysis)基础

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

作者:未知   时间:2006-01-14 19:36:19  来自:我爱研发网  浏览次数:5519  文字大小:【】【】【

设计范例说明

设计范例为一个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,时序规格不符合也无所谓。实际制作晶片时,这当然是不允许的。

未完:第5章<<布局完成后之时序报告>>

[1] [2] [3]
责任编辑:5life

更多相关 STA 时序分析 的文章

STA在芯片设计后端的应用 [2006-03-11]
静态时序分析在数字集成电路设计中的应用 [2006-03-11]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  STA在芯片设计后端的应用
  静态时序分析在数字集成...
  静态时序分析(Static T...
  Design Compiler FAQ
  利用Synopsys工具的高性...
  逻辑综合中对关键路径处...

栏目最新

更多相关链接

  STA在芯片设计后端的应用
  静态时序分析在数字集成...
  静态时序分析(Static T...
  Design Compiler FAQ
  利用Synopsys工具的高性...
  逻辑综合中对关键路径处...

热点文章

更多相关链接