STA在芯片设计后端的应用
摘要:在芯片设计的后端,很多厂家要求引入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都会被分析到。它在分析时包含下列三个步骤 :
(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时钟
被产生(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 为时钟到不同触发器时的时间间隔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论