跳至主要內容

iCTS-时钟树综合

iEDA大约 3 分钟

一、概述

当前iCTS支持在给定约束下进行时钟树构建,目前iCTS以DME和Slew-Aware为基本框架,融合多类约束进行时钟树设计,由于DME的自底向上过程中无法获取上游Slew信息,
在下游的链式传播将带来较大误差,iCTS在引入时序后向传播方法,在缓冲插入阶段进行线网级别的时序传播,矫正线网负载单元的插入时延。
iCTS采用较为准确的时序模型进行时序信息的估算与传播,以最小设计成本为目标进行时钟树构建。

约束

iCTS可支持约束如下表所示,其中约束名称与Config参数名称对应

约束名称约束等级
skew_boundHard
max_buf_tranHard
max_sink_tranHard
max_capSoft
max_fanoutHard
max_lengthSoft

时序模型

iCTS目前采用PERI互连线模型作为互连线的slew计算方法,采用Elmore模型作为互连线时延计算方法,对于缓冲器的插入时延采用查表法(Lut),其中包含部分方法的扩展,具体如下表所示。

模型场景扩展
PERI互连线slew的计算与传播公式计算、时序后向传播矫正
Elmore互连线时延计算公式计算
Unit RC根据单位电容电阻换算互连线的负载电容电阻公式计算
Lut缓冲器插入时延计算与单元slew传播双线性插值法、多元线性拟合模型、机器学习模型

目标

iCTS在尽可能满足设计约束的前提下,对于存在多种缓冲方案的情景将采用最小化设计成本的方案进行时钟树设计,目前采用的度量方法如下:

  • 优先选取满足时序约束下尺寸较小的缓冲方案
  • 对于连续缓冲插入以平衡时钟偏差(skew)的情况,为简化时序计算与传播的复杂性,考虑采用同种缓冲器并以均匀线长为间距进行时序平衡,该阶段优先考虑最小化单元面积增加的缓冲方案

二、多时钟平衡

iCTS可支持多时钟设计,首先对各个时钟逐一构建时钟树形成基本的时钟树结果,通过iSTA的时序评估分析顶层节点的时钟偏差,最终根据设计需要进行时序平衡。

三、支持扩展

多缓冲器类型

iCTS支持基于多缓冲器类型(目前不包括反相器)进行时钟树设计,并在缓冲插入过程中采用目标中的策略进行缓冲器选取,该特性可在Config中的buffer_type参数进行设定。

聚类降低规模

iCTS支持使用聚类方法(K-Means)降低大规模线网的运行时间,对于寄存器数量超过3000的线网,iCTS将自动执行K-Means算法划分为50个之类分别进行局部时钟树构建,在完成局部构建后进行顶层的时钟树合并,局部构建和顶层时钟树构建均采用相同的时钟树算法。

在K-Means聚类过程中,我们设定了初始迭代次数,在每次迭代过程中,我们记录每一簇的寄存器负载电容总和,并考虑较小簇间电容方差的聚类结果进行时钟树构建。

机器学习模型

iCTS基于Cython支持Python模型、方法的调用。目前封装Linear、XGBoost、CatBoost模型和Matplotlib的基本绘图方法可供使用,可指定编译选项SYS_PYTHON3_VERSION指定系统Python版本,
并打开PY_MODEL选项即可实现C++与Python交互,在该模式下,时序有关Lut过程将使用机器学习模型进行。