人类从漫长的蒙昧中觉醒之后,不再依靠着奇装异服的巫师通灵来指导生活,巫师进化成了科学家,他们试图对周遭的一切进行概括、分类、抽象,于是有了化学、物理、数学等基科。比如一粒沙,它的化学组成是什么,物理特性是什么,可抽象成什么样的数学公式。

用沙子做成的芯片亦如此,从设计实现到生产制造,每一步的背后都是化学、物理、数学。这些对一线工人硅农而言太过深奥,即使大部分的他们在人生曾有的高光时刻可以倒背元素周期表,可以随手写出力、电、热的公式,可以徒手开根号。抛开这些高深的基础理论,仍有如山一样的『知识技能』等待着硅农去熟撸,人生有限而学海无涯,面对如山的信息,重要的是分清本末,用力抓住本轻轻抚摸末,让它们一个也逃不脱。

工艺


末:在每一个工艺结点,代工厂都会给出一个叫"sign-off recommendtion " 的文档,该文档详细描述了setup 跟hold 分别需要在哪些corner (library PVT + RC corner) 下做timing check, 及在每个corner 下cell Process OCV, cell voltage/temperature OCV,  Spatial OCV, wire OCV, 额外的margin 都分别设多少。对,这些都是末,在做STA 时只要把对应值关联到对应corner 上即可,保证不犯低级错误就行,没必花太多精力去抠每个值是怎么来的,也没必要花心思去想这样设会不会过紧或过松,只要记住一句话:在sign-off 这件事上,代工厂就是独裁者,它让你干啥你就干啥,它让你怎么干你就怎么干。

本:setup/hold 为什么分别要在这些corner 下sign-off? PVT 是什么?RC corner 是什么?Variation 是什么?cell 跟 wire 的OCV 都在模拟什么效应?IR-drop 用什么来体现?额外margin 在模拟什么?为什么launch path 跟capture path 要设不同的derate? 为什么data path 跟clock path 要设不同的derate? 为什么data path 跟clock path 对transition 的要求不同?flat ocv, AOCV, SOCV 是什么,从哪来,各有什么特性,如何选择?对应工艺结点都有哪些VT cell, 每一类型VT cell 各有什么特性,不同类型VT cell 之间的特性趋势是什么?

工具


末:数字设计实现中接触到的每个工具都是一个死胖子,有巨多无比的变量,有巨多无比的命令,有巨多无比的option, 而且每家工具都很臭不要脸的有一系列的隐藏变量,然并卵,这些都是末,没必要刻意去记变量命令跟option, 常用的不用记也可以熟能生巧,不常用的记了也会忘。通常,代工厂跟EDA 厂在每个工艺结点,都会给出推荐的工具版本及对应的一组推荐setting, 大部分时候双方给出的是一致的,少部分时候会有些许差别,老驴建议听独裁者代工厂的,但是要跟EDA 厂确认工具版本,及对应工具版本跟代工厂推荐的工具版本之间有没有默认设置的更改,通常都会有,按照建议做对应更新就行。没必要花太多精力去纠结为什么推荐这些变量这么设,还是那句话,听独裁者的。

本:所有涉及到工具端的本都在方法学跟模型建立上,方法学从宏观上指导整个设计实现的过程,模型建立支撑过程中每一个结点的实现及量化。就STA 而言,从方法学上要知道:STA 是什么?STA 的基本原理跟数学支撑是什么?STA 要吃什么拉什么?STA 的流程是什么?检查STA 的方法是什么?检验STA 的标准是什么?如何分析STA 的结果?timing ECO 的方法有哪些?从模型建立上要知道:如何将一个设计切分成可量化的timing path? cell delay 的计算模型是什么?net delay 的计算模型是什么? GBA 跟PBA 是什么?CRPR 是什么?crosstalk 的模型是什么?不同OCV 对应的模型是什么?waveform propagation的模型是什么?Glitch 的模型是什么?

分析


末:所有目所能及的结果都是末。STA 过程是:在一定的PVT + RC-corner 下,在SDC 约定的范围内,来检查 netlist 的timing 质量。所以要保证:所有的library 都在对应PVT 下,SPEF 是在对应RC-corner 下抽取的,SDC 是准确无误的,所有工具端的设置都是按照代工厂或EDA 厂或以往经验得来的。在这样的保证下,run 出的任何结果都是现实,心平气和地接受它,再丑的孩子也是自己家的,该爱还是要爱。

本:所有结果背后的根因才是本。有了结果之后的分析大多是依据工艺跟工具所涉及的本,再加上一点命令的熟练使用就能在timing 的海洋里催起肚子蹭光头发,一路飞扬了。

论STA | 工艺、工具、分析的本与末的更多相关文章

  1. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转

    原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...

  2. Oracle logmnr工具分析日志脚本

    在oracle:对logmnr工具分析日志这个不陌生:对数据恢复应用场景经常用到:这里为了方便对归档日志进行分析: 当然网上有一个logmnr界面的工具:感觉很人性化:下载需要积分:为此写一个脚本. ...

  3. 攻击者利用的Windows命令、横向渗透工具分析结果列表

    横向渗透工具分析结果列表 https://jpcertcc.github.io/ToolAnalysisResultSheet/ 攻击者利用的Windows命令 https://blogs.jpcer ...

  4. 几种常见的JavaScript混淆和反混淆工具分析实战

    几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试 ...

  5. android ARM 汇编学习—— 在 android 设备上编译c/cpp代码并用objdump/readelf等工具分析

    学习 android 逆向分析过程中,需要学习 Arm 指令,不可避免要编写一些 test code 并分析其指令,这是这篇文档的背景. 在目前 android 提供的开发环境里,如果要编写 c / ...

  6. JVM之工具分析

    JVM分析工具有很多; jdk自带工具:jconsole.jvisualvm 其他工具:jprofile ,yourkit等 不要在线上用,影响性能,在测试环境中使用. 一.jconsole ——jd ...

  7. 使用ANTS Performance Profiler&ANTS Memory Profiler工具分析IIS进程内存和CPU占用过高问题

    一.前言 最近一段时间,网站经常出现两个问题: 1.内存占用率一点点增高,直到将服务器内存占满. 2.访问某个页面时,页面响应过慢,CPU居高不下. 初步判断内存一点点增多可能是因为有未释放的资源一直 ...

  8. 使用KRPano资源分析工具分析动态网站资源

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  9. .Net加密保护工具分析介绍

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨. remotesoft protector.maxtocode..Net Reactor.Cliprotector.themid ...

随机推荐

  1. RN开发-ReactJS组件

    虚拟DOM :将真实的DOM结构虚拟成json类型数据    props : 不可改变,用于数据传递    state : 组件属性,主要用来存储组件自身需要的数据,每次改变都会引起组件的更新     ...

  2. Sublime Text(代码编辑软件)

    特点 Sublime Text 3是一个轻量.简洁.高效.跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点: 它体积小巧,无需安装,绿色便携:它可跨平台支持Windows/Mac/Linux: ...

  3. JS高级---遍历DOM树

    遍历DOM树  第一个函数: 给我根节点, 我会找到所有的子节点: forDOM(根节点)  获取这个根节点的子节点  var children=根节点的.children  调用第二个函数  第二个 ...

  4. [Java IO]05_JSON操作

    目录 6.1 JSON 知识背景  6.1.1 JSON 简介  6.1.2 JSON 语法  6.1.3 JSON 的数据结构6.2 Java 中操作 JSON 数据  6.2.1 Jar包下载   ...

  5. jdk8-》joining、groupingBy、summarizingInt函数

    拼接函数 Collectors.joining // 3种重载方法 Collectors.joining() Collectors.joining("拼接符") Collector ...

  6. AcWing 275. 传纸条

    #include<iostream> using namespace std ; ; *N][N][N]; int w[N][N]; int n,m; int main() { cin&g ...

  7. 【PAT甲级】1117 Eddington Number (25分)

    题意: 输入一个正整数N(<=100000),接着输入N个非负整数.输出最大的整数E使得有至少E个整数大于E. AAAAAccepted code: #define HAVE_STRUCT_TI ...

  8. vscode+vue 一些基本操作

    1.安装好 vscode 和 node.js 安装node.js是为了用npm(管理项目依赖) 2.调出终端 crtl +~ , 3.终端全局安装 vue-cli  安装整个脚手架,能快速给我们构建v ...

  9. C++-指针阅读能力提升

    下面的标识符你肯定在工程中看不到,但是在面试题中却非常常见,掌握掌握还是不错的. int (*p1)(int*, int (*f)(int*));              int (*p2[5])( ...

  10. Markdown进阶教程

      Markdown是很好用的轻量级标记语言,许多开发人员喜欢使用Markdown来记录学习心得和写博客.本篇博客主要介绍Markdown的高级技巧教程,Markdown的基础教程已经在上篇介绍过了. ...