原创 [转]STA在芯片设计后端的应用

2008-12-10 20:49 4656 14 14 分类: FPGA/CPLD

转自:http://www.21ic.com/info/images/try/20021224/1.htm


摘要:在芯片设计的后端,很多厂家要求引入STA分析。在prelayout和postlayout都要进行。本文介绍了在prelayout和postlayout两个阶段STA的约束文件的编写方法和一些相关命令,并介绍了STA的规划.


    关键词:STA约束 STA规划


1 引言


在芯片设计的流程中,后期的验证占了很长的时间。人们通常采用的验证方法是动态的仿真,此种方法的优点是比较直观。但当芯片的门数达到上百万门。用动态仿真所消耗的时间很长,而且分析的覆盖面也不全。现在很多厂家要求引入STA,有的要求在prelayout时就进行STA分析,例如TI的Magma流程,它在prelayout时将网表与STA约束读入,可以预先估计到postlayout后的timing 情况,从而节约了postlayout阶段的时间。在postlayout进行STA分析可以在很短时间内知道芯片的timing情况,缩短了ECO的时间。但是由于prelayout和postlayout的情况不一样,prelayout时,时钟数没有完全布好,所以要对延迟进行估算。Postlayout时,时钟数已经布好,延迟只需从sdf中读取,所以在两个阶段STA的约束是不一样的。


2 STA的基本概念


要比较全面地分析芯片的timing情况,书写完善的约束文件是很重要的。首先必须了解静态时序分析的基本原理。静态时序分析实际上就是把整个芯片按照时钟分成timing paths,只要timing paths经过的地方,timing都会被分析到。它在分析时包含下列三个步骤 :


1a.gif


(1) 将整个设计按照不同的时钟域(path group)分为不同的时钟路径(timing paths)


(2) 计算每个timing path的延迟信息


(3) 检查延迟是否满足要求


3 STA约束的编写


3.1 STA的分析方式


STA分析主要有三种分析方式:single、worst_best、on_chip_variation


Single: 在单一的情况下进行分析,即在worst情况下同时进行setup/hold分析或在best情况下同时进行setup/hold分析。


Worst_best:在分析时同时读入worst和best情况下的延迟信息,用worst下的延迟信息计算setup,用best下的延迟信息计算hold


On_chip_variation: 在分析时同时读入worst和best情况下的延迟信息,在进行setup计算时,时钟延迟采用best情况下进行计算,数据延迟采用worst情况下进行计算;进行hold计算时,时钟延迟采用worst情况下进行计算,数据延迟采用best情况下进行计算。这种分析方式对芯片的timing要求更加严格。


上述三种选择通过命令 -analysis_type single、worst_best、on_chip_variation 来选择


3.2 环境变量与库的设置


定义相关的库文件对于正确的分析非常重要。因为在prelayout阶段,cell和net的延迟是根据库的要求给出的。
点击看大图
    如上图所示,prelayout阶段cell的延迟是根据input transition 和output load来计算,net的延迟是根据net load/fanout/resistance来计算,而这些又包含在wireload_model中。


当进行Worst case分析时,读入worst case下的库,进行best case分析时,读入best case情况下的库。当同时进行worst-best情况下分析时,必须读入worst best合在一起的库。相关命令如下:


set_search_path " ./vendor/opt/ "


set_link_path {* max.db}


set_link_path {* min.db}


read_min_max_lib -max max.db -min min.db -name min_max.db


用report_lib命令可知库的环境变量,从而在set_operating_conditions命令中进行设置。


3.3 定义延迟信息


3.3.1 prelayout


由于prelayout阶段很多信息是预估的,所以要进行很多方面的约束。


首先要定义wire_load_model,因为net的延迟是根据wire_load_ model来计算的。同时还要定义wire_load_mode,一般情况下设置为enclosed,这样STA会根据不同的面积来选择wire_load_model,顶层选择较大的,而底层面积较小的相应选择小的wire_load_model。


其次对输入定义input_transition/max_fanout,命令如下:


set_input_transition -max/min -rise/fall


set_max_fanout 1 all_inputs


对输出定义负载能力,命令如下:


set_load -pin_load


3.3.2 postlayout


因为postlayout时,延迟信息都包含在 sdf中,只需将sdf读入即可。命令如下:


read_sdf -analysis_type single -type sdf_max/sdf_min *.sdf


read_sdf -analysis_type bc_wc *.sdf


3.4 定义时钟


3.4.1 时钟种类


在约束文件中,会涉及三种时钟:虚拟时钟、理想时钟、被产生(generated)时钟。
点击看大图
    * 虚拟时钟


虚拟时钟在设计中没有源,主要用于设置输入、输出延迟。


Clk3 Clk4 为虚拟时钟


虚拟时钟没有get_ports


用create_clock -period -waveform {} 命令产生。


* 理想时钟


理想时钟是整个设计的源。


Clk1 Clk2 为理想时钟


create_clock -period -waveform { } -name get_ports


* generated时钟


被产生(generated)时钟,由理想时钟经过分频或选择产生。


(1) 规则的generated时钟
点击看大图
    (2) 不规则的generated时钟


create_generated_clock -source Source_clk -edge{ 1 5 7} -edge_shift {10 10 10} -name Generated_clk [get_pins ]


通过-edge来说明与source之间的分频关系,用-edge_shift来表示它们之间的相位关系


3.4.2 时钟延迟的定义


时钟延迟有三种:source latency 、network latency、uncertainty


source latency是从时钟源到时钟定义位置的延迟


network latency是从时钟定义位置到触发器时钟输入端的延迟。


Uncertainty 为时钟到不同触发器时的时间间隔。


在timing报告中时钟的延迟为source latency与network latency、Uncertainty的和。
点击看大图
    * Pre_layout


由于时钟树没有布好,相应要定义时钟的Skew、source/network delay、 transition。相应命令如下:


set_clock_uncertainty -setup -hold


set_clock_transition -rise/fall -max/min


set_clock_latency -max -min -source


相应在timing报告中所报告的延迟为ideal


Startpoint: INT_READ_EN0


(input port)


Endpoint: cpu_input16_inst/interrupt1_inst00/addr_en1_reg


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


Path Group: SYS_CLK


Path Type: max


Point Fanout Incr Path


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


clock (input port clock) (rise edge) 0.00 0.00


input external delay 10.00 10.00 r


INT_READ_EN0 (in) 0.00 10.00 r


INT_READ_EN0 (net) 2


INT_READ_EN0_buff/Y (BU150) 0.29 10.29 r


cpu_input16_inst/interrupt1_inst00/addr_en (interrupt1_test_64)


0.39 10.68 r


cpu_input16_inst/interrupt1_inst00/addr_en (net)


cpu_input16_inst/interrupt1_inst00/addr_en1_reg/D (TDC10)


0.00 10.68 r


data arrival time 10.68


clock SYS_CLK (rise edge) 12.86 12.86


clock network delay (ideal) 3.00 15.86


clock uncertainty -0.10 15.76


cpu_input16_inst/interrupt1_inst00/addr_en1_reg/CLK (TDC10) 15.76 r


library setup time -0.59 15.17


data required time 15.17


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


data required time 15.17


data arrival time -10.68


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


slack (MET) 4.49


* Post layout


由于时钟树已经布好,就不用设置uncertainty 、transition,latency可设置source latency。同时对所有的时钟加Propagated 就可以。


Set_clock_latency -source


Set_propagated_clock


如图3所示,postlayout和prelayout区别在于是否需要定义network delay.


postlayout的时钟延迟在timing报告中为propagted


Startpoint:e1t1_top/e1t1_core/PORT11_adm/port/BUILD_B/BUILD_MODE_add/normal_moe_reg (rising edge-triggered flip-flop clocked by BACLK)


Endpoint: BAIND (output port clocked by BACLK_next)


Path Group: BACLK_next


Path Type: max


Point Fanout Cap Trans Incr Path


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


clock BACLK (rise edge) 0.00 0.00


clock network delay (propagated) 5.54 5.54


e1t1_top/e1t1_core/PORT11_adm/port/BUILD_B/BUILD_MODE_add/normal_mode_reg/CK (SDFFRX1)


0.09 0.00 5.54 r


3.5 输入输出延迟定义
点击看大图
    set_input_delay -rise/fall -max/min -clock Clk3 [get_ports Data_in]


set_output_delay -rise/fall -max/min -clock Clk4 [get_ports Data_out]


下面结合两个report来看输入输出延迟的作用


Startpoint: BDPL (input port clocked by BDCLK_before)


Endpoint: e1t1_top/e1t1_core/PORT12_adm/port/tu_term_b/tu_sel_timing/ADnE1T1_reg


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


Path Group: BDCLK


Path Type: max


Point Fanout Cap Trans Incr Path


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


clock BDCLK_before (rise edge) 0.00 0.00 0.00


clock network delay (ideal) 0.00 0.00


input external delay 15.00 15.00 f


BDPL (net) 1 3.83


bdpl_pad/C (PDIDGZ) 0.12 0.56 * 15.56 f


n2233 (net) 1 0.05


t1_top/e1t1_core/PORT12_adm/port/tu_term_b/tu_sel_timing/ADnE1T1_reg/D (SDFFSX2)


0.49 19.20 * 34.76 f


data arrival time 34.76


clock BDCLK (rise edge) 50.00 50.00


clock source latency 2.00 52.00


e1t1_top/e1t1_core/PORT12_adm/port/tu_term_b/tu_sel_timing/ADnE1T1_reg/CK (SDFFSX2)


0.21 5.88 * 57.88 r


library setup time -1.02 * 56.86


data required time 56.86


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


data required time 56.86


data arrival time -34.76


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


slack (MET) 22.10


从上面的报告可以看出BDPL相对于BDCLK_before有15ns的输入延迟,从而对BDPL到ADnE1T1_reg 的D端之间的延迟进行了限制


Startpoint: e1t1_top/e1t1_core/DROP_A/au3/rccnt_au3_2/COL_reg_1A


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


Endpoint: ADIND (output port clocked by ADCLK_next)


Path Group: ADCLK_next


Path Type: max


Point Fanout Cap Trans Incr Path


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


clock ADCLK (rise edge) 0.00 0.00


clock source latency 2.00 2.00


adclk_pad/C (PDIDGZ) 0.24 0.50 * 2.50 r


ADCLK_PAD (net) 7 0.18


ADIND (net) 1 0.02 27.3


ADIND (out) 2.51 0.00 29.85 r


data arrival time 29.85


clock ADCLK_next (rise edge) 0.00 50.00 50.00


clock network delay (ideal) 0.00 50.00


output external delay -20.00 30.00


data required time 30.00


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


data required time 30.00


data arrival time -29.85


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


slack (MET) 0.15


从上面的报告可以看出ADIND相对于ADCLK_next有20ns的输出延迟,从而对ADIND的输出时间进行了限制


3.6 定义 timing exceptions


当两个路径无关时,可设置set_false_path


当cell的两个端口无关时,可设置set_disable_timing


当不能在一个时钟周期内完成操作时,必须设置set_multicycle_path,如下图所示,时钟在第六个周期采样数据。
点击看大图
4 STA report


静态时序分析工具中提供了比较充分的report timing的方法。给用户查找timing方面的问题提供了很大的方便。


4.1 关于sdf的报告


厂家返回的网表和sdf有的时候会出现一些错误。例如网表和sdf文件对应不上、网表中有些cell没有反标上等等。


report_annotated_check -list_not_annotated


report_annotated_delay -list_not_annotated


上面两个命令就可详细地列出没有反标上的cell或nets。如下面报告所示:


****************************************


Report : read_sdf /export/home/e1t1_system/post6/zx2515_cts_v6_10p.sdf


-load_delay cell


-analysis_type single


-type sdf_min :'typ' and 'max' delays ignored from


SDF triplet (min:typ:max)


****************************************


0 error(s)


Number of annotated cell delay arcs : 1585140


Number of annotated net delay arcs : 922292


Number of annotated timing checks : 723980


Number of annotated constraints : 165218


TEMPERATURE: 85.00


VOLTAGE : 3.40


PROCESS : --


Executing command 'report_annotated_delay':


****************************************


Report : annotated_delay


Version: 2000.11


Date : Wed May 8 13:39:03 2002


****************************************


| | | NOT |


Delay type | Total | Annotated | Annotated |


-----------------------------+-----------+-----------+-----------+


cell arcs | 1256967 | 1253352 | 3615 |


internal net arcs | 922292 | 922292 | 0 |


net arcs from primary inputs | 154 | 0 | 154 |


net arcs to primary outputs | 120 | 0 | 120 |


-----------------------------+-----------+-----------+-----------+


| 2179533 | 2175644 | 3889 |


Executing command 'report_annotated_check':


****************************************


Report : annotated_check


Version: 2000.11


Date : Wed May 8 13:39:24 2002


****************************************


| | | NOT |


Timing check type | Total | Annotated | Annotated |


-----------------------------+-----------+-----------+-----------+


cell setup arcs | 168620 | 168074 | 546 |


cell hold arcs | 167276 | 166618 | 658 |


cell recovery arcs | 54708 | 54708 | 0 |


cell min pulse width arcs | 165330 | 165218 | 112 |


-----------------------------+-----------+-----------+-----------+


| 555934 | 554618 | 1316 |


4.2 report_timing


-delay_type:定义setup 、hold


-group定义时钟组


-path_type short :只定义起点和终点


full: 定义整个路径


full_clock:除了整个路径,时钟的路径能非常仔细的报出来


end:只报出终点和相应的slack


-net:报出每根线和相应的fanout


-max_path:每个时钟组报出的最多路径


-slack_lesser_than 报出slack小于某个固定值的一些路径


-nworst:对于endpoint报出的N条路径


-from -to :经过某些的点的路径


4.3 report_clock


-skew -attributes


****************************************


Report : clock_skew


Version: 2000.11


Date : Sat May 4 11:49:38 2002


****************************************


Source Latency


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


Object Early Rise Early Fall Late Rise Late Fall


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


ADCLK 2.00 2.00 2.00 2.00


BDCLK 2.00 2.00 2.00 2.00


AACLK 2.00 2.00 2.00 2.00


BACLK 2.00 2.00 2.00 2.00


EXCLK 2.00 2.00 2.00 2.00


RD 2.00 2.00 2.00 2.00


WR 2.00 2.00 2.00 2.00


ADCLK19M 5.17 5.59 5.17 5.59


****************************************


Report : clock


Design : AA_e1t1_PAD


Version: 2000.11


Date : Sat May 4 11:49:38 2002


****************************************


Attributes:


p - propagated_clock


G - Generated clock


Clock Period Waveform Attrs Sources


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


AACLK 50.00 {0 25} p {AACLK}


AACLK19M 50.00 {0 25} p, G {e1t1_top/CLKGEN_common/AACLK19M}


AACLK_before 50.00 {0 25} {}


AACLK_next 50.00 {0 25} {}


ACLK19 50.00 {0 25} p, G {e1t1_top/CLKGEN_common/ACLK19}


ADCLK 50.00 {0 25} p {ADCLK}


ADCLK19M 50.00 {0 25} p, G {e1t1_top/CLKGEN_common/ADCLK19M}


ADCLK_before 50.00 {0 25} {}


ADCLK_next 50.00 {0 25} {}


ADPCLK 50.00 {0 25} p, G {e1t1_top/CLKGEN_common/ADPCLK}


从上面的报告中可以看出时钟的延迟情况,时钟的位置,是理想时钟、虚拟时钟、generated时钟。Attrs为G为generated时钟,p为被propagated。


4.4 Bottleneck


Report_bottleneck -cost_type path_cost/path_count -max_cell


Path_cost:经过CELL若干条路径slack的和


Path_count:经过CELL有slack的路径总和


从上面的报告中可迅速得知那些cell容易引起violation


4.5 Constraint


Report_constraint


将所有的violation都报告出来


5 STA规划


* prelayout


对于一个比较大的设计,pre_layout之前可采用bottom-up,对每个模块编写相应的STA约束文件。

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条