未知工艺角下时序违反的机器学习预测*
2024-03-19黄鹏程冯超超马驰远
黄鹏程,冯超超,马驰远
(1.国防科技大学计算机学院,湖南 长沙 410073;2.先进微处理器芯片与系统重点实验室,湖南 长沙 410073)
1 引言
在高性能计算需求的持续推动下,半导体工艺持续向前发展,单裸片上可集成的晶体管密度呈指数增长,从数百万发展到了数十亿[1]。芯片集成密度的上升导致芯片复杂度指数上升,芯片的设计周期不断增长,而设计收敛性不断变差。为缓解业界在芯片设计成本、质量以及设计可预测性上面临的严峻挑战,机器学习正被有序可循地引入集成电路设计之中[2]。
机器学习已在布局位置合理化[3]、设计规则检查预测[4,5]、时序预测[6-8]等多方面取得了引人注目的成绩。时序收敛是芯片设计的重要研究方向,静态时序分析STA(Static Timing Analysis)是当前实现时序收敛的必备步骤。然而伴随着集成密度上升以及工艺角数量的不断增长,时序分析工作量指数增长的趋势使得时序收敛任务日益艰巨。机器学习方法已被普遍认为可用于加速STA分析进程[6,9,10],然而,正如Kahng等人[6]所指出的,这种加速是以牺牲STA精度为代价的,甚至在先进的FinFET(Fin Field-Effect Transistor)工艺下,这种代价是否可承受仍需进一步研究。
面向FinFET等先进工艺,提出新的未知工艺角下时序违反的机器学习预测方法,改善对未知工艺角下时序预测的精度,是实现加速STA的重要途径。本文结合时序分析原理,极大地改善了未知工艺角的时序预测精度,有效地实现了FinFET工艺下STA的加速。
2 时序特性分析
芯片设计中,各单元的延迟在不同工艺、电压、温度PVT(Process、Voltage、Temperature)组合条件下并不相同,各PVT组合通常称为一个工艺角,现行STA分析基于不同工艺角下的时序库进行时序分析。根据时序快慢的不同,工艺角笼统地被分为最快(Fast)、最慢(Worst)、典型(Typical)3种类型[11],在FinFET工艺下,由于自对准双重成像技术SADP(Self-Aligned Double Patterning)[12]的引入,双重成像引入的寄生参数误差导致原工艺角发生偏移,形成了ccworst和ccbest 2种类型的新工艺角,致使工艺角数量翻倍。
芯片流片成功并运用于实际应用后,芯片的实际工作情况总是会偏离这些典型的工艺角,譬如,当芯片执行高负荷任务时会产生大量的热量,热量的积累会使得芯片温度升高,于是温度偏离了工艺角,温度升高又产生较大电压降,于是电压又偏离了典型工艺角。鉴于实际工作情况的复杂性,商用工艺提供商会推荐一些典型工艺角的集合作为设计签核标准。表1罗列了本文所用到的工艺角的部分相关信息,涉及4种温度、3种电压值,总的工艺角数量有36个,属于商用工艺提供商推荐的工艺角。
Table 1 Information of selected corners in this paper表1 本文选用的工艺角部分信息
如表1所示,尽管各工艺角下各单元的时序信息迥然不同,但一些工艺角之间存在密切的联系,它们或者有相同的RC类型、或者有相同的电压值、或者有相同的温度值,甚至两者兼而有之。文献[6,13,14]的研究表明,工艺角之间的时序信息呈现线性相关性。这种特性使得运用线性回归类型的机器学习模型进行时序预测成为可能。
3 机器学习方法
直观地,用矩阵X表示时序已知工艺角集合的时序信息,矩阵Y表示时序未知工艺角集合的时序信息,那么从X到Y可建立一个线性回归模型,表示为Y=f(X)。对于前文所述的36个工艺角,任意选取其中n(1≤n<36)个工艺角进行STA,得到相应的时序信息数据,可以基于模型f来预测另外N=36-n个工艺角下对应的时序信息。如果预测精度较好,那么整体的STA分析时间将节约N/36,有效地加速了STA分析,缩短了整个芯片的设计周期。
本文方法中,线性回归模型基于通用机器学习框架scikit-learn中LinearRegression类实现。该类能在因变量Y与自变量X之间拟合出线性模型的系数权重向量ω,使得数据集实际观测数据与预测数据之间的残差平方和最小。
3.1 用于训练的工艺角集合的合理选取
为支持高效训练,时序已知工艺角集合的合理选取十分重要。一方面工艺角数量过少必然使得预测效果变差,而数量过多则STA时间节约微乎其微;另一方面,任意选取n个工艺角的训练效果往往不如有意地筛选n个代表性更强的工艺角的训练效果好。需要的工艺角数量多少可以通过遍历来获得定量认识,而具体数量下选择哪些工艺角是一个类似于矩阵特征向量选择的问题,需要专门分析各工艺角之间的关联程度,按关联程度由弱至强进行选择最具可操作性的工艺角。
Cover等人[15]提出了互信息的计算方法来度量不同工艺角之间的关联程度,其中互信息用联合概率密度函数来定义,计算过程非常繁琐且不直观。本文提出了一种新的简易方法来度量不同工艺角之间的关联程度,即各自选取相同数量Num的时序违反值(slack)最差的路径(Path),其中公共路径数量num与总路径数量Num的比值r定义为2个工艺角之间的关联度。r的取值介于0~1,适合度量工艺角之间的关联度。
本文基于某工业设计展开研究,该工业设计的单元数量为216万,STA以及学习训练在主频为2.5 GHz的Intel Xeon服务器上进行,单个工艺角STA需要的时间约1 h。时序路径按nworst为1的方式选取,各工艺角下选取时序slack最差的路径10万条,36个工艺角下选取的全部时序路径进行并集运算,得到总路径41.271 6万条,不及360万条的10%,反映了各工艺角之间存在较强的相关性。在这41万多条时序路径中,36个工艺角下时序违反小于10 ps的时序路径共有9.779 2万条,这是本文研究关注的重点。
各工艺角之间的关联度图如图1所示,颜色越浅表示关联度越大,颜色越深表示关联度越小。由图1可知,筛选训练用工艺角集合需要尽可能选取颜色深的工艺角组合,以使所选工艺角集合的重复信息更少,用于训练的有效信息更多,从而预测未知工艺角集合的时序精度更高。在本文方法中,关联度最低的2工艺角分别为6和19,因而选取训练集时如果仅选1个工艺角,则选6或19;如果选取2个工艺角,则选6和19。如果训练集中需选取更多的工艺角,再考察其它关联度低的工艺角集合,依次构建数量为1至35的训练集。
Figure 1 Correlation degree diagram between different corners图1 不同工艺角之间的关联度图
3.2 时序特征选取
时序特征的选取同样非常关键。以文献[6,9]为代表的前人研究往往只关注路径延迟的预测,存在一些局限性,因为路径延迟预测并不能判断该路径是否存在时序违反,而STA的首要目标是识别各工艺角下的时序违反。因此,本文研究关注的首要的时序特征是时序slack值,其中负数的slack值也称为时序违反。
STA分析将典型的路径slack值表示为子路径延迟的函数。对于建立时序(setup),满足式(1):
Slacksetup=Tc+Dlyc+Uncer-Dlyld
(1)
其中,Tc为时钟周期,Uncer表示不确定性(uncertainty),Dlyc表示时序路径捕获路径(capture)的延迟,Dlyld表示时序路径发射路径(launch)和数据路径(data)的延迟总和。对于保持时序(hold),满足式(2):
Slackhold=Dlyld-Uncer-Dlyc
(2)
为了便于计算,本文将寄存器的建立时序(setup)与保持时序(hold)值归并到了Dlyld之中。于是为了得到未知工艺角下时序路径的建立或保持时序slack以及时序违例,需要基于建立的机器学习模型预测这些未知工艺角下的Dlyld和Dlyc,再基于式(1)和式(2)即可得出预测结果。Setupslack值与holdslack值的精度与Dlyld和Dlyc的预测精度密切相关。
3.3 FinFET工艺特性在时序特征中的体现
随着工艺尺寸缩减至FinFET节点,由于片上工艺起伏的复杂性,STA分析中普遍引入了先进片上波动AOCV(Advanced On-Chip Variation)模型取代平面工艺下的展平片上波动(Flatten OCV)模型,这使得路径launch部分与capture部分的公共路径延迟在launch部分和capture部分中不再相同,这种现象被称为时钟汇聚悲观(Clock Reconvergence Pessimism)。为了消除该现象对时序分析的影响,需要在式(1)和式(2)的基础上再计算出时钟汇聚悲观补偿值crpr(clock reconvergence pessimism removal),并将式(1)和式(2)分别修正为式(3)和式(4):
Slacksetup=Tc+Dlyc+Uncer-Dlyld+crpr
(3)
Slackhold=Dlyld-Uncer-Dlyc-crpr
(4)
在FinFET工艺下,为计算未知工艺角下各路径的时序slack值,各时序路径在未知工艺角下的crpr值也需要预测,因而FinFET工艺下的时序预测精度必然低于平面工艺下的。
为了改善FinFET工艺下的时序预测精度,本文研究进行了以下2处改进:(1)对传统时序路径各部分进行了重新划分,将launch和capture两者的公共部分(即产生crpr值的公共路径)剥离出来,从而不再需要预测各路径的crpr值,最终得出式(5)和式(6);(2)因为setup分析与hold分析时序路径中同一单元的AOCV值不同,传统机器学习方法设置统一的权重必然引入额外的误差,所以本文将setup时序与hold时序分开进行预测。
Slacksetup=Tc+Dly′c+Uncer-Dly′ld
(5)
Slackhold=Dly′ld-Uncer-Dly′c
(6)
时序路径各部分的重新划分一方面使得crpr值的预测与launch部分的预测合并了,减少了多次预测引入的额外误差;另一方面将data部分与launch部分进行了分离,避免了预测模型在data上普通绕线规则与时钟上特殊绕线规则之间进行权衡,从而提升预测精度。Setup时序分析中,launch部分和data部分的延迟偏悲观,而capture部分的延迟偏乐观;hold时序分析恰好相反。FinFET工艺下AOCV模型的使用使得setup时序分析与hold时序分析中引入的相反的悲观不再是线性关系,因而将两者分开预测有利于提升预测精度。
4 实验与结果分析
时序路径的选取按nworst为1的方式进行,本文所选工业设计总的时序路径为213.125万条,其中时序slack值较大的路径对本文方法影响相对较小,因为即便预测有些偏差,这些路径也没有违反。因此,本文将各工艺角下setup时序和hold时序slack值在200 ps以内的时序路径挑选出来,合并得到总的时序路径71.736 2万条。于是各工艺角下都得到了这71.736 2万条路径的时序信息,其中前1万条用于训练,后面的70万余条用于测试。
与机器学习在芯片设计中的应用评价指标类似[6,9,16,17],本文使用平均绝对误差MAE(Mean Absolute Error)和均方根误差RMSE(Root Mean Squared Error)来衡量机器学习训练效果。
本文就传统方法与所提出的新方法进行了对比,结果如图2所示。随着所选用的训练工艺角数量的增加,2种方法下的MAE都呈现总体下降趋势;并且在本文改进方法(our learing)下,用5个工艺角训练即可使得MAE低于2 ps,而传统机器学习方法(previous learning)要使得MAE低于2 ps,需要21个工艺角。因此,本文提出的机器学习方法在MAE上明显优于传统方法。
2种机器学习方法的均方根误差RMSE随训练用工艺角数量的变化如图3所示,随着训练用工艺角数量的增加,RMSE总体上呈现下降趋势,且本文所提方法明显优于传统方法。要使得RMSE值小于2 ps,传统方法需要21个工艺角,而本文所提方法仅需要5个工艺角。
Figure 2 Influence of numbers of corners for training on MAE in two machine learning methods图2 2种机器学习方法中训练用工艺角数量 对平均绝对误差MAE的影响
Figure 3 Influence of numbers of corners for training on RMSE in two machine learning methods图3 2种机器学习方法中训练用工艺角数量 对均方根误差RMSE的影响
2种方法的学习与预测时间均小于1 min,远小于商用STA工具分析一个工艺角时序的1 h。考虑平均绝对误差MAE控制在2 ps以内,传统方法需要21个工艺角,较商用STA效率提升1.7倍,本文方法仅需5个工艺角,效率提升了7.2倍。对于本文提出的方法,可以适当调低未知工艺角下的时序预测效率,以进一步提升预测精度,例如,将预测用工艺角数量提升至12个,MAE可以降低至0.99 s以内,而效率提升也有3倍。
5 结束语
随着集成电路技术的不断发展以及半导体工艺的不断进步,芯片设计复杂度日益增长,设计所需考虑的工艺角呈指数增长趋势,通过机器学习方法来预测部分工艺角的时序已成为加速集成电路物理设计的研究热点。本文基于FinFET工艺特性与STA的技术方式,较传统学习方法而言更好地发掘了多工艺角之间时序特性的线性关系,在同等条件下得到了更优的时序预测结果,显著提高了时序预测精度,并节约了STA时间,利于缩短设计周期,提升设计效率。