ASIC电路设计调研报告书.docx
《ASIC电路设计调研报告书.docx》由会员分享,可在线阅读,更多相关《ASIC电路设计调研报告书.docx(28页珍藏版)》请在冰豆网上搜索。
![ASIC电路设计调研报告书.docx](https://file1.bdocx.com/fileroot1/2023-2/7/c96c7fa4-4d19-4675-9a15-ca1890d300ba/c96c7fa4-4d19-4675-9a15-ca1890d300ba1.gif)
ASIC电路设计调研报告书
ASIC设计
ASIC作为现在的一个热门技术,受到了很大的关注。
本文将对ASIC做一个简介。
一、什么是ASIC
ASIC是ApplicationSpecificIntegratedCircuit的缩写,中文意为“专用集成电路”。
它与批量生产地通用芯片不同,通常是应特定用户要求和特定电子系统的需要而设计、制造的集成电路,一般产量较小、可靠性更高、速度更快。
二、ASIC的发展历史
谈到ASIC的历史就不得不从集成电路(IC)的历史讲起,因为ASIC是从用途上分的,其本质还是集成电路。
2.1集成电路的简史
1947年贝尔实验室(BellLaboratory)发明了晶体管,随后肖特基(Schokley)在1949年发明了双极性晶体管(BipolarTransistor)。
直到1956年才出现了第一个双极性数字逻辑门,这是由Harris发明的分立元件构成的。
1958年,美国仪器公司(TexasInstruments)的JackKilby提出了集成电路的设想,JackKilby因这一突破性的构想而获得了诺贝尔奖。
随后1962年,仙童半导体(FairchildSemiconductor)推出了真正成功的IC逻辑系列TTL(Transistor-TransistorLogic),1974年出现了ECL(EmitterCoupledLogic)系列。
同时,也造就了一大批半导体大公司,如仙童,仪器,国家半导体(NationalSemiconductor)等。
这一逻辑系列直到20世纪80年代都一直占据着数字半导体市场的主要份额。
但MOS集成电路最终取代其,在数字IC中占据了支配地位。
MOSFET(MetalOxideSiliconFiledEffectTransistor)原称IGFET(IsolatedGaeFieldEffectsTransistor),其基本原理是早在1925年由J.Lilienfeld(加拿大人)在一项专利中提出的,1935年Q.Heil也在英格兰独立提出了这一理论。
然而由于对材料和门的稳定性问题认识不足,是这个器件的实际使用推迟了很长一段时间。
这些问题一经解决,MOS数字集成电路在20世纪70年代早期就开始应用了。
令人惊奇的是,最初提出的MOS逻辑门是CMOS类型的,并且这一趋势继续到20世纪60年代末。
制造工艺的复杂性使这些器件的完全使用又推迟了20年。
而不同的是,第一个使用的MOS集成电路是仅用PMOS逻辑来实现的。
数字集成电路革命的第二个时代无疑是Intel公司在1972退出的微处理器4004和1974年推出的微处理器8008。
此后,MOS集成电路便占据了数字集成电路的支配地位。
[1]
2.2ASIC的发展状况
在可编程逻辑器件出现之前,ASIC占据了专用领域的绝对地位,因为当时的人们无从选择。
但在20世纪70年代,相继出现了初级的可编程逻辑器件PLA、PAL、GAL等,20世纪80年代FPGA和CPLD相继出现。
可编程逻辑控制器件的成本低、开发周期短、风险小,于是专用领域里的应用开始倾向于可编程逻辑器件。
但是早期的可编程逻辑器件速度慢、编程门数少等因素,使人们在中高端应用时有不得不采用ASIC技术。
随着ASIC和可编程逻辑器件各自技术的不断发展,人们总是不断地在两者之间摆来摆去。
最近两年FPGA和CPLD的制造工艺有了很大的提高——最先进的FPGA的制造工艺已经达到了40nm——加之ASIC成本高昂、风险较大以及金融危机的影响,于是人们又把目光投向了可编程逻辑器件。
总之,ASIC和可编程逻辑器件是螺旋式发展的。
2.3ASIC的发展的重要因素
20世纪80年代以后,半导体制造工艺的不断提高、EDA工具的快速发展,使得ASIC技术有了迅猛发展。
2.3.1半导体制造工艺的提高
20世纪80年代初,半导体的制造工艺在1um以上,随后制造工艺不断缩小:
0.8um(1993年)0.25um(1999年)0.13um(2002年)90nm(2004年)65nm(2006年)45nm(2007年)。
随着工艺的不断缩小,芯片的速度越来越快,集成度也越来越高,这些都意味着芯片的功能越来越强大。
此外,多阈值工艺的发展也使芯片更加省电。
2.3.2EDA工具的发展
1971年,Intel推出了世界上第一块微处理器——Intel4004,它片集成了2250个晶体管,它几乎完全是人工设计的。
但随着IC集成度几何级数的提高,人工设计显然不再可能。
于是,出现了早期的计算机辅助设计(CAD)技术,后来逐渐演变为计算机辅助工程(CAE)。
到20世纪90年代,终于演变为电子设计自动化(ElectronicDesignAutomation,EDA)。
EDA技术贯穿了IC设计的全流程——前端设计、仿真以及后端设计、仿真。
EDA技术使IC设计大大简化,并缩短了设计时间,提高了设计可靠性。
三、ASIC设计
本章将详细介绍ASIC电路的原理及设计。
3.1ASIC的类型
设计方法而言,设计集成电路的方法可以分为全定制、半定制两种方式。
3.1.1全定制设计
全定制ASIC是利用集成电路的最基本设计方法(不使用现有库单元),对集成电路中所有的元器件进行精工细作的设计方法。
全定制设计可以实现最小面积,最佳布线布局、最优功耗速度积,得到最好的电特性。
该方法尤其适宜于模拟电路,数模混合电路以及对速度、功耗、管芯面积、其它器件特性(如线性度、对称性、电流容量、耐压等)有特殊要求的场合;或者在没有现成元件库的场合。
特点:
精工细作,设计要求高、周期长,设计成本昂贵。
由于单元库和功能模块电路越加成熟,全定制设计的方法渐渐被半定制方法所取代。
在现在的IC设计中,整个电路均采用全定制设计的现象越来越少。
全定制设计要求:
全定制设计要考虑工艺条件,根据电路的复杂和难度决定器件工艺类型、布线层数、材料参数、工艺方法、极限参数、成品率等因素。
需要经验和技巧,掌握各种设计规则和方法,一般由专业微电子IC设计人员完成;常规设计可以借鉴以往的设计,部分器件需要根据电特性单独设计;布局、布线、排版组合等均需要反覆斟酌调整,按最佳尺寸、最合理布局、最短连线、最便捷引脚等设计原则设计版图。
版图设计与工艺相关,要充分了解工艺规,根据工艺参数和工艺要求合理设计版图和工艺。
3.1.2半定制设计方法
半定制设计方法又分成基于标准单元的设计方法和基于门阵列的设计方法。
基于标准单元的设计方法是:
将预先设计好的称为标准单元的逻辑单元,如与门,或门,多路开关,触发器等,按照某种特定的规则排列,与预先设计好的大型单元一起组成ASIC。
基于标准单元的ASIC又称为CBIC(CellbasedIC)。
基于门阵列的设计方法是在预先制定的具有晶体管阵列的基片或母片上通过掩膜互连的方法完成专用集成电路设计。
半定制主要适合于开发周期短,低开发成本、投资、风险小的小批量数字电路设计。
1.基于标准单元的设计方法
该方法采用预先设计好的称为标准单元的逻辑单元,如门电路、多路开关、触发器、时钟发生器等,将它们按照某种特定的规则排列成阵列,做成半导体门阵列母片或基片,然后根据电路功能和要求用掩膜版将所需的逻辑单元连接成所需的专用集成电路。
单元库中所有的标准单元均采用定制方法预先设计,如同搭积木或砌墙一样拼接起来,通常按照等高不等宽的原则排列,留出宽度可调的布线通道。
CBIC的主要优、缺点:
a.用预先设计、预先测试、预定特性的标准单元库,省时、省钱、少风险地完成ASIC设计任务。
b.设计人员只需确定标准单元的布局以及CBIC中的互连。
c.标准单元可以置放于芯片的任何位置。
d.所有掩膜层是定制的;
e.可嵌定制的功能单元;
f.制造周期较短,开发成本不是太高。
g.需要花钱购买或自己设计标准单元库;
h.要花较多的时间进行掩膜层的互连设计。
2.基于门阵列的ASIC
门阵列是将晶体管作为最小单元重复排列组成基本阵列,做成半导体门阵列母片或基片,然后根据电路功能和要求用掩膜版将所需的逻辑单元连接成所需的专用集成电路。
用门阵列设计的ASIC中,只有上面几层用作晶体管互连的金属层由设计人员用全定制掩膜方法确定,这类门阵列称为掩膜式门阵列MGA(maskedgatearray)。
门阵列中的逻辑单元称为宏单元,其中每个逻辑单元的基本单元版图相同,只有单元以及单元之间的互连是定制的。
客户设计人员可以从门阵列单元库中选择预先设计和预定特性逻辑单元或宏单元,进行定制的互连设计。
门阵列主要适合于开发周期短,低开发成本的小批量数字电路设计。
3.2ASIC的设计概述
现代IC系统设计包括算法设计、软/硬件划分、存储器分配、RTL设计、仿真、验证、综合、静态时序分析、等价性验证、Floorplan、时钟树生成、布局布线、可测性设计、低功耗设计、信号完整性分析等容。
为清楚起见,我们将IC设计分为三个部分:
系统设计、电路/逻辑设计、物理设计。
如图3.1所示。
图3.1IC设计的步骤
系统设计主要包括算法设计和架构设计,具体容如下:
a.给出浮点数算法;
b.进行软、硬件划分;
c.给出IC设计中数据的定点表示;
d.给出定点算法;
e.结构的并行性、流水线设计;
f.存储器分配。
电路/逻辑设计是将系统设计的算法、架构付诸实现的过程。
它分为数字设计与模拟设计两种。
对于数字设计,多采用Verilog/VHDL语言在寄存器传输级完成设计,由综合工具生成网表;对于模拟设计,一般采用电路图与SPICE语言来完成设计。
物理设计是IC设计的最后一步。
物理设计得到的GDSII文件被送到工厂进行生产。
对于模拟电路和有特殊要求的数字电路,采用定制方法完成物理设计;对于一般的数字设计,采用自动布局布线方法完成物理设计。
3.2.1系统级设计
IC系统的架构正向“系统级芯片”发展。
以往,系统级设计主要是指板级设计。
随着硅工艺从0.18µm向0.13µm以及90nm工艺转变,单个芯片上可以集成大量的处理器、外围器件和大于1MB的SRAM,在单个芯片上能够实现原来多个硅芯片才能实现的功能。
在现在的IC设计中,系统级设计占的比重也越来越大。
系统级设计主要包括规的制定、算法设计与架构设计几个方面。
创建系统设计规是IC系统设计的第一步。
规的定义必须严格准确。
有些对安全等级要求高的场合,需要用形式化语言来描述规。
如果可能,在制定规前要多看一些同类产品的数据单(datasheet)。
算法(或行为模型)可以看作一个IC系统的可执行规。
对于通信、视频这类包含大量数字信号处理的系统,算法设计尤其重要。
算法工程师通常用C语言或者MATLAB来研究算法。
MATLAB编程比较方便,但对于大型设计,往往更需要C语言较快的运行速度。
现在,越来越多的设计者开始采用SystemC进行架构设计。
SystemC是一种具有C++语法特征的硬件描述语言。
SystemC的真正优势在于:
a.它有很强的系统描述能力。
它可以在很高的抽象层次上方便地描述大型系统(虽然VHDL也具有系统级的描述能力,但相当有限)。
用SystemC可以很方便地建立系统的可执行规,从而加快开发进度。
b.可以用一种语言来描述软、硬件,有利于设计者比较各种软、硬件划分方案,并在设计早期进行协同验证。
c.设计者可以将SystemC模型逐个替换为Verilog/VHDL的RTL实现。
新的RTL模块可以与其他SystemC模型一起编译仿真。
架构设计是系统设计的重要一步。
通过性能估算及仿真,设计者可以确定设计中所采用的数据通路结构。
例如,设计中需要用多大的乘法器,采用何种滤波器的结构,采用并行方式还是串行方式更合理,是否需要流水线(pipeline),数据宽度选择多少。
这些都属于架构设计的畴。
架构设计与算法设计紧密相联。
架构设计需要确定各模块如何划分、模块如何相连、存储器如何分配等问题。
在架构设计时,要仔细地设计模块之间的接口,把芯片实现的功能和时序局部化。
这样,每个模块都可以在隔离的状态下独立地进行设计和验证。
在设计架构时,需要考虑哪些模块由IP完成,哪些由自己来实现。
在一个片上系统的设计中,要用到许多IP。
IP有软核、固核和硬核之分:
a.硬核是经流片验证过的版图。
它的可重复使用性最低,设计者不能进行任何改动,使用起来相当于库单元。
b.软核是可综合的RTL模型,可重复使用,灵活性高。
c.固核是带有布局规划信息的网表。
硬核的优点在于已经通过了物理设计,可以不加修改地直接使用,时序是收敛的;缺点是可能会使芯片难以布局布线。
软核避免了硬核的上述弊端,但存在开发周期长的缺点。
固核的易用性与灵活性介于硬核和软核之间。
在实际的IC系统开发过程中,具体采用何种方式,还需要设计者权衡考虑。
算法架构完成后,需要转换为逻辑/电路实现。
在许多IC系统设计中,这种转换要依靠手工来完成。
利用现在的系统级设计工具(如Synopsys公司的SystemCCompiler),可以将SystemC描述的系统模型翻译成RTL级Verilog/VHDL代码,也可以将其直接翻译成门级网表。
系统设计对设计者提出了非常高的要求。
设计者往往要具备嵌入式处理器、数字信号处理器、存储器、系统总线等各方面的知识,能够平衡系统存储器带宽和DSP的处理功能两方面的要求,并且能够与软件开发者协同工作。
在系统设计领域已出现了一些EDA工具,如Synopsys公司的CoCentricSystemStudio、Cadence公司的SPW(SignalProcessingWorkstation),但此类工具还远未达到人们的期望,因此未得到推广,仅在一些特定的领域(如GSM)有一些应用。
3.2.2电路/逻辑设计
电路/逻辑设计分为两方面:
数字电路设计和模拟电路设计。
下面首先介绍数字电路设计。
数字电路设计一般从RTL(寄存器传输级)开始。
设计者根据上一阶段得到的各模块的规,用Verilog/VHDL语言完成RTL代码。
RTL代码完成后,可以借助nLint等语法检查工具改进代码质量。
接下来进行RTL仿真,以保证设计功能正确。
我们将在后面对仿真进行说明。
RTL仿真无误后,用逻辑综合工具将RTL代码转成门级网表,再将门级网表交由后端进行布局布线。
图3.2给出了这一流程的示意。
虚线以上为逻辑设计,虚线以下是物理设计。
图3.2采用逻辑综合的步骤
在一些深亚微米设计中,物理设计与逻辑综合已开始融合,这就是“物理综合”的设计方法。
物理综合与逻辑综合的差异在于:
在物理综合流程中,可以在芯片规划(Floorplan)之后,采用物理综合工具(如physicalcompiler)对网表自动进行反复的综合和布局。
由于这时工具能够得到每个单元上较为准确的连线信息,因此可以消除设计不收敛的问题,提高了芯片的性能。
图3.3给出了物理综合的步骤。
图3.3采用物理综合的步骤
在数字电路设计阶段,设计者根据设计规,需要完成如下工作:
a.写RTL代码。
b.将RTL代码综合为门级网表。
如果需要,加入JTAG/扫描链/clockgating等容。
c.进行时序检查、等价性检查、测试覆盖率估计、功耗分析等。
逻辑设计要求设计者对设计要求、基本电路结构、综合库、RTL语言、逻辑仿真等非常熟悉,并了解可测性设计、低功耗设计、可复用设计等技术。
模拟电路的设计一般从晶体管级开始,采用手工设计生成最终网表。
图3.4给出了模拟电路的设计流程。
图3.4模拟部分的设计流程
实际的IC系统往往是数/模混合系统。
数字IC与模拟IC单独设计、各自验证的流程导致芯片开发效率降低。
目前已出现了数/模混合IC的设计方法。
图3.5给出了数/模混合仿真的流程。
图3.5数/模混合仿真的流程
3.2.3物理设计
芯片级的版图设计包括两部分容:
全定制电路的版图设计和自动布局布线的版图设计。
其中,全定制方法适用于模拟电路和那些对性能面积要求较高的数字部分(例如CPU中的关键数据通路),而绝大多数数字设计采用自动布局布线的方法来生成版图。
这两部分版图完成后,要在芯片级别整合在一起。
图3.6给出了自动布局布线(APR)的流程。
图3.6自动布局布线的版图设计流程
1.顶层规划
在实际的大型芯片设计中,往往很早就确定了芯片中各个块的位置。
也就是说,芯片的顶层规划常常在进行电路/逻辑设计的时候就开始了。
图3.7给出了芯片顶层规划的步骤。
图3.7芯片顶层规划的步骤
在进行芯片顶层规划的时候,要考虑如下因素:
a.如何使芯片的面积尽可能地小;
b.各个宏(macros)/块(block)如何与PAD连接;
c.电源方案;
d.引脚(PIN)方案;
e.分析顶层的布线信息,通过合理地放置块,合理
f.地定义区域及分组,使得连线的复杂性不会过高。
2.布局布线
完成芯片顶层规划之后,接下来进行布局布线。
通常,这一阶段可分为四个步骤:
(1)布局。
(2)扫描链的优化。
PR工具重新对扫描链中的单元排序,以便降低布线的复杂性。
(3)时钟树的综合及布线。
由于时钟是设计中最为重要的信号线,因此在布线时要首先布时钟线。
在通常的PR工具中,通常将时钟树的生成、时钟的布线作为一个单独的步骤,称为时钟树综合。
(4)布线。
图3.8给出了布局布线的步骤。
图3.8布局布线
3.3ASIC系统验证分析概述
究竟要设计什么样的电路?
如何保证制造出的电路和原来的设计一致?
生产出的产品功耗与速度是否与预期一致?
这些都是设计者必须要面对的问题。
现在的IC系统异常复杂,设计时容易出错,同时应用往往对它的可靠性要求极高。
为了验证IC系统是否正确,人们提出了种种验证方法,期望借助EDA工具的帮助,尽可能地找出错误。
实际上,验证属于设计的畴,但为清楚起见,这里用单独一节来进行介绍。
验证贯穿了IC系统设计的每个阶段(从算法架构设计直至物理设计)。
在系统设计阶段,采用仿真方法进行性能分析和协议分析。
在电路/逻辑设计阶段,采用软硬件协同验证:
用仿真和FPGA验证功能;用静态时序分析工具验证时序;用形式验证检查综合过程及ECO是否正确。
在物理设计阶段,采用物理验证(LVS、DRC等):
用静态时序工具验证最终时序;用形式验证检查布局布线过程及ECO是否正确。
在验证中,错误发现得越早,对开发进度的影响越小,这时验证就越有价值。
因此,要尽量在设计的早期阶段(算法架构设计、RTL设计时)进行充分的验证。
常用的验证大致分为如下几类:
仿真、静态时序分析、形式验证、物理验证(DRC/LVS)、信号完整性检查、FPGA验证等,下面分别进行介绍。
3.3.1仿真
仿真是功能验证的主要手段,其基本原理如图3.9所示。
图3.9仿真基本原理
除了功能检查,用仿真方法还可以检查系统的时序。
与静态时序方法相比,仿真的方法更为直观,能较为真实地模拟出电压发生变化、串扰及毛刺、电容耦合等各种情形下电路的运行情况,其缺点是运行时间较长,且时序检查不完整。
仿真贯穿了IC系统设计的整个阶段。
1.系统设计阶段的仿真
在系统级设计阶段,通过行为仿真,可以达到下述目的:
a.分析算法是否正确;
b.验证性能是否满足要求;
c.验证系统划分是否合理。
系统级设计可大致分为浮点数算法设计、定点数算法设计、架构设计等几个步骤。
在每一步都可以进行系统仿真,如图3.10所示。
图3.10系统级验证
系统级的仿真可以采用数据流仿真方法(不包括时间信息)和基于周期的仿真方法。
在系统中,通常用SystemC/C/MATLAB来描述系统模型。
系统模型可以作为后续阶段验证的参考。
例如,在RTL设计中,可以利用系统模型的输出结果作为参考基准,检查RTL设计得到的结果是否正确。
2.逻辑/电路设计阶段的仿真
逻辑设计阶段的仿真分RTL仿真与门级仿真两种。
RTL仿真是验证系统功能是否正确的重要手段。
在RTL仿真中,如何合理构造testbench、如何进行“cornercase”的验证,是困扰设计者的难题,也是目前验证的热点。
一个测试平台应包括如下几个部分:
待测试设计(DesignunderVerification)、Stimulus(用于生成激励向量)、Monitors(用于监控接口上的活动)、响应比较电路(用于检查设计的输出是否与预期的一致)。
门级仿真速度较慢,通常只是作为一种辅助手段来检查时序是否满足要求,所以通常只需运行很少的几种激励即可。
在逻辑设计阶段,目前有许多成熟的仿真工具,如NCSimulator及VCS,它们属于事件驱动(eventdriven)的仿真工具,既支持RTL仿真也支持门级仿真。
仿真方法存在测试覆盖率低的缺点。
一些仿真工具开发商利用形式验证中“断言(assertion)”的概念,提出了“基于断言的仿真(assertionbasedsimulation)”方法。
此外,也有人尝试采用符号仿真(symbolsimulation)的方法。
不过目前这种方法应用很少。
对于模拟电路,通常采用Hspice进行仿真。
对于特定应用的电路,有一些特定的仿真工具,例如在分析射频(RF)电路时,Cadence的Spectre比较实用。
在数/模混合设计中,往往需要协同验证数字电路和模拟电路。
这时候,需要用到混合仿真软件。
目前,混合仿真软件是将逻辑仿真器与电路仿真器结合起来协同工作。
模拟部分通常用verilogA来建模。
图3.11所示为Synopsys的混合仿真环境。
其中,数字部分采用数字仿真器VCS,模拟部分采用模拟仿真器Nanosim;数字部分用Verilog描述,模拟部分用SPICE及VerilogA描述。
图3.11Synopsys的混合仿真环境
3.3.2静态时序分析
静态时序分析是检查IC系统时序是否满足要求的主要手段。
静态时序分析工具根据网表中各节点的负载,利用综合库中各单元的延时查找表,计算出单元延时及连线延时,从而可以判断在该设计中寄存器之间最长路径上的延时有多少,是否满足最大时钟约束。
如果不满足,则静态时序分析工具会给出setup违例。
静态时序工具还会分析hold违例。
Hold违例跟时钟树有关。
在深亚微米设计中,串扰(crosstalk)、IRdrop等都会影响芯片的时序乃至功能。
这些属于信号完整性的畴。
OCV(OnChipVariation,片上偏差)效应也越来越显著。
在现在的静态时序工具中,支持对这些现象的分析。
静态时序分析可分为两类:
逻辑级分析和电路级分析。
前者针对用标准单元构成的网表,后者主要针对模拟电路和混合电路。
图3.12逻辑级静态时序分析
在进行逻辑级静态时序分析时,需要输入如下容:
网表、综合库、时序约束(时钟、输入延时、输出延时等)。
如果是对布局布线之后的网表进行静态时序分析,还需要输入寄生参数文件(该文件包含了由版图提取的网表中各节点的寄生电容和寄生电阻等信息)。
图3.12给出了逻辑级静态时序分析的步骤。
通常来说,在网表综合完成后,需进行静态时序分析,在布局布线完成后,再进行一次静态时序分析。
当然,在布局布线尚未最终完成时,也可以进行静态时序分析。
电路级的静态时序分析工具(如PathMill)可以分析一个芯片的I/O是否满足时序要求。
3.3.3功耗分析
一个芯片的功耗过大,会导致如下问题:
a.使芯片性能变差。
b.使温度升高,降低芯片可靠性。
c.限制便携式产品的使用时间及电池寿