# Delay-Calibration
**Repository Path**: oscc-project/delay-calibration
## Basic Information
- **Project Name**: Delay-Calibration
- **Description**: Calibrate path delay calculation results using machine learning methods.
- **Primary Language**: Python
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-06-22
- **Last Updated**: 2024-07-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Delay-Calibration
### **1 问题背景**
对于高性能芯片的设计,时序收敛是最关键的要求,为了获得时序精确的芯片设计,需要在物理设计的各个阶段调用时序分析工具分析时序裕量,以此指导芯片设计过程。因此,准确的时序分析结果对于芯片指导设计的迭代优化,以及取得较好的时序收敛的结果至关重要。对于广泛使用的时序路径时延计算方法,通过查找表(LUT)的方法计算单元时延,使用经典的Elmore模型计算互连线时延。通过时序路径中的每一级的单元和互连线的时延进行累加得到每一条时序路径的时延。Slew在时序路径中从驱动到负载传播过程计算误差会逐渐累积,单元时延和互连线时延在该过程也会逐渐累积误差。由于分析时延的方法比较简单,未考虑串扰、噪声等因素的影响,因此与商业工具对时延的分析结果存在一定偏差。为了得到较为准确的结果,通过机器学习的方法对该偏差进行矫正。
### **2 问题描述**
时序校准的流程主要包括以下几个步骤:(1)提取与时序路径时延相关的特征;(2)构建标签数据;(3)模型选择和搭建;(4)模型训练和推理。
● **提取与时序路径时延相关的特征**:时序路径时延时延包括单元时延和互连线时延。因此在选择特征时应选择会影响单元时延和互连线时延相关的关键因素:单元时延通过二维查找表得到,索引为输入Slew和输出负载电容。Slew的数值影响当前时序路径上负载单元的驱动强度,负载电容也会影响slew在单元中传播时的输出Slew。互连线时延的计算使用Elmore模型,该计算公式中主要包含电阻和电容信息。同时不同单元类型和不同单元Port会影响单元的功能和驱动强度,信号的翻转极性不同,在二维查找表中需要查找不同的时延表格,因此,信号翻转极性也是需要考虑的因素。综上所述:可选择的特征包括:输入Transition time、输出Transition time、负载电容、信号极性(上升/下降)、单元类型、单元Port名称、电阻、电容、通过iSTA计算得到的时序路径时延。
| 特征名称 | 描述 |
| --- | --- |
| Input transition | 输入转换时间 |
| Output transition | 输出转换时间 |
| load capacitance| 负载电容 |
| Signal polarity(rise/fall) | 信号极性(上升/下降) |
| Cell type | 单元类型 |
| Cell port name | 单元端口名称 |
| incremental time | 递增时延 |
| Arrival time | 到达时间 |
| Path delay(LUT+Elmore) | iSTA分析时延 |
● **构建标签数据**:在进行标签选择时,选择商业工具Prime Time报告出的时延信息作为标签。由于在构建特征时,我们通过内部iSTA工具能计算得到时序路径时延。通过数据分析发现,PT分析得到的时序路径时延以及iSTA得到的结果方差较大,但PT的结果与iSTA的比值趋于稳定,在训练时更容易收敛。因此选择二者之间的比值作为标签。
● **模型选择和搭建**:
(1)由于构建的特征为二维表格数据,在进行模型选择时可以选择传统的机器学习模型,比如随机森林、lightGBM、XGBoost。可以使用Scikit-learn机器学习库进行搭建。
(2)每一条时序路径可以建模成一个序列,每个pin节点包含若干个特征,可以使用序列处理任务中的Transformer/LSTM/RNN + MLP模型。可以使用Pytorch机器学习库进行搭建。
● **模型训练和推理** :
(1)模型训练过程中,由于训练训练数据集较大,需要使用batch训练,但每条时序路径长度不同,此时需要通过Pad方式将其填充到统一长度。
(2)使用8:2的比例进行划分,80%作为训练,20%进行验证。还需要进行同一工艺节点下的不同设计之间的验证。
### **3 算法输入输出**
#### **算法输入**
● 在对每一条时序路径时延进行推理时,输入数据是由每一条时序路径中的特征数据构成得二维tensor。
#### **算法输出**
● 模型的输出是真实值与iSTA计算得到的时延值的比值,所以将模型输出的结果与iSTA计算得到的该条路径的时延值的乘积为校准之后的时延值。
### **4 评估指标**
● 在使用神经网络进行训练时,一般会选择RMSE或者MSE作为损失函数;
● 衡量模型的精度可以使用R2、MSE、MAE、MRE等指标进行衡量;
● 通过分析与商业工具PT结果误差在1%、3%、5%以内的路径所占的比例来衡量模型精度。
由于仓库容量有限,完整数据集放在百度网盘链接: https://pan.baidu.com/s/15HG4jV_Ih7lyXuBH3okU-g?pwd=ftjr 提取码: ftjr