IC设计行业是一个高科技行业,有着复杂而细致的分工,严格的流程规范、多种不同类型的EDA工具。下面简单概述以下几个方面。
IC设计公司的分类
IC设计公司有多种分类方法。若按有无芯片生产能力来分,可以分为兼具设计与生产能力(Integrated Design and Manufacture,IDM)的企业和只有设计能力,找专门工厂进行生产(Fabless)的企业两大类。
历史上最早出现的第一类企业,当时芯片仅仅是印刷电路板的微缩版本,生产和设计分工并不明确。随着芯片技术的发展,设计和生产逐渐分离,并各自按照不同的技术路线发展演进。
以台积电为代表,开启了芯片“代工”的新模式,即代替设计公司生产芯片的模式。只要设计公司提供规定规格格式的设计文件,代工厂就能够生产出他们想要的芯片。这种代工厂称为 Foundry。芯片代工厂的成立,让那些资金较少但又有芯片设计需求的企业和个人成立专门的设计公司,从而形成了当前的“设计公司+代工厂”模式。就如当年“微软+IBM”的商业联合力压苹果,占据了个人计算机的大部分份额。韩国三星电子属于IDM公司,但它除了满足自己的需求外,偶尔也做代工,苹果设计的手机芯片有一部分由台积电代工,另一部分由三星代工。Intel、TI、ST等国外大厂都是IDM公司,但由于生产技术的强保密性,一些企业的生产技术、加工精度已相对落后,不在属于芯片制造的第一梯队。
数字IC设计流程
只关注设计流程的主干部分,则可以看出主要分为3步。第1步由数字IC设计工程师编写电路设计文件,该文件常用verilog设计语言描述,实际上就是一个文本文件,称为寄存器传输层(Register Transfer Level,RTL)设计文件。第2步将RTL文件输入至综合工具,被工具转换为实际电子元器件的连接,称为综合(Synthesis),输出称为网表,也属于存文本的。第3步将综合网表输入后端布局布线工具中,该工具能将文本形式的网表文件变为实际电路提,类似于常见的PCB图,称为版图(Layout)。版图的绘制主要包含2个问题:1个是元器件如何摆放,即,布局问题(Place),第2个是元器件如何连接,即布线问题(Route)。版图为Foundry 能够识别的通用格式,根据它来制造芯片。制造芯片的过程称为流片,有设计厂将版图交付给Foundry的行为称为交付流片。
验证和验收(SignOff)负责对设计质量进行把控和最终验收。数字前端设计完之后,将RTL设计文件提交给数字验证,用以确定设计的正确性和合理性。对RTL设计文件的验证和仿真称为前仿,即,版图成形前的仿真。在验证过程中,由验证人员编写的测试平台(Testbench)文件是对实际应用环境的仿真。当后端完成版图设计后,还要经过时序和功耗检查,只有合格后才能交付给Foundry,这种检查叫做SignOff检查。若检查不通过,首先是数字后端工程师自己努力,重新绘制版图或微调元器件位置,若无法达到目的,则再修改综合策略,重新综合,并绘制版图,若仍无法达到目的,要反馈到前端IC设计,在RTL上进行调整。在SignOff合格后,需要将最终网表和延迟信息提供给验证人员,进行后仿。所谓后仿,即,版图成形后的仿真。
可测性设计(Design For Test,DFT)属于附属工序,在芯片中加入一些附属电路,这些电路与芯片的主要功能无关。用于在生产过程中使用测试机台快速判断芯片的功能是否完好,内部结构是否正常。如果芯片中包含DFT电路,则测试机台可以向芯片的某些引脚发送实现准备好的测试向量,在芯片的另一些引脚上采样芯片对测试向量的反应。将事先准备好的预期效果与实际采样得到的结果进行对比,从而判断芯片的内部功能是否正常。DFT功能被称为扫描(Scan),即,用测试机台扫描芯片内部之意。DFT检查的是生产差错,而不是设计问题。不是必需的。
IC设计工具
数字前端编写RTL,需要文本编辑器即可,一般用 Vim或图形化增强版Gvim,Linux和Windows都可用,且免费的。
设计中主要的电子设计自动化(Electronic Design Automation,EDA)工具。世界三大巨头分别是铿腾(Cadence)、新思(Synopsys)和明导(Mentor)。粗略地说,数字设计较常用Synopsys,而模拟设计常用Cadence。
表 常用EDA软件(括号中为公司名)
数字/模拟 | 数字流程 | 常用软件 | 其他软件 |
---|---|---|---|
数字 | RTL编写 | Vim/Gvim | 普通文本编辑器 |
数字 | 仿真 | VCS (Synopsys) | Insicive(Cadence) |
数字 | 看波形 | Verdi(Synopsys) | DVE (Synopsys)、Simvision(Cadence)、ModelSim(Mentor) |
数字 | 设计检查 | Spyglass(Synopsys) | nLint(Cadence) |
数字 | 综合 | DC(Synopsys) | Genus(Cadence) |
数字 | 时序验收 | PT(Synopsys) | Tempus(Cadence) |
数字 | 自动布局布线 | ICC2(Synopsys)、 Innouvus(Cadence) | |
数字 | 设计版图形式验证 | Formality(Synopsys) | Conformal(Cadence) |
数字 | 提取寄生参数 | StarRC(Synopsys) | |
模拟 | 原理图/版图/仿真等 | Virtuoso(Cadence) | |
模拟 | 寄生抽取/DRC/LVS | Calibre(Mentor) |
数字IC设计与FPGA开发的区别
FPGA的特点是可实现硬件逻辑的灵活连接,元器件之间的连接关系可以修改,而普通芯片是固定的。FPGA配套的EDA是一个集成开发环境,它集编辑、语法检查、仿真、综合、布局布线、时序分析于一身。目前主流的三大FPGA厂商及其EDA开发环境如下表所示:
表 主流三大FPGA厂商及其EDA开发环境
厂商 | EDA开发环境 |
---|---|
赛灵思(Xilinx) | Vivado(原名ISE) |
阿尔特拉(Altera) | Quartus |
赛迪斯(Lattice) | Diamone |
数字芯片中的元器件都是真实元器件。例如,芯片设计中的与门,在电路中就对应一个真正的与门,而FPGA设计中的与门,由一个查找表(Look Up Table,LUT)实现。不仅是与门,FPGA中的其他电路也多是由LUT实现的。保证其可修改性,即,一个LUT可以在不同的设计中用作不同的功能,但同时也增加了单个门电路的面积、功耗,并降低了处理速度。同一功能,在芯片中实现比在FPGA中实现,其面积、功耗要小的多,同时速度也更快。FPGA主要是可修改性、易实现性。使用FPGA实现要比从头开始研制芯片周期短得多,若做成芯片,则成本会更加划算。可以用FPGA实现当做验证中的一环,或是直接采用FPGA设计功能。