在去年的SNUG(Synopsys User Group) 2017上,机器学习的关键词出现多次,是当时无可争议的热点。今年我们终于看到了机器学习真正用于后端设计的技术之一,那就是PrimeTime ECO with Machine Learning。
在介绍这项技术之前,我想先和大家聊聊机器学习。虽然在这方面本人绝对谈不上有什么经验,但是从SNUG现场观众的提问来看,很多人对机器学习还没有比较清晰的概念,因此想先普及一下Machine Learning的基本思想,以便于我们理解它的应用。
Machine Learning(ML),机器学习,主要是通过概率和统计学等数学手段建模来寻找大量数据的内在规律。根据算法的不同,主要可以分为有监督学习(supervised learning)和无监督学习(unsupervised learning)。二者的区别在于是否需要一个数据集作为训练样本,从而提取出一个数学模型。前者需要这样的数据集,而后者不需要。
在此我们不花太多篇幅去讨论不同的算法,但是我希望大家能够理解一个概念,那就是机器学习的结果一定是一个数学模型。比如在有监督学习中,它并不是我们直观的理解中把训练样本中的所有情况提取出来做一个数据集,然后在给出新的输入的时候去数据集中寻找匹配。而是在训练样本中提取一个模型,这个模型可能是一个简单的n元m次方程,也可能是更复杂的函数,然后可以根据我们给定的输入计算一个新的输出。基本流程差不多是这个样子:
监督学习基本流程
言归正传,我们说说PrimeTime ECO with Machine Learning是怎么回事。在此次SNUG上,Synopsys主要介绍两种PT中的机器学习技术。
- 运用PTECO结合机器学习实现同等的QoR和更快的runtime。
例如,我们想通过PT-ECO来优化power,一般来说工具内部的行为大概是这个样子:
Low Power PTECO 流程
这样的流程的缺点在于,对于每种需要优化的电路,都需要遍历其所有可能的方案并从中寻找最佳。而实际情况是,很多电路具有相似甚至完全相同的结构,我们完全可以直接运用已有的正确方案来直接执行,而不需要遍历。针对这个问题,机器学习能够提供比较好的解决方案。有了机器学习,上述流程就变成了这个样子:
PTECO with Machine Learning
上述流程中可以看出,事先通过训练数据获得power优化的训练模型,在每次对某种电路进行power优化时,不再需要遍历,只需要将电路量化后的结果输入到模型中,就可得到一个预测的优化过后的电路结构,然后可以在PT中将此结果验证。如果确实能够实现power降低并无其他影响,则可以直接生成解决方案。据Synopsys资料显示,训练模型能够覆盖90%以上的case。
那么PT中如何实现模型的训练以及使用呢。其实很简单,主要靠一下两条命令即可:
# 模型训练
set training_data_directory $your_directory
fix_eco_power -power_mode total
# 运用模型执行power opt
set training_data_directory $your_directory
fix_eco_power -power_mode total
在训练阶段,使用上述前面两条命令将会生成训练模型在$your\_directory下;在实际eco fix power过程中,再次调用相同的两条命令,PT将会自动读取$your\_directory下的训练模型,并在fix\_eco\_power的过程中使用此模型。
上述即为第一种应用机器学习的PTECO方法。而还有一种方法,是针对另外一种情况而设计的。大家在做项目的过程中,应该遇到过自己写的脚本的ECO效果比PT的效果还要好。PT-ECO本来已经比较智能,但毕竟是为了平衡大多数design而设计的通用技术,对某些特殊design或者特殊case的效果可能并没有那么好。有鉴于此,Synopsys还带了以下第二种技术:
2. 通过对用户的脚本进行建模,从而能够针对特定场合学习用户脚本的ECO方法而达到更快的收敛速度。
我们以优化timing为例,假如自己写了一个脚本,希望PT在ECO的过程中能够按照脚本中的思路来进行优化,那么我们如何实现呢?
PTECO Custom Learning Flow
其基本思路为,先用一个DB用于模型训练,然后将此模型保存起来,以供后续PTECO流程中自己或者其他人使用。其具体实现分两步:
# 第一步:用脚本训练模型
set training_data_directory $your_directory
start_learning
source $your_scripts
save_training_data
# 第二步:在PTECO中使用模型
set training_data_directory $your_directory
fix_eco_timing -your_options
机器学习有很多优点,但是也有一个非常常见的缺点,那就是精度,也就是训练模型的预测结果有一定概率并不会很好。虽然大数据训练能够一定程度提高模型的精度,但是在更多时候,需要不断改善算法才能够达到比较可靠的效果。
以上就是机器学习在PTECO中的应用。虽然根据Synopsys透露,此方法的PTECO可以在实现相同的QoR的前提下提高5x-10x的ECO速度,但是其实际效果还需要更多项目的考验和测试。
相关文章
如果大家有任何后端技术与职业发展方面的问题,抑或关于数字后端感兴趣的技术话题想要了解和探讨,欢迎关注我的知乎专栏: 数字IC后端设计工程师修炼之路同时欢迎关注微信公众号:数字后端芯讲堂,一起探讨技术,共同提升!
本极术专栏也会同步更新芯片设计后端的技术干货,也请关注数字IC后端设计工程师修炼之路。