本文转自:自己的微信公众号《集成电路设计及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. 洛谷$1541$ 乌龟棋 线性$DP$

    Luogu   CH Sol f[i]表示走到第i个格子时获得的最大分数 发现转移与各个爬行卡片的数量有关,一共只有4种卡片 所以就把这四种卡片的已使用张数也放进状态,f[i][a][b][c][d] ...

  2. C Primer Plus(二)

    重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 分支和跳转 1.ctype.h头文件里包含了一些列用于字符判断的函数,包括判断数字.大 ...

  3. ### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...

    ### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaoj ...

  4. pdf文件内容查看器 -- 采用wpf开发

    前言 pdf是一种应用非常广的版式文档格式,已成为事实上的国际标准.关于pdf格式的文章汗牛充栋,本文也是关于pdf格式的文章,但是本文不是纸上谈兵:本人这几周一直研究pdf格式内容,不但对pfd格式 ...

  5. nginx 负载均衡及反向代理

    Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师开发,官方测试nginx能够支支撑5万并发链接,并且cpu.内存 ...

  6. 记第一个javaweb网页

      <%@ page language="java" contentType="text/html; charset=utf-8" pageEncodin ...

  7. 【转】Java 面试题问与答:编译时与运行时

    在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念.理解这几个概念可以更好地帮助你去了解一些基本的原理.下面是初学者晋级中级水平需要知道的一些问题. Q.下面的代码片段中,行A和行B所 ...

  8. Linux 7.5 SSH服务和SFTP服务分离

    SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...

  9. Scala实践13

    1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...

  10. 初识Activiti工作流

    一.背景介绍 公司最近接了一个监狱AB门系统的项目,在对项目进行调研时,发现客户的关注点主要是在AB门流程这块,项目大部分功能都是审批流程和单据流动状态等.而之前公司的项目关于流程主要都是在表中设置状 ...