• 注册
  • 查看作者
  • CRPR(Clock Reconvergence Pessimism Removal)能补偿crosstalk吗?

     

    吾爱IC社区之前推送的数字后端设计实现文章 原来电路最高工作频率是这么算出来的(STA基础篇),最后留了一个思考题给大家,吾爱IC社区的公众号(id: ic-backend)后台也陆续收到很多粉丝的答案,有的表示完全不会,有的给出大致解题过程(不知道如何去计算),有的给出错误的答案(答案反正是五花八门,什么结果都有)。看到这种情况让小编瞬间震惊!

    下面我们进入今天的主题。主要介绍OCV和CRPR的概念以及他们对setup,hold的影响。

    OCV的全称是On Chip Variation。OCV的类型分为两种。一种被称之为global variation。另外一种则是Local variation。

    Global variation:

    它是指受Process,Voltage,Temperature(简称PVT)的影响,芯片之间的性能差异性。因为芯片是成批加工制造的,无法保证每颗芯片上同一个device的性能一致性。

    Local variation:

    它是指受Process,Voltage,Tempeture(简称PVT)的影响,同一个device在同一颗芯片上表现出性能的不一致性。它与Global variation的相同点是都是受PVT的影响而表现出来的性能不一致性。

    • Process

    芯片中的所有晶体管不能期望具有相同的加工制造工艺。由于掩模印刷、蚀刻等工艺的缺陷,沟道长度、氧化层厚度、掺杂浓度、金属厚度等都会发生变化。具体理论的知识可以自行查阅相关教程。

    关键公式: ID = (1/2)μnCox (W/L)(VGS – VTh)2 (这个公式模电里面也学过的,忘记了可以翻书去)

    • Voltage

    由于标准单元是被摆放在芯片中的不同位置,所以外部电源的供电电压从源头的参考电压,经历一段电源网络后,达到每个标准单元时的电压会显现出差异性。这就是我们经常所说的IR drop。

    • Temperature

    芯片内的晶体管密度不均匀。芯片的某些区域的高cell density,高翻转率,会导致功耗比较高。因此,这些区域的结温较高,形成局部热点。芯片温度的变化会导致不同的延迟。

    受到OCV的影响,一些cell可能快或慢于预期。如果不考虑这些变化,结果可能是乐观的,而实际情况可能导致setup或hold违例。那么,在数字IC设计实现阶段我们应该如何来表征这个OCV效应呢?我们的方法就是采用timing derate的方式来进行最终的Timing signoff。

    考虑OCV效应的setup检查

    如果不考虑OCV的影响,图1中的电路实际最高工作周期T=5.49ns,周期为1/T=182MHz(是不是发现跟上一期的思考题类似,其实有所区别)。下面我们

    假设考虑OCV引进time derate的约束,命令如下:

    set_timing_derate -early 0.9

    set_timing_derate -late 1.2

    set_timing_derate -late 1.1 -cell_check

    Launch clock path=2.0*1.2=2.4ns

    MaxDataPath=5.2*1.2=6.24ns

    CaptureClockPath=2.06*0.9=1.854ns

    Tsetup_UFF1=0.35*1.1=0.385

    Tmin=7.171ns

    通过计算确实周期T变大了,即电路实际工作频率变低了(Performance降低)。同时我们发现UFF0和UFF1的clock tree上存在1.2ns的common path即那两个clock buffer(或者inverter),既在launch 的clock path上,又在capture的clock path上。所以在计算seutp时,common path上的cell delay被分别乘以不同的derate值(实际情况在芯片上只会处于一个特定的PVT环境下),这样的计算方式显然太过悲观。

    因此,我们引进了CRPR(Clock Reconvergence Pessimism Removal)的概念,它的数值等于这两个差异值之差。

    LatestArrivalTime atCommonPoint = 1.2 * 1.2 = 1.44ns

    EarliestArrivalTime at CommonPoint = 1.2 * 0.9 = 1.08ns

    CRPR值=1.44-1.08=0.36ns

    因此CRPR补偿后,Tmin=7.171-0.36=6.811ns

    图1 考虑ocv的setup检查

    考虑OCV效应的hold检查

    不考虑OCV的影响,图2中没有hold violation。假设施加以下timing derate:

    set_timing_derate -early 0.9

    set_timing_derate -late 1.2

    set_timing_derate -early 0.95 -cell_check

    LaunchClockPath = 0.85 * 0.9 = 0.765

    MinDataPath = 1.7 * 0.9 = 1.53

    CaptureClockPath = 1.00 * 1.2 = 1.2

    Thold_UFF1 = 1.25 * 0.95 = 1.1875

    Common clock path pessimism: 0.25 * (1.2 - 0.9) = 0.075

    因此hold slack=0.765 + 1.53 – 1.2 - 1.1875 + 0.075 = -0.0175ns,即存在hold violations。

    图2 考虑ocv的hold 检查

    这里说明一点,正常我们timing signoff时derating都不会这么悲观。对于setup检查来说,检查的是在最worst的corner底下,此时cell delay已经是最慢,最悲观的,因此无需在launch path上加derate,只需要在capture上加额外的derate即可。同理,对hold检查来说,只需要在launch path上加derate。当然很多时候对于launch或者capture path,我们还区分clock path和data path,可以针对性设置derate。

    介绍了这么多的概念和计算过程后,吾爱IC社区的小编又要抛出一个思考题给大家了,接招吧!

    对于图2中的电路,假设在common_clock_tree path上存在0.10ns的crosstalk,请分析其对setup和hold的影响。这道题算是拓展题,面试的时候很有可能问到哦,以后可能成为你的加分项。

    如果大家对文章或者思考题有疑问,欢迎关注公众号(id: ic-backend),与作者进行互动交流。

     

  • 0
  • 0
  • 0
  • 626
  • 单栏布局 侧栏位置: