本文转自:自己的微信公众号《集成电路设计及EDA教程》

机器学习在IC设计中的应用(二)--根据GBA时序结果来预测PBA

AOCV

AOCV全称:Advanced OCV,28nm及以下工艺节点开始逐渐使用的STA方法。与之前的OCV(设置全局的timing derate值)相比能显著降低时序分析的悲观程度,使得时序分析结果更加接近真实结果。

GBA与PBA

AOCV有两种模式,如下:

GBA (Graph-Based Analysis) : 一个Cell的delay,取多个输入的input transition的最差值去查表;

PBA (Path-Based Analysis):一个Cell的delay,不同path,分别按照input transition的真实值计算查表;

两者的区别如下图所示:

因此GBA的Timing会过于悲观,但是好处是计算保守,试想在最差情况下Timing如果满足的话,PBA mode下timing会更满足(如下图所示,GBA mode的包络线将所有PBA的点全部囊括在内)。

PBA mode与GBA mode相比,减少了分析的悲观程度,让分析结果更加接近真实的情况(现在的POCV等手段都是为了这个目的)。因此PBA mode的分析结果更加真实,一般用来Signoff timing用。

那你可能会问,PBA mode更加精确的话为什么还会去用GBA mode呢?

那是因为GBA mode有一个优点:计算速度快。

所以GBA和PBA是一个速度和精度的trade off。

下图给出了对数坐标下PBA与GBA模式下运行时间的比值,用的EDA工具是商用Signoff STA工具,工艺是28nm FDSOI。横坐标是设计的复杂程度,从4K flip-flop 40K个单元到 350K flip-flop 990K个单元。

从上图可知,随着设计复杂度的增加,PBA的运行时间的增加程度比指数增长还要快。

下图给出了GBA mode与PBA mode下两者在path arrival time上的对比结果,最差情况下偏差可达110ps。

那么问题来了,考虑到PBA mode运行时间的恐怖程度与GBA分析结果的悲观程度,有没有什么好的方法,能减小GBA的悲观程度,同时又不牺牲运行时间呢?这就是本推文要介绍的内容—如何基于GBA的timing结果去预测PBA timing?

实现思路

训练阶段:同时将GBA和PBA时序分析的结果作为特征提取和模型训练的输入对模型进行Training。

测试/应用阶段:

根据GBA时序分析的结果去预测PBA结果。

具体细节和算法见参考文献:

《Using Machine Learning to Predict Path-Based Slack from Graph-Based Timing Analysis》

文章早期尝试了多元自适应回归样条(Multivariate Adaptive Regression Splines, MARS)模型。结果: 90%的endpoint的PBA slack预测值与PBA slack真实值之间偏差在5ps以内。如下图所示:

MARS介绍:

https://github.com/KeKe-Li/tutorial/blob/master/assets/src/RAM/RAM.0.4.md

从上图可以看出这种思路是可行的,且效果较好,但是该模型存在一些问题,文章提出了一个基于决策树和时序路径中stage bigrams电气和物理特征的模型。并取得了不错的结果。

结果

下图是真实的GBA/机器学习预测的PBA结果与真实的PBA结果的对比曲线:

从图中可以看出与传统的GBA分析结果相比,基于GBA和机器学习的方法在一定程度上降低了GBA模式的悲观程度,且与真实的PBA分析结果的线性度更高,GBA和PBA之间的结果离散程度比较大。虽然该成果的效果不是非常明显,但是思路非常新颖,扩展了我们的视野,相信以后在该方面会有更大的突破。

尾注

研究生阶段做过ML的算法和芯片,上述内容部分基于参考文献、已有的ML经验、IC设计经验,还有一些胡思乱想,哈哈哈,希望在脚踏实地做IC的同时也能采用一些大胆新颖的想法来让IC设计变得更有效率,把活儿干的更漂亮,同时让自己更加出色。

多分享,多点赞;

您的支持是我更新的动力,谢谢您的关注,更多资料请移步公众号《集成电路设计及EDA教程》

网易云课堂视频课程

链接:https://study.163.com/course/introduction/1005909004.htm

Calibredrv教程-提高流程自动化

##  为了方便大家交流讨论  ##

##  建了一个QQ群  ##

## 集成电路设计及EDA教程  ##

## 加群请备注:EDA  ##

##  群二维码如下  ##

# 本公众号有个红包和资料福利微信群  #

#  集成电路设计及EDA教程福利群  #

#  为了避免乱七八糟的人加进来  #

#  可以先加我微信,我拉你进群  #

#  加我微信 请备注下面问题的答案  #

#       ASIC的全称       #

机器学习在IC设计中的应用(二)--根据GBA时序结果来预测PBA的更多相关文章

  1. Perl Tk在IC设计中的应用、Windows、Linux平台下的安装-各种错误的摸索解决

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <Perl Tk在IC设计中的应用.Windows.Linux平台下的安装-各种错误的摸索解决> Perl在IC设计中有 ...

  2. IC 设计中DFT的Boundary Scan功能

    在很大规模的IC设计中,往往会有一些各种各样的bug出现,不论是在前期design的过程,还是在post silicon流片回来chip的flaw,都会导致chip的功能的失败,时钟频率无法达到期望频 ...

  3. 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  4. 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  5. 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  6. 数字IC前后端设计中的时序收敛(一)前言

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...

  7. VerilogHDL概述与数字IC设计流程学习笔记

    一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是 ...

  8. IC设计:CMOS器件及其电路

    作为一个微电子专业的IC learner,这个学期也有一门课:<微电子器件>,今天我就来聊聊基本的器件:CMOS器件及其电路.在后面会聊聊锁存器和触发器. ·MOS晶体管结构与工作原理简述 ...

  9. IC设计推荐书籍

    IC设计推荐书籍 听语音 | 浏览:779 | 更新:2014-07-19 10:52 1 2 3 4 5 6 7 分步阅读 接触IC设计这一行已经有7年的时间了,前面4年是大学本科,用来学习知识,现 ...

随机推荐

  1. 洛谷$P2153\ [SDOI2009]$ 晨跑 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 题目好长昂,,,大概概括下$QwQ$.就说有$n$个节点$m$条边,然后要求每次走的路径都不一样,问最多能走多少次,然后在次数最多的前提下问路径最短是多少$ ...

  2. Windows To Go 企业版2019 LTSC 开发环境部署

    Windows To Go 是一项非常实用的功能,与传统方式安装Windows 10相比更具有灵活性,会根据每次接入的硬件型号保留不同版本驱动. 由于博主是一名全栈程序员(截至发稿处于菜鸟级别),对灵 ...

  3. 「UVA12004」 Bubble Sort 解题报告

    UVA12004 Bubble Sort Check the following code which counts the number of swaps of bubble sort. int f ...

  4. 1048 数字加密 (20 分)C语言

    本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余--这里用 J 代表 ...

  5. .Net Core Linux 下面的操作

       这里以 Ubuntu  8.04版本为例: 1. 注册 Microsoft 密钥 注册产品存储库 安装必需的依赖项 wget -q https://packages.microsoft.com/ ...

  6. 高效测试框架推荐之Ginkgo

    自2015年开始,七牛工效团队一直使用Go语言+Ginkgo的组合来编写自动化测试用例,积累了大约5000+的数量.在使用和维护过程中,我们觉得Ginkgo的很多设计理念和功能非常赞,因此特分享给大家 ...

  7. 解决elment 动态多选框组(el-checkbox-group)无法设置默认值问题

    <el-checkbox-group v-model="form.showProperty"> <el-checkbox v-for="(item,id ...

  8. Java带有运算符的字符串转换为Long型

    由于项目需要在配置文件中配置一个刷新时间,但是配置文件中取出来来的数据肯定是字符串,然后要将该带有运算符的字符串转换为Long型.具体代码如下: 配置文件system.properties中: ref ...

  9. dp-最大连续子序列的和

    https://www.felix021.com/blog/read.php?1587 什么是最大连续子序列和呢 ? 最大连续子序列和是所有子序列中元素和最大的一个 . 问题 : 给定一个序列 { - ...

  10. day6 相对定位:position:relative

    相对定位:position:relative 特点:a.相对于自己原来位置的定位,以自己的左上角为基准. b.相对定位原来的位置仍然算位置,不会出现浮动现象. 以下为初始位置:(可以看出设置margi ...