STA series --- 2.STA basic concept(PART-II)

序:

本篇内容,基于阅读J. Bhasker • Rakesh Chadha著作《Static Timing Analysis for Nanometer Designs》后进行的总结以及自己的观点和感想,如有不正确的地方,还请指点。读者有微电子基础将更好理解内容。(图片内容绝大部分直接引用书中)

STA basic concept

本章节介绍STA中timing path的具体的组成部分和由来(承接PART-I)

5. Skew between path

理想的时钟树,是指时钟源拥有无限强的驱动,能够无延迟的驱动无限个sources,且时钟树上的cell都无延迟。当然理想和现实总是存在着差距。实际中,时钟源并没有如此强的驱动能力,且时钟树上的cell总会有延迟时间。这就导致了同一个时钟源端到不同的flip-flop时间不同,而时钟源端到达寄存器的ck端的时间定义为clock latency,两者clock latency的差异即为skew值。
设计的前期阶段,还未做clock tree,做STA时候,时钟被认为是ideal的,skew为0。

  • 通过 如下设定可以人为定义一个clock latency,如下设定表示到BZCLK的rise和fall latency均为2.2ns。可以指定-rise和-fall来分别指定:
    set_clock_latency 2.2 [get_clocks BZCLK]

在这里插入图片描述

clock skew的值还可以在clock uncertainty中进行描述。clock uncertainty为时钟不确定度,包含clock skew,clock jitter和额外的margin值。在实际的STA check中,会有uncertainty去包含clock skew进行timing 的check。指定setup的uncertainty为250ps,如上图右侧所示。hold的uncertainty一般不包含jitter(因为hold为同沿检测,不存在不同period存在的clock period jitter),因此一般要比setup小一些。

  • clock uncertainty设定如下:
    set_clock_uncertainty 0.25 -setup [get_clocks BZCLK]
    set_clock_uncertainty 0.10 -setup [get_clocks BZCLK]

6. Timing arcs and timing paths

timing arcs,时序弧。每个单元都可能有不止一个时序弧。如组合逻辑单元nand/or/and/adder等等,从每个输入端到输出端都构成一个时序弧。当然buffer/inverter 只有一个时序弧,因为只有一个输入输出。flip-flop这类时序逻辑,除了存在ck到q的时序弧外,还有data pin和clk pin的时序约束。timing arc分两种positive unate,negative unate和non-unate。positive unate指的是输入端上升沿或下降沿对应输出端上升沿或下降沿(或输出不发生变化)。negative unate则正好相反。non-unate指的是输出的变化不能由输入决定。如下左图所示的异或门所示。当POLCTRL为0时,输出DDRCLK与输入MEMCLK为相同极性,当POLCTRL为1时,输出DDRCLK与输入MEMCLK为相反极性。
在这里插入图片描述
timing paths,cell和net组成的一条时序路径。STA check中,timing paths一共分为4类,I2reg,I2O,reg2reg,reg2O。其中reg to reg的路径最为典型,如上图右侧所示。UFF1到UFF3一共有两条路径,其中经过的所有的cell和net的delay和最大的为max path ,经过的delay和最小的为min path。在这两级寄存器的check中,UFF1为lauch FF,其相应的clk path为lauch clock path;UFF3为capture FF,其对应的clk path为capture clock path。


7. Clock domain

时钟域,一个clock不仅仅只驱动一个register,会驱动可能上百个寄存器,这些寄存器叫做在一个clock domain中,而这些寄存器之间的check为同步check。如下所示,USBCLK和MEMCLK分别驱动了不同的寄存器,存在两个clock domain。

在这里插入图片描述
两个domain是完全独立的吗?这取决于这两个domain之间有没有数据的传输,如下图左侧所示,是否有从USBCLK domain的寄存器到MEMCLK domain的寄存器间的check(或者MEMCLK到USBCLK domain)如果没有这样的path,那么我们可以认为这两个clock domain是完全独立的。而如果有这样的path,就需要确认这种path的真实性。比如可能存在USBCLK为2倍数频,MEMCLK为1倍频,他们之间有数据传输,这可能就是真是的path。可能会需要设置multicycle进行STA check。如果两个clk是不同频率,也不是倍频关系,那么他们之间就需要加如同步器进行数据同步,这个时候这种跨时钟域的path就属于假的path了,因为真正的path是同步器和clock domain之间的check,这个时候就需要对其设定false path

  • false path 设定方式:
    set_false_path -from [get_clocks USBCLK] -to [get_clocks MEMCLK]
    set_false_path -from [get_clocks MEMCLK] -to [get_clocks USBCLK]
    在这里插入图片描述

如上图右侧所示为一个clk 互斥的例子。这是一个时钟的多路选择器,选择哪个时钟由FATT_SLOW信号控制,一次只有一个clk工作,一次只有一个clock domain,虽然有两个时钟,但是并不同时工作,这个时候就永远没有跨时钟域的path出现。


8. Operation Condition

由于芯片实际的工作电压,温度,以及芯片制造过程种的variation,在STA过程中,需要把这些因素全部考虑进去,因此就存在了STA check时候的signoff corner,主要为PVT这三大部分。P process; V voltage ; T tempture。温度越高,delay越大,电压越高,delay越小。而delay也和工艺制造有很大的关系。

  • Process:芯片制造过程中,同一个wafer,甚至是同一个die,都不能保证可以做到完全相同,因此为了弥补这种variation,在timing signoff时候会把process相关差异考虑进去。这时候就有了ffgnp/ssgnp以及不同的rc的lib单元。
  • Voltage:主要是design工作的电压,所有典型的工作电压,都会进行signoff。
  • Tempture:signoff 125oC / -40oC / 85oC 三个温度,其中125和-40为典型的极限温度,是芯片能够工作的最高最低问题,在这两个温度下进行timing signoff,可以cover之间的温度。85为芯片典型的工作温度,在这个温度下进行leakage的check。

关于ssgnp和ffgnp的解释,引用自https://my.oschina.net/u/4581603/blog/4426546 文章如下所示,感觉解释的很清晰:
PVT Variation 仿真模型随着工艺进步一直被微调,从ss 到ssg 到ssgnp 就是把Global variation 跟local variation 排列组合,要么一起门特卡洛,要么分开门特卡洛,此处概括为两种方式:Global corner with local Monte Carlo: 假设片子上所有管子都朝同一个方向偏,所有管子都有相同的Gloabl variation 和local variation, 这就是ss, ff corner 所用的方法,工艺偏差本就是个随机事件,过度保守地应对随机性,必定导致过于悲观的结果。Full Monte Carlo: <有驴友笑称门特卡洛是口缸,啥都可以往里装>, ssg 跟ffg corner 用的就是这种仿真模型,此处所谓的Full = Global Monte Carlo + Local Monte Carlo, 其中Global 就是之前多次提到的Global variation, 此处又一次『不无悲观』的假设所有管子都有相同的Global variation; 但进步之处是,local variation 不再被固定,而是用『伪随机值』,即AOCV, SOCV/POCV 来拟合。ssgnp 跟ffgnp 在此基础上又进了一步,回归NMOS 管跟PMOS 管偏差的随机性,即所谓的NMOS, PMOS cancelation


至此关于STA basic concept都已经介绍完了。下一章节进行Standard cell lib的介绍。下期见~

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值