一 常见的两个sdf选择

一般会现在跑两个corner : ss 和ff
常见的选择:
ss0p81vn40c_Cworst + mtm_spec MAXIMUM
nmos : slow
pmos : slow
电压:0.81v 低电压 (标准电压是0.9v,低电压为-10%)
温度 : -40摄氏度
C :只考虑电容影响(只有射频才会可能考虑R电阻的影响)
worst :最差的延时情况
MAXIMUM :cell的最大延时

用于分析setup 违例

ffg0p99v125c_Cbest + mtm_spec MINIMUM
nmos : fast
pmos : fast
电压:0.99v 高电压 (标准电压是0.9v,低电压为+10%)
温度 : 125摄氏度
C :只考虑电容影响(只有射频才会可能考虑R电阻的影响)
best :最差的延时情况
MINIMUM :cell的最小延时
用于分析 hold time

二 知识点 PVT

1 corner

在实际生产中,由于生产条件的细微变化,如掺杂浓度、扩散深度、刻蚀程度等。不同批次的晶圆之间、同一晶圆的不同芯片之间都会产生了不同的微小误差(Variation),导致CMOS的速度有的快,有的慢,从而导致芯片有快有慢。
为了保证器件的性能在合理的范围之内,产生了Process corner工艺角的概念。由于全局工艺偏差对CMOS中NMOS, PMOS的影响有所不同,因此按照晶体管的速度,可以分为以下五种:
TT (typical nmos and typical pmos):Nominal

SS (slow nmos and slow pmos):Slow N Slow P

FF (fast nmos and fast pmos):Fast N Fast P

SF (slow nmos and fast pmos):Slow N Fast P

FS (fast nmos and slow pmos):Fast N Slow P
在这里插入图片描述
从图中可以看到:
存在SSG和FFG,其中G表示Global ,即Global variation。随着工艺进步,local variation越来越重要,使用OCV对其进行补偿,对应的corner即为Global Variation。
global variation 全局工艺偏差,指的是同一器件在不同芯片间的偏差,相对的local variation局部工艺偏差,指的是同一器件在同一芯片不同区域的偏差。

2 V voltage

晶体管的速度随着电压的升高而提高。因此,sign off时需要考虑极限电压的情况,通常是在标称电压(norminal voltage)±10%的范围内,以保证芯片在整个电压范围能够正常工作。

3 T temprature

90nm以上工艺: 随着温度的降低,delay也随之降低。

90nm以下工艺: 随着温度降低反而会导致延迟增加,这个现象被称为温度反转效应,最差的delay可能出现在最高温,也可能发生在最低温。

4 RC

一般只考虑电容,高频可能会考虑电阻

互连电阻(R)来自设计实现中各种金属层和过孔(vias)中的互连走线。可以将互连电阻视为单元的输出引脚与扇出单元的输入引脚之间的电阻。主要与线宽、线厚和温度相关。

互连电容(C)也来自金属走线,包括接地电容以及相邻信号路径之间的电容。同层相邻两条绕线之间的耦合电容coupling capacitance、不同层上下相邻的表面电容surface capacitance、边缘电容fringe capacitance。随着工艺的进步,表面电容减小,耦合电容增加。

互连电感(L)是由于电流环路而产生的,通常,电感效应在芯片内可以忽略不计,仅在封装和板级分析中考虑。
在这里插入图片描述
一般在90nm之前的工艺节点,cell delay占主导,net delay可以忽略,耦合电容的影响可以忽略。

Cbest:电容最小,电阻最大,对于short nets有最小的delay,主要用于min-path-analysis即hold的分析,简称Cmin。

Cworst:电容最大,电阻最小,对于short nets有最大的delay,主要用于max-path-analysis即setup的分析,简称Cmax。

90nm之后的更先进工艺中,net delay的比重增加,耦合电容占比增大,增加两个corner。

RCbest:RC的乘积最小,对于具有长互联的路径,具有最小的延迟,用于hold分析。

RCworst:RC的乘积最大,对于具有长互联的路径,具有最大的延迟,用于setup分析

问题记录

sdf选择

DDR 等高频IP,在高频情况下,选用的phy可能需要升压为了提高性能。所以不能默认选用0.9V,而是选用芯IP所需电压,所以相应的sdf电压也要选择ssg对应0.9v的ffg选择对应1.05v的

如何看sdf中的延时信息

在这里插入图片描述
从SDF文件中,我们可以看到对于上升沿而言,A到Y的延迟分别是0.225(min),0.226(max)
对于下降沿 ,A到Y的延迟分别是0.248(min),0.248(max)

后仿中如何看vio

$setup, $hold

系统任务 setup用来检查设计中元件的建立时间约束条件,setup 用来检查设计中元件的建立时间约束条件,setup用来检查设计中元件的建立时间约束条件,hold 用来检查保持时间约束条件。
$setup(data_event, ref_event, setup_limit);
data_event: 被检查的信号,判断它是否违反约束
ref_event: 用于检查的参考信号,一般为时钟信号的跳变沿
setup_limit: 设置的最小建立时间
如果 T( ref_event - data_event) < setup_limit, 则会打印存在 violation 的报告

$hold(ref_event, data_event, hold_limit);
data_event: 被检查的信号,判断它是否违反约束
ref_event: 用于检查的参考信号,一般为时钟信号的跳变沿
hold_limit: 设置的最小保持时间
如果 T( data_event - ref_event ) < hold_limit, 则会打印存在 violation 的报告。

常见的是:

$setuphold (ref_event, data_event, setup_limit, hold_limit);

如果 T( ref_event - data_event) < setup_limit, 则会打印存在 setup violation 的报告
如果 T( data_event - ref_event ) < hold_limit, 则会打印存在hold violation 的报告。

$recovery, $removal

对于异步复位的触发器来说,异步复位信号也需要满足 recovery time(恢复时间)和 removal time(去除时间),才能有效的复位和释放复位,防止出现亚稳态。

释放复位时,复位信号在时钟有效沿来临之前就需要提前一段时间恢复到非复位状态,这段时间为 recovery time。类似于同步时钟下触发器的 setup time。

复位时,复位信号在时钟有效沿来临之后,还需要在一段时间内保持不变,这段时间为 removal time。类似于同步时钟下触发器的 hold time。

recovery 与 removal time 示意图如下所示。
在这里插入图片描述
系统任务 $recovery 与 $removal 分别用于 recovery 和 removal time 的检查,用法如下:

$recovery (ref_event, data_event, recovery_limit) ;
ref_event: 用于检查的参考信号,一般为清零或复位信号跳变沿;
data_event: 被检查的信号,一般为时钟信号跳变沿。
recovery_limit:设置的最小 recovery time。
当 ref_event (reset) < data_event (clock) 且 T(data_event - ref_event) < recovery_limit 时,即复位信号在时钟信号到来之前如果不满足 recovery time,则报告中会打印 violation。

$removal (ref_event, data_event, removal_limit) ;
ref_event: 用于检查的参考信号,一般为清零或复位信号跳变沿;
data_event: 被检查的信号,一般为时钟信号跳变沿。
removal_limit:设置的最小 removal time。
当 ref_event (reset) > data_event (clock) 且 T(ref_event - data_event) > removal_limit 时,即复位信号在时钟信号到来之后如果不满足 removal time,则报告中会打印 violation。

Verilog 提供了同时检查 revomal 和 recovery 的系统任务:
$recrem (ref_event, data_event, recovery_limit, removal_limit);

$width

有些数字设计,例如 flash 存储器,还需要对脉冲宽度或周期进行检查,为此 Verilog 分别提供了系统任务 $width 和 $period。用法如下:

$width(ref_event, time_limit) ;
ref_event: 边沿触发事件
time_limit: 脉冲的最小宽度

后仿中如何分析vio

不需要分析的vio :异步时钟路径
(1)两级或多级同步的第一级
(2)设置set_false_Path和set_multi_path的点,一般静态信号传输

对于可以忽略的vio如何处理:
最好提前把需要disable timing的path点让后端抓出来
建议使用:
使用vcs的ucli的接口输入进去一个config文件,文件内容如下:
tcheck {tb.a} SETUPHOLD -msg -disable

这种方法不检查setup和hold就够了,其他的width/period/recovery/removal之类还是需要检查的

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐