ASIC 的复杂性不断提高,同时工艺在不断地改进,如何在较短的时间内开发一个稳定的可重用的ASIC芯片的设计,并且一次性流片成功,这需要一个成熟的ASIC 的设计方法和开发流程。本文结合NCverilog,DesignCompile,Astro等ASIC设计所用到的EDA软件,从工艺独立性、系统的稳定性、复杂性的角度对比各种ASIC的设计方法,介绍了在编码设计、综合设计、静态时序分析和时序仿真等阶段经常忽视的问题以及避免的办法,从而使得整个设计具有可控性。

基本的ASIC设计流程

  ASIC设计流程可以粗分为前端设计和后端设计,如果需要更细的划分,可以分成如下几个步骤:

  1.包括系统结构分析设计、RTL编码以及功能验证;

  2.逻辑综合、PreLayoutSTA以及形式验证(RTL代码与逻辑综合生成的Netlist之间);

  3.Floorplan、Placement、ClockTree插入以及全局布线(GlobalRouting)

  4.形式验证(逻辑综合的Netlist与带有CT信息的Netlist之间)、STA;

  5.DetailedRouting,DRC;

  6.PostlayoutSTA,带有反标延迟信息的门级仿真;

  7.Tape-Out

  当然,这还是一个比较粗的流程,其中每个步骤还可以分得更细,通常所说的前端设计主要包括上述流程中的1,2,4,6这几个部分。同时,这个流程是一个迭代的过程。

典型的ASIC设计流程(详细)

  1. 结构及电气规定。
  2. RTL级代码设计和仿真测试平台文件预备。
  3. 为具有存储单元的模块插进BIST(Design For test 设计)。
  4. 为了验证设计功能,进行完全设计的动态仿真。
  5. 设计环境设置。包括使用的设计库和其他一些环境变量。
  6. 使用 Design Compiler工具,约束和综合设计,并且加进扫描链(或者JTAG)。
  7. 使用 Design Compiler自带静态时序分析器,进行模块级静态时序分析。
  8. 使用 Formality工具,进行 RTL级和综合后门级网表的 Formal Verification。
  9. 版图布局布线之前,使用PrimeTime工具进行整个设计的静态时序分析。
  10. 将时序约束前标注到版图工具。
  11. 时序驱动的单元布局,时钟树插进和全局布线。
  12. 将时钟树插进到DC的原始设计中。
  13. 使用 Formality,对综合后网表和插进时钟树网表进行 Formal Verification。
  14. 从全局布线后的版图中提取出估算的时间延时信息。
  15. 将估算的时间延时信息反标注到Design Compiler或者 Primetime。
  16. 在Primetime中进行静态时序分析。
  17. 在Design Compiler中进行设计优化。
  18. 设计的具体布线。
  19. 从具体布线的设计中提取出实际时间延时信息。
  20. 将提取出的实际时间延时信息反标注到Design Compiler或者Primetime中。
  21. 使用Primetime进行版图后的静态时序分析。
  22. 在 Design Compiler中进行设计优化(假如需要)。
  23. 进行版图后带时间信息的门级仿真。
  24. LVS和DRC验证,然后流片。

参考文献:

[1] 转载地址:http://www.eetop.cn/blog/html/83/40783-52928.html

(转)ASIC设计中各个阶段需要注意的问题——节选的更多相关文章

  1. Verilog设计中的锁存器

    问题: 什么是锁存器? 什么时候出现锁存器? 锁存器对电路有什么影响? 如何在FPGA设计中避免锁存器? 在FPGA设计中应该避免锁存器.实际上,锁存器与D触发器实现的逻辑功能基本相同,都有暂存数据的 ...

  2. FPGA设计中的电源管理(转载)

    过去,FPGA设计者主要关心时序和面积使用率问题.但随着FPGA不断取代ASSP和ASIC器件,设计者们现正期望能够开发低功耗设计,在设计流程早期就能对功耗进行正确估算,以及管理和对与FPGA相关的各 ...

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

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <机器学习在IC设计中的应用(二)--根据GBA时序结果来预测PBA> AOCV AOCV全称:Advanced OCV ...

  4. ASIC设计-终极指南

    ASIC设计-终极指南 ASIC Design – The Ultimate Guide ASIC设计-终极指南 ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解 ...

  5. 【配色指南】UI设计中使用明亮色彩的利与弊,你知多少?

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 合理运用色彩是每个设计师都应必须具备的技能,特别是插画师和UI设计师.随着扁平化设计和Materia ...

  6. 界面设计中如何增强CTA按钮召唤力?

    以下内容由Mockplus(摹客)团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 网页和软件应用之类数字产品的有效交互系统一般是由拥有各种任务和功能的小元素构成.而为创建更加 ...

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

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

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

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

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

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

随机推荐

  1. Linux下的RTC子系统

    转自:http://blog.csdn.net/weiqing1981127/article/details/8484268 实时时钟的作用主要是为操作系统提供一个可靠的时间,并在断电下,RTC时钟也 ...

  2. Ubuntu install JDK

    1.#下载JDK,记住保存的目录 2. sudo mkdir /usr/java 3. sudo tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/java 4. ...

  3. python_学习笔记

    1,多态:对不同类的对象使用同样的操作,但使用函数显示地检查类型能够毁掉多态(eg: type,isinstance,issubclass) 封装:多态让用户对于不知道是什么类的对象进行方法调用,而封 ...

  4. Aaronson

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  5. 把myeclipse中html/jsp文件的视图调到只看代码

    烦恼———————————————————— 解决方法: ok---------------------------- *.jsp 同理

  6. 为Docker容器设置静态IP

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 创建docker容器 docker run -it --name=yh -h yh --net=none de ...

  7. 死磕 java同步系列之volatile解析

    问题 (1)volatile是如何保证可见性的? (2)volatile是如何禁止重排序的? (3)volatile的实现原理? (4)volatile的缺陷? 简介 volatile可以说是Java ...

  8. vue中使用chart.js

    1,安装chart.js和vue-chart.js npm install chart.js --save npm install vue-chart.js --save 2,独立文件,方便修改 封装 ...

  9. vue中引入公共方法并使用

    test.js文件(公共js文件) function myFun() { console.log('this is my function') } export { myfun } // 2 expo ...

  10. C++里的强制类型转换符reinterpret_cast、static_cast 、dynamic_cast、const_cast 区别

    C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的 ...