《STA | 哐!一文打尽 SOCV / POCV》这个标题很打脸,因为没有transition variation 部分也没有moment 部分。最近在驴群讨论了Transition variation 部分,总结一下,感谢各位的无私输出。
LVF 中transition variation 对应ocv_sigma_rise_transition < early, late > 跟ocv_sigma_fall_transition < early, late > 四张二维表。
先来看几个问题:
- 在SOCV/ POCV 分析中,cell delay mean 值是如何计算的?cell delay sigma 值是用arrival slew mean 跟output load 还是arrival slew mean N * arrival slew sigma 跟output load 查表得到的?
- 在考虑了transition variation 后,cell output transition mean 是如何计算的?cell output transition sigma 是用arrival slew mean 跟output load 还是arrival slew mean N * arrival slew sigma 跟output load 查表得到的?
- transition variation 对cell delay sigma 的影响如何表征?
前两个问题比较简单:
- 在SOCV/ POCV 分析中,不论是否考虑transition variation, 如果读的是ECSM 或CCS library, cell delay mean 跟cell output transition mean 都是根据ECSM 或CCS 模型计算得到的。
- 在SOCV/ POCV 分析中,不论是否考虑transition variation, cell delay sigma 跟cell output transition sigma 都是用arrival slew mean 跟output load 查表得到的,arrival slew sigma 在查表之前还没算出来。
再来看第三个问题,transition variation 对cell delay sigma 的影响如何表征?transition variation 影响driving cell 的输出transition 从而影响当前cell 的delay, 这一影响在分析时如何处理?以Innovus 跟Tempus 为例,来看工具对transition variation 的处理:
该行为在Innovus 跟Tempus 中用命令 set_delay_cal_mode -socv_accuracy_mode 来控制,default 值是low, 即不考虑transition variation 对当前cell delay的影响,arrival sigma 用 RSS ( Root Sum of Squares ) 计算得到,这种行为被称为 uncorrelated sigma 即:
(arrival sigma) ^ 2 = (pre-arrival sigma) ^ 2 (current stage delay sigma) ^ 2
uncorrelated sigma 方式计算得到的arrival sigma 没有考虑前后级cell 间的相关性,会偏乐观,当set_delay_cal_mode -socv_accuracy_mode 的值为medium 时,Innovus 跟Tempus 会考虑前后级cell 间的相关性,计算得到 correlated sigma. correlated sigma 是关键,其计算是个十分复杂的过程,老驴曾尝试求教做算法的小哥哥帮忙解释一下计算过程,小哥哥委婉回到:当年他初学时,看了四遍才看懂,这是一个非常复杂的过程。言外之意是:给你解释你也听不懂!也罢,专业的事儿留给专业的人去做,不强迫自己理解智力不及的事物。
但是,作为一个工具使用者要大概明白其过程,其计算过程是:
- 工具会查表得到当前cell 的sigma, 这部分称为uncorrelated variation: ?? .
- 工具会查表得到当前cell 跟其driving cell 的slew sigma.
- 工具根据以上查出的值用复杂模型计算得到correlated variation: ???_????.
- 工具用RSS< 开平方 > 计算得到当前cell 真实的delay sigma, 即:
( cell delay real sigma ^ 2 ) = ?? ^ 2 ???_????. ^ 2.
- 工具在计算 arrival sigma 时,先要计算一个delta adjust, 其计算过程为:
report timing 时,用delay_sigma_detail 跟arrival_sigma_detail 可以显示出详细的sigma 值。
delay_sigma_detail:
- 第一列是查表所得当前cell 的delay sigma;
- 第二列是用复杂公式计算得到的correlated sigma: ???_????.
- 第三列用RSS 计算得到的真实delay sigma.
arrival_sigma_detail:
- 第一列是工具计算得到的delta adjust.
- 第二列是查表所得当前cell 的delay sigma; 跟delay_sigma_detail 第一列的值相同
- 第三列用RSS 计算得到的arrival sigma.
特别感谢@DragonBaby 糖糖,@the1ne.
驴说IC