MCU学习笔记_STA及PT工具

本文档介绍了ASIC设计中的关键命令与术语,如restore_session用于恢复会话,report_timing用于时序分析报告,BC-WC、PPA、STA、DTS和OCV等专业术语。讲解了时序库、setup/hold、时序弧、PVT参数及其影响,以及解决untested问题的方法。适合深入理解ASIC设计流程和技术细节。

一、常用命令
    1.restore_session
        restore_session xx/xx/PTsavesessions/func_hsi_ss_1p35v_125c_max/
    2.report_timing
        report_timing -to [get_pins u_asic_core/xx/xx/Q] -path_type full_clock_expanded -nosplit

        report_timing -path full_clock 可以显示clock的详细信息

        report_timing -net 可以看到fanout

        report_timing -through clk2_en_reg/D

    3.report_clock_timing

       report_clock_timing -clock HCLK22 -to reg/CK -verbose -type latency

 

二、专业术语
     1.BC-WC(best corner-worst corner)

     2.PPA(Power, Performance, Area)

     3.STA(Static Timing Analysis)静态时序分析

        Static timing Analysis is a method for determining if a circuit meets timing constraints without having to simulate clock cycles.

     4.DTS(Dynamic timing simulation)动态时序分析

        动态时序分析,主要是通过输入向量作为激励,来验证整个设计的时序功能。动态时序分析的精确与否取决于输入激励的覆盖率,它最大的缺点就是速度非常慢,通常百万门的设计想全部覆盖测试的话,时间就是按月来计算了。

      5.OCV(on chip variations)

        因为制造工艺的限制,同一芯片上不同位置的MOS晶体管的性能会有一些差异。

        库中的PVT是一个"点",比如1.2V,250℃,工艺1.0。 但实际芯片的PVT永远不会落在一个点上,而是一个范围;比如说有时序关系的几个cell,可能这几个cell的PVT是1.18V,20℃,工艺0.98。而那个cell的PVT是1.21V,35℃,工艺1.01。这些cell的PVT都不在那个点上,怎么去分析呢?这时候就需要OCV了。

       6.Timing arc时序弧

       如果两个pin之间在timing上存在因果关系,我们就把这种时序关系称为Timing arc,主要分为定义时序延迟,和定义时序检查两种。

       为啥叫它时序弧?因为时序图中经常用一条弧形线段来表示它。

三、相关知识

1.时序库lib(liberty library format)

第一部分定义了物理单元库的基本属性,它包括:

1> 单元库名称,文件版本,产生日期及单元的PVT环境等。

2> 定义电压,电流,电容,时间等基本单位。

3> 定义电路传输时间和信号转换时间的电压百分比

第二部分是每个单元的具体信息,包括单元的延迟时间,泄漏功耗,内部功耗等。它们以lookup table的形式来表示,这里一个非常重要的概念就是lookup table,它是一种三维数据查找表,整个lib文件都是通过该种查找方式来得到所需要的信息。例如延迟时间作为输出信号负载(output load)和输入信号转换时间(input transition)的函数列表。

 

2.setup和hold

1> setup检查是为了检查数据传输不能太慢,否则,在目的寄存器的capture edge不能正确的锁存数据。因此数据传输所用的时间Arrival Time就必须要求在Require Time内传输到目的寄存器,因此slack(松弛时间)=Require time- Arrival time。

2> hold time(保持时间)检查的是数据不能传输太快,太快会影响前一次数据的锁存。因为是检查数据传输得不能太快,所以对于hold来,Arrival time就应该比Require time要长。

 

3.时序弧

3.1 时序延迟的Timing arc:有以下几种

1>Combinational Timing Arc

2>Edge Timing Arc

3>Preset and Clear Timing Arc

4>Three State Enable & Disable Timing Arc

3.2 时序检查的Timing arc:有以下几种

1>Setup Timing Arc

2>Hold Timing Arc

3>Recovery Timing Arc

4>Removal Timing Arc

5>Width Timing Arc

 

4.PVT(process, voltage, temperature)

1> fabrication process variations:工艺变化参数,通常分为FF,SS,TT。FF代表Fast process,通常这个条件下的cell delay最小;SS代表Slow process,通常这个条件下的cell delay最大;TT代表标准process,处于一个中间的delay。如下图所示:

图片1

 

 

2> Power supply voltage: 通常电压越高,器件的delay会越小,如下图所示:

 

3> temperature:一般情况下,器件的delay随着温度的升高而增大。但是,随着工艺尺寸的降低,关于器件延迟与温度的关系,存在温度反转效应(Temperature inversion)。即随着温度的降低,delay增大,worst corner可能是P:slow, V:low, T:high;也有可能是P:slow,V:low, T:low。 因为delay取决于两方面的因素,一是迁移率,二是阈值电压Vt,迁移率与温度成反比,低温时,迁移率增大,导致载流子运动加快,delay变小,同时在65nm以下,温度降低后,阈值电压会升高,导致delay增大,这在65nm以下变得不可忽略,所以delay到底是增大还是减小,取决于迁移率和Vt到底谁起更重要的作用。如下图所示:

 

4> 补充

P-process:IC制造工艺本身的不完美,使得制造偏差不可避免,在library中会用一个百分比来表示工艺偏差,如process:1表示没偏差。在沉积或参杂过程中,杂质浓度密度、氧化层厚度、扩散深度都可能发生偏差,从而导致管子的电阻跟阈值电压发生偏差;光刻过程中由于分辨率的偏差会导致管子的宽长比产生偏差。而这些偏差,都会导致管子性能的差异。

V-voltage:管子的延时取决于饱和电流,而饱和电流取决于供电电压。且不论多电压域芯片,就单电压芯片而言,电池的供电电压本身就在一个范围内变化,再加上片外或片上voltage regulator的误差、再加上IR,一个芯片上的每个管子都可能工作在不同电压下,从而性能也有所差别。

T-temperature:在日常操作中,IC芯片必须适应温度不恒定的环境,当芯片运行时,由于开关功耗、短路功耗和漏电功耗会使芯片内部的温度发生变化。温度波动对性能的影响通常被认为是线性的,但在深亚微米温度对性能的影响是非线性的。对于一个管子,当温度升高,空穴/电子的移动速度会变慢,使延时增加,而同时温度的升高也会使管子的阈值电压降低,较低的阈值电压意味着更高的电流,因此管子的延时减小。而通常温度升高对空穴/电子移动速度的影响会大于对阈值电压的影响,所以温度升高管子的延时呈增加趋势。但是并不是温度越低管子的延时就越小,晶体管有温度翻转效应,当温度低到某个值之后,随着温度的降低,管子的延时会增加,至于温度翻转点跟具体的工艺相关。

5> transition

transition time(过渡时间)是指信号从10%(20%)上升到90%(80%)所花费的上升时间( rise time),和信号从90%(80%)下降到10%(20%)所花费的下降时间( fall time)

5.1来源有两个:

1> 用户定义的约束(SDC文件)

set_max_transition [current_design] <value>

2> 库指定的限制。

.lib或.db包含每个cell所能允许的max_transition。

5.2 原因无非三种:

1> 扇出太大;

2> 连线太长;

3> 驱动强度太弱;

对于第一种情况,如果出现违反的net很多,那么很有可能是由于高扇出网络很多导致的,可以在sdc时序约束文件中将max_fanout的值设置的小一些,加紧约束;

对于第二种情况,可以采用手工ECO或者用PT进行ECO。对于长连线net可以增大前级的驱动能力,但是最常用的应该是在net中间插入buffer了。

对于第三种情况,同样可以采用手工ECO或者用PT进行ECO。可以增大net前一级cell的驱动能力,即用size_cell命令修复。

 

6.untest的原因有以下几种

1> constant_disabled   -->恒定值

2> no_clock   -->针对min_pulse_width和min_period检查,没有时钟定义

3> false_paths   -->timing path被设置了set_false_path

4> no_endpoint_clock   -->没有clock信号传输到clock capture path上

5> no_paths   -->路径不存在或被切断,造成原因也可能是set_disable_timing

6> no_startpoint_clock   -->没有clock信号从clock launch path上传输出去

 

report_analysis_coverage -exclude_untested:排除掉以下原因的untested

const:pin上得到恒定值

false_path:timing path被设置了set_false_path

no_data_signal:没有信号传输到 data endpoint. 可能是由于set_disable_timing产生

no_endpoint_clock:没有clock信号传输到clock capture path上

no_startpoint_clock:没有clock信号从clock launch path上传输出去

unknown:未知原因的untested path

user_disable:检查用户disable的timing arc

 

7> uncertainty和jitter & skew

clock uncertainty = clock jitter + clock skew. jitter 是 由时钟源产生的抖动。skew是时钟树不平衡引起的到达两个寄存器的延迟差。在cts之后,skew由工具算出,因此sta的时候clock uncertainty 可以设一个比较小的值。另外做hold check的时候因为检查的是同一个时钟沿,因此没有jitter只有skew

skew只是一个一开始的设计值,并不是一定要达到的(CTS设计时按照2ns来做的,后续timing调整动到了clock line,导致最终skew结果大于2ns)

8> capacitances

手动连接的部分(PAD、电源、POC)会产生violation,这些可以忽略

9> fanout

在sta的时候设置set_max_fanout 40 就会自动check是否满足要求

10> max_transition

clock line 1.8ns,data line应该没标准,应该在2.4ns(90nm工艺,时钟是sysclk的10%,data比lib的稍微严格一些,具体由后端决定)

遗留问题:data line设置的是2.4但是报告显示Required Transition是1.8,是io_mux中的组合逻辑信号,为什么呢??

11> 如何从库中查看,timing check对象

如下图D端会和SLEEPB 进行timing check

 


参考资料:https://mp.weixin.qq.com/s?__biz=MzI1MzAyNTA1Mg%3D%3D&chksm=f23a673ec54dee286b87cd5b54f3593ae07c239a9ead2aa0d96104fa767efe87bfad82778bfa&idx=1&mid=2652113229&scene=21&sn=41cc400b8a66ac9c12b1de82381ba3c4#wechat_redirect

https://www.cnblogs.com/ASIC-Horizon/articles/7941129.html

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值