对于数字后端设计过程中,不只需要满足setup time and hold time check ,同时为了可靠性的要求,同时对于更深工艺下,数据和时钟的balnace 需求也变得很重要了。
balance check 主要分为三种:1.时钟 balance ,即对于特定的寄存器,需要满足时钟skew 在一定的范围内
2. 第二类的是 data skew balance 信号,主要是对于总线类信号,以及有接口信号
3 . 对于data 和clk 之间的skew 满足一定的要求
首先对于上面三种类型的 special timing ,实际上是带着脚链跳舞,在不影响timing 的情况下进行处理,经验情况是先将 clock skew 调到要求范围内,然后修复时序问题,如果时序问题解决不了需要调整clock tree 的时候,需要考虑clock skew 在一定的范围内。对于clock skew 的balance 基本只考虑 typic core
对于数据的balance ,由于好多是 best(ff ,rr ) ,worst(rr ,ff)下同时进行分析的,下面对于遇到的几个问题进行一个说明:
1. data skew 在一个core 下meet 然后无法在另外一个下meet ,
这类问题的主要原因是由于 需要balance 的path 中 由于 部分先 delay 太大 导致 cell 在不同 core 下 飘得较多导致,同时在 worst core 下net delay 是变小的 。解决办法先在一个core 下条调平 ,然后 通过控制 整体的 变化 到另外一个core 下的差值
2 .对于同一条数据的data skew (其rising 和falling)在一个core 下无法meet。
从另一方面来说,数据balnace 是在解一个复杂的多维函数:
best rr : a1* x + b1 *y + c1 * z + d1 * k = w1
best ff :
worst rr :
worst ff:
从简单意义是理解就是说,在对应的pvt 模式下 系数因子是固定的 ,简单的模型只确定正相关和负相关,即系数因子为负数或者正数。通过调整 变量因子即cell delay 和net delay ,来影响决策参数w1 符合要求,由于多维函数的复杂性调整参数的过程需要关注各个决策参数的变化方向,避免调整导致个边参数偏离要求值。