ASIC 设计技术及其发展研究(转) | 摘要:对ASIC 设计的工作流程和相关工具软件进行了简要介绍,并概括了ASIC 设计的
发展过程和较新趋势,以促进大家对芯片设计领域的认识和了解。
1、引言
(1)ASIC 设计的分类
ASIC 设计主要有全定制(full custom)设计方法和半定制(semi- custom)设计方法。半定制设计又可分为门阵列设计、标准单元设计、可编程逻辑设计等等。全定制方法是完全由设计师根据工艺,以尽可能高的速度和尽可能小的面积以及完全满意的封装、独立地进行芯片设计。这种方法虽然灵活性高,而且可以达到最优的设计性能,但是需要花费大量的时间与人力来进行人工的布局布线,而且一旦需要修改内部设计,将不得不影响到其它部分的布局。所以,它的设计成本相对较高,适合于大批量的ASIC 芯片设计,如存储芯片的设计等等。相比之下,半定制方法是一种基于库元件的约束性设计。约束的主要目的是简化设计、缩短设计周期,并提高芯片的成品率。它更多地利用了EDA 系统来完成布局布线等工作,可以大大地减少设计工程师的工作量,因此它比较适合于小规模设计生产和实验。与传统的电路设计方法相比,ASIC 设计具有如下优点:①用ASIC 来设计和改造电子产品可以大幅度地减小印刷电路板的面积和接插件,降低装配和调试费用,从而降低产品的综合成本。②提高产品的可靠性。
采用ASIC 后,可以大幅度减少焊点和接插件数目,系统的可靠性可以大幅度提高。③提高产品的保
密程度和竞争能力,维护设计者IP 权力。④降低电子产品的功耗。由于ASIC 内部电路尺寸很小,互连线短、分布电容小,驱动电路的功耗可以大大降低;另外由于芯片内部受外界干扰很小,可以使用比较低的工作电压以降低功耗。⑤提高电子产品的工作速度。ASIC 芯片内部很短的互连线能大大缩短延迟时间,且芯片内部不易受外界干扰,对提高系统运行速度非常有利。⑥大大减小电子产品的体积重量。
(2)ASIC 设计与FPGA
我们知道,FPGA 开发流程大致为:选定器件,安装软件,设计输入,代码调试(包括管脚定义、时
序定义、时序分析),设计仿真(功能仿真、时序仿真)和下载调试。而ASIC 是为某个客户定制的芯片,与FPGA 相比,有非通用的后端设计费、制掩模费、测试费等,故前期成本较高。在ASIC 设计过程中,往往要用到FPGA 进行原型验证。FPGA 验证是进行ASIC 设计的重要环节,其后,还需要引入ASIC 版本源码,插入IO PAD,DFT,功耗估计和进行其它后端流程。完成FPGA 验证可以说就完成了ASIC 整套流程的50~80%。
在过去的二十年间,ASIC 与FPGA 一直是电子设计的主流技术。在相当长的一段时间内,二者不同
的技术特征造就了它们应用于不同的市场:ASIC 被用于大批量的专用产品,以尽可能摊薄设计与制造成本,实现良好的性价比;FPGA 虽单价较高,但由于其可编程的灵活性受小批量应用的青睐,很多时候还被用于ASIC 设计中的原型验证。然而在最近的几年中,原有的平衡逐渐被打破。随着半导体制造技术的进步,硅器件的单位面积制造成本迅速降低,FPGA 厂商不断采用新工艺使得FPGA 的价格不断下降;相反随着设计复杂性的增加,ASIC 的非重复性工程(NRE)费用、最少订购数量以及开发工具套件的费用都在上涨,加之面市时间的压力,对产品设计的快捷性和灵活性提出更高的要求,因此FPGA 表现出强于ASIC 的发展势头,这特别反映在新开工设计项目对设计方法的选择上。但是原有FPGA 架构相对于ASIC的固有弱点,如功耗高、速度慢、资源冗余,价格偏贵等,使FPGA 在面对复杂功能设计的要求时还是会感到吃力,因此人们开始考虑通过技术上的融合在ASIC 与FPGA 之间寻找一条"中间道路",它们在某些方面有慢慢靠拢的趋势。
根据Zeidman Consulting 公司的比较结论,在经济萧条时期,由于价格是市场的主要驱动力,产品的批量小,小型企业倾向于利用FPGA,大型企业倾向于使用ASIC,或者将FPGA 转换为ASIC。在经济起飞时期,价格因素的作用减少,所有的企业将大量利用FPGA,只有对较大批量和极低价格的产品的特殊要求下才使用ASIC。FPGA 最本质的特性是可编程性和设计周期短的优势,而这正是ASIC 的弱点。两者在价格上的比较要考虑多种因素,但趋势是向有利于FPGA 的方面发展。因为深亚微米工艺的掩模费用更加昂贵,因此NRE 费用急剧上升。一般的ASIC 在0.25μm 工艺线的NRE 费用为10 万美元左右,在0.13μm 时要在100 万美元左右。原因是增大的晶圆和减小的芯片,厂家要求增加订购批量。ASlC 的设计周期越来越长,而FPGA 的设计周期仍然很短,设计者不必担心深亚微米的影响。因此有人认为,ASIC 不久会萎缩到较小的市场份额。随着ASIC 向深亚微米工艺发展,掩模的复杂度提高,逼迫低瑞的ASIC 必须在FPGA 方面找出自己的出路。
(3)ASIC 设计与DSP
从历史角度讲,以前的DSP 名词是指一种信号处理技术,一直到1980 年初推出DSP 芯片,DSP 才逐步成为一种全新高速处理器的名称。最初的DSP 处理能力有限,主要应用于数据通信和语音处理领域,其后DSP 应用逐步扩展到各种电子产品中,诸如硬盘驱动器、通用调制解调器、无线通信终端等等。随着技术的飞速发展,1990 年中DSP 在数字GSM 手机应用和无线基站应用中获得了巨大的成功。目前DSP 开始全面拓展到各种应用领域,在宽带通信、数字控制、数字音频、数字视频等市场上开始占居主角。
很少有嵌入式应用是完全用可编程逻辑器件来实现的。串行化的步进式算法最好是由CPU 或DSP 用
软件来实现。最佳的硬件加速性能大多是由并行执行的功能来完成,其物理形式通常是将硬件协处理器(FPGA) 与CPU 紧密的结合在一起,CPU 与FPGA 的紧密结合可以提供软硬件的最佳连接方式。在这种结构中,CPU 通常运行系统应用方面的程序,实时很强的任务放到FPGA 等硬件上,这样可以减轻处理器的负荷,从而获得更大的带宽。我们还可以通过把算法的软件实现移植到硬件上来克服速度瓶颈。但因此我们又将面临一个问题:设计者必须使用硬件描述语言编写FPGA 代码,而这些功能原本是用C 语言在处理器或DSP 中实现的,如何实现硬件描述语言与C 语言的相互转换和融合,是二者之间的障碍和挑战。目前的发展趋势就是"软件硬件化"、"硬件软件化"。前者如TCP/IP 协议等,已有人进行硬件实现的尝试,后者如"软件无线电",就是用可配置软件来实现各种硬件模块的功能。
目前嵌入式的DSP 硬核比较常见,但嵌入式DSP 硬核往往不能完成一个完整的DSP 功能,它可以实
现乘法、乘加和乘累加运算。软核可以实现相同功能,两者区别主要在于性能,如Stratix DSP 硬核可以达到300MHz 左右的时钟频率,而软核一般很难超过150MHz。
2、ASIC 设计流程
主流ASIC 设计大体可分为三个阶段:系统开发阶段,RTL 设计阶段和门级验证阶段。其具体流程可
细分如下:
1. Design entry:Using a hardware description language (HDL) or schematic entry.
2. Logic synthesis:Produces a netlist-logic cells and their connections.
3. System partitioning: Divide a large system into ASIC-sized pieces.
4. Prelayout simulation:Check to see if the design functions correctly.
5. Floorplanning:Arrange the blocks of the netlist on the chip.
6. Placement:Decide the locations of cells in a block.
7. Routing:Make the connections between cells and blocks.
8. Extraction:Determine the resistance and capacitance of the interconnect.
9. Postlayout simulation: Check to see the design still works with the added loads of the interconnect.
在系统开发阶段,主要完成:①项目策划:形成项目任务书(项目进度,周期管理等)。具体流程为:
市场需求--调研--可行性研究--论证--决策--任务书。②总体设计:确定设计对象和目标,进一步明确芯片功能、内外部性能要求、参数指标,论证各种可行方案,选择最佳方式等。具体流程为:需求分析--系统方案--系统设计--系统仿真。③详细设计和可测性设计:分功能确定各个模块算法的实现结构,确定设计所需的资源。按芯片的要求、速度、功耗、带宽、增益、噪声、负载能力、工作温度等和时间、成本、效益要求,选择加工厂家,确定实现方式,如全定制、半定制、FPGA 等;可测性设计在总体设计阶段就要开始考虑,确定芯片的测试方案和方法。总体设计在整个设计中,约占设计时间的30%。在RTL 设计阶段即源码设计阶段,主要完成:①设计输入:完成设计的行为或结构描述。可以采用图形输入、文本输入、状态机输入等方式。②代码调试:对设计输入的文件进行代码调试和语法检查。③功能仿真:对代码进行功能验证,保证源码能完成预想的功能。④综合:把设计转换成标准逻辑单元,保证设计源码的可综合性。以上阶段一般统称为前端设计。
在门级验证阶段,主要完成:①逻辑综合(synthesis):逻辑综合是面向给定的设计约束,将高级的设计描述翻译和优化到厂家库中的门级网表的自动化过程。②静态时序分析(Static Timing Analyze):静态时序分析是检测综合结果是否满足时序约束的一个手段。主要验证寄存器的建立和保持时间的异常,它具有较高的计算效率,是对仿真的补充。③形式验证(formal verification),也就是等效性检查,对设计过程中每一步的设计输入和输出间进行逻辑功能的等效检查。经常进行的是综合后的网表与RTL 的设计输入之间的等效检查。与静态时序分析一起,构成设计的静态验证。④布局(Floor Plan):就是确定设计中各个模块的位置,整个芯片的尺寸等。主要的过程有:IO 规划:确定IO Buffer 的位置,定义电源和地PAD 的位置。模块放置:定义各种物理的组、区域或模块;对这些大的宏单元进行放置,现在已经有许多好的block Placer,帮助设计者更快的形成模块布局。供电设计:设计整个供电网络,基于电势降和电迁移进行拓扑优化。微调:通过添加布局和布线的阻碍、以及密度、属性等的修改,达到优化布线阻塞率,甚至时序的目的。总之,Floor Plan 就是在保证布线能够走通、性能允许的前提下,如何最大限度的减少芯片面积。
⑤布线:布线应该算是设计上的最后一个阶段。布线策略的应用,会影响整个芯片的性能。可以选择手动走一些比较关键,或者对自动走线效果不满意的一些线。然后,对关键路径上的走线和时钟线尽量在走线时先走,避免绕线,确保时序收敛。最后,还要进行门级验证和版图/逻辑图对比(LVS, Logic vs. Schematic)和设计规则检查(DRC,Design Rule Check)。
以上所述主要是数字电路的设计流程。模拟电路的设计流程与之相比有所不同。模拟电路的设计主要
包括:①模拟仿真环境:模拟仿真环境主要是提供完整的模拟电路设计解决方案,并使最终用户的应用得到最优化且支持完整的从前端到后端的设计流程。完整的模拟设计环境应该是所有的解决方案集成在一起,具有完全的中间可操作性。②版图编辑工具:对于一些全定制的设计,需要对最终的版图进行编辑。版图编辑器应以强大的交互式版图功能来提高全定制IC 设计的生产率。③版图验证:版图验证包括设计规则检查(DRC)、电学规则检查(ERC)、版图/逻辑图对比(LVS)、版图参数提取(LPE)和寄生电阻提取(PRE),电磁兼容分析(EMC)等等。
ASIC 设计流程随着不同的设计目标、设计方法、设计工艺的变化而变化。一般而言,数字电路设计
中几个关键的环节分别为:设计、综合、仿真以及布局布线等。如何熟练使用这些工具软件、掌握使用技巧以及不断解决出现的问题等等,都与工具使用的熟练程度和相关经验分不开。下面特别就综合和仿真进行一点阐述。
综合是将行为级描述的设计在一定的规约下转化为逻辑结构。它是面向给定的设计约束,将高级的设
计描述翻译和优化到工艺库中的门级网表的自动化过程。(Compiler=Translation + Mapping +
Optimization)。综合约束包括时序、面积和功耗的约束。其中时序是最复杂和最关键的约束,决定了整个芯片的性能。时序约束中,输入输出的约束由芯片的应用环境决定,通常需要抽象出输入的驱动和输出的负载信息。另外一个重要的方面,就是时钟树(Clock Tree)的综合和插入。时钟树的定义、约束的设置,对最后时钟偏斜起着决定性的作用。时钟树插入后,偏斜往往会导致某些保持时间(Hold Time)方面的问题。还有,传统的ASIC 综合工具本身能力限制了综合模块的门数不能超过200K。随着百万门甚至千万门的设计的出现,工程师们不得不把一个设计分成更多的子模块来进行综合。一般情况下,在采用传统ASIC综合技术时,工程师们习惯按照功能和时序来进行子模块的划分,而不是按照设计门数的大小来划分模块。不管是谁进行综合,在现有的技术下,都要对综合的质量和综合的效率进行折衷。因此,综合问题必须通盘考虑。
仿真是模拟出芯片工作的过程,故又称为设计的动态验证。如果带有时序信息,在验证功能的同时,
也可以验证时序性能。仿真主要有:RTL 级仿真、门级仿真,它们也分别简称为前仿和后仿。在RTL 层进行的仿真,其特点是不考虑构成电路的逻辑和门的时间延迟,着重考虑电路在理想环境下的行为和设计构想的一致性。即RTL 级仿真是没有延时的、基于周期的事件驱动的仿真方式。门级仿真是在电路已经映射到特定的工艺环境后,将电路的路径延迟和门延迟考虑进去对电路行为的影响后,来比较电路的行为是否还能够在一定条件下满足设计构想。后仿是基于最终时序的仿真,故往往作为流片前签收(sign-off or type out)的条件。所有时序的仿真,一般是使用SDF(标准延时)文件来输入延时信息。仿真不是一个孤立的过程,它和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义,而孤立的功能仿真通过是没有意义的,如果在时序分析过程中发现时序不满足,需要更改代码,则功能仿真必须重新进行。
|
|