IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计。

有人将IC设计和房屋设计做了比较详细的类比:


一、前端设计的主要流程:

1、规格制定

芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。

2、详细设计

Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。

3、HDL编码

使用硬件描述语言(VHDLVerilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。

语言输入工具:

  • Summit 公司的 VisualHDL
  • Mentor 公司的 Renoir

图形输入工具:

  • Cadence的composer
  • viewlogic的viewdraw

4、仿真验证

仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。

仿真工具:

Verilog HDL:

  • Mentor公司的Modelsim
  • Synopsys公司的VCS
  • Cadence公司的NC-Verilog、Verilog—XL

VHDL:

  • Mentor公司的Modelsim
  • Synopsys公司的VSS
  • Cadence公司的NC-VHDL、Leapfrog

它们均可以对RTL级的代码进行设计验证。逻辑综合之前的该部分仿真称为前仿真,也即功能仿真/行为仿真/逻辑仿真。接下来在版图设计完成之后还要再进行一次仿真,称为后仿真,也即时序仿真

5、逻辑综合

仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的

逻辑综合工具:

  • Synopsys的Design Compiler、Behavial Compiler、DC-Expert
  • Cadence的buildgates、Envisia Ambit®
  • Mentor的Leonardo

6、STA

Static Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。

STA工具:

  • Synopsys的Prime Time。
  • Cadence的Pearl、Tempus
  • Mentor的SST Velocity

7、形式验证

这也是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。

形式验证工具:

  • Synopsys的Formality
  • Cadence的LEC、FormalCheck
  • Mentor的FormalPro

前端设计的流程到这里就结束了。从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路

二、Backend design flow后端设计流程 :

1、DFT

Design For Test,可测性设计。芯片内部往往都自带测试电路,DFT的目的就是在设计的时候就考虑将来的测试。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。关于DFT,有些书上有详细介绍,对照图片就好理解一点。

DFT工具:

  • BSCAN技术– 测试IO pad,主要实现工具是:Mentor的BSDArchit、sysnopsy的BSD Compiler;
  • MBIST技术– 测试mem,主要实现工具是:Mentor的MBISTArchitect 、Tessent mbist;
  • ATPG 技术– 测试std-logic,主要实现工具是:产生ATPG使用Mentor的 TestKompress 、synopsys TetraMAX,插入scan chain主要使用synopsys 的DFT compiler。

2、布局规划(FloorPlan)

布局规划就是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块RAMI/O引脚等等。布局规划能直接影响芯片最终的面积。

布局规划工具:

  • Synopsys的Astro、Physical Compiler、IC Compiler
  • Cadence的Encounter、PKS、Silicon Ensemble、Design Planner

3、CTS

Clock Tree Synthesis,时钟树综合,简单点说就是时钟的布线。由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。这也是为什么时钟信号需要单独布线的原因。

CTS工具:

  • Synopsys的Clock Tree Compiler
  • Cadence的CT-Gen

4、布线(Place & Route)

布线就是将前端提供的网表(netlist),实现成版图(layout),包括各种标准单元(基本逻辑门电路)之间的走线。比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上就是这里金属布线可以达到的最小宽度,从微观上看就是MOS管的沟道长度

布线工具:

  • Synopsys的Astro、Physical Compiler、IC Compiler
  • Cadence的Encounter、PKS、Silicon Ensemble、Design Planner

5、寄生参数提取

由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生信号噪声,串扰和反射。这些效应会产生信号完整性问题,导致信号电压波动和变化,如果严重就会导致信号失真错误。提取寄生参数进行再次的分析验证,分析信号完整性问题是非常重要的。

寄生参数提取工具:

  • Synopsys的Star-RCXT
  • Mentor的Calibre xRC
  • Cadence的 Assure RCX

6、物理版图验证

对布线完成的版图我们还需要进行功能和时序上的验证,验证项目很多,如:

  • LVS(Layout Vs Schematic)验证:简单说,就是版图与逻辑综合后的门级电路图的对比验证
  • DRC(Design Rule Checking):设计规则检查,检查连线间距,连线宽度等是否满足工艺要求

常用的LVS/DRC工具:

  • Synopsys的Hercules
  • Cadence的Dracula、diva、assura
  • Mentor的Calibre

版图验证部分,我们还需要进行时序仿真,也就是之前说的后仿真。这次的仿真不再是简单的功能仿真,而是需要考虑实际的时延等因素。

后仿真工具:和前仿真工具一样。

实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题,在此不说了。

物理版图验证完成也就是整个芯片设计阶段完成,下面的就是芯片制造了。物理版图以GDSII的文件格式交给芯片代工厂(称为Foundry)在晶圆硅片上做出实际的电路,再进行封装和测试,就得到了我们实际看见的芯片。

参考链接:中文系同学都能听懂的集成电路设计流程

参考链接:芯片设计流程和实用工具详解

芯片设计流程及各步骤使用工具简介相关推荐

  1. 我的2022和2023(技术总结、开发工具简介和未来展望)

    文章目录 前言 1. 常用网址的总结 2. 技术总结 2.1 网络方面的总结 2.1.1 Segmentation:Unet++ 2.1.2 Segmentation:SegFormer 2.1.3 ...

  2. 终于有人讲透了芯片设计流程!(电子人必读)

    感谢作者不吝赐教. 转载自: https://www.sohu.com/a/168417615_737900 芯片,指的是内含集成电路的硅片,所以芯片又被称集成电路,可能只有2.5厘米见方大小,但是却 ...

  3. FPGA与普通数字芯片设计流程的差异

    FPGA与普通数字芯片设计流程的差异 FPGA与普通数字芯片设计流程的差异 设计步骤 FPGA 数字芯片 逻辑设计与仿真 在这一点上二者非常接近,一般采用硬件设计语言进行设计,并进行功能仿真.FPGA ...

  4. Synopsys工具简介

    http://hi.baidu.com/hieda/blog/item/627e9fdd2526e0ec76c638e3.html Synopsys工具简介 〓 LEDA LEDA?是可编程的语法和设 ...

  5. 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )

    文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...

  6. Python静态类型解析工具简介和实践

    简介: Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型,但类型不匹配的操作是不被允许的.动态类型帮助开发者写代码轻松愉快,然而,俗话说:动态一时爽,重构火葬场.动态类型也带来了许 ...

  7. [转载]Eclipse开发工具简介

    Eclipse开发工具简介 Eclipse是开放源代码的项目,你可以到www.eclipse.org去 免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stabl ...

  8. Python 静态类型解析工具简介和实践

    一 背景 Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型(动态),但类型不匹配的操作是不被允许的(强类型,如str和int两个变量无法相加). 动态类型帮助开发者写代码轻松愉快, ...

  9. 芯片验证自学,IC验证自学入门教程:ASIC芯片设计流程讲解

    作者:小白蒋,材料专业自学芯片验证,交流邮箱:jsujiang@yeah.net 最近在学习IC验证相关知识,整理了一下IC芯片设计流程,本人刚开始学习,不对的地方欢迎留言讨论 ASCI设计芯片流程 ...

最新文章

  1. Cacti安装详细步骤
  2. npoi css,NPOI颜色对照表
  3. mysqldump工具,工作的本质是什么呢?(dump表的时候,是否会产生drop表的语句)
  4. TCP/IP 三次握手和四次挥手
  5. 进阶– Java EE 7前端5强
  6. 使用循环链表实现一个通讯录的管理程序_【LeetCode链表题型总结】
  7. 光电整纬机常见操作问题
  8. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
  9. html背景图片半透明写法,CSS实现背景图片透明而文字不透明效果的两种方法
  10. H264/AVC-基本概念和码流结构
  11. Unity创建注册表并写入
  12. std::is_same的用法
  13. Vsphere平台虚拟机vmdk文件丢失重建
  14. Viddy排名App Store免费应用第二,力压InstagramDraw Sth
  15. 固定定位(fixed)和粘性定位(sticky)的比较
  16. #边学边记 第一章 信息系统与信息化(2)
  17. 学生php作业,作业作业作业作业作业
  18. Python基础与拾遗9:Python中的函数与作用域
  19. 鸿蒙手机摄影,鸿蒙系统正式亮相 华为:手机随时可以使用
  20. C语言课程设计服装店,《C语言程序设计》课程设计实验报告-服装网店信息管理系统.doc...

热门文章

  1. 引流,引流脚本,引流软件,微信引流,引流方法交流
  2. COS系统安装-图片版
  3. AIX环境:su 到实例用户下连库并执行Db2命令方法
  4. python生成微信个性签名的词云图
  5. 一批脑洞大开的CSS特效
  6. iOS网络(一): Http协议通信及NSURLConnection的GET和POST方法,小文件下载
  7. 九度OJ 1177:查找 (字符串操作)
  8. Python web开发框架—— Pyramid学习(一)
  9. Android性能优化典范(五)
  10. 电子产品安规测试及检测设备