第3章ASIC设计开发流程3.1ASIC设计流程介绍3.2ASIC开发流程步骤详细描述集成电路从设计到制造全过程,涉及到很多方面的知识和内容,就本章而已,不可能完成全部内容的学习讲解。我们这是从认识的角度去学习集成电路的设计和制造流程,当然,最主要的是学习集成电路的设计流程。在开始本章课程学习前,我们先来看看集成电路设计与制造全过程中的几个主要流程框架。集成电路设计与制造的主要流程框架设计芯片检测单晶、外延材料掩膜版芯片制造过程封装测试系统需求下面我们来介绍ASIC设计的基本流程。设计过程可分五个阶段:第一阶段:项目策划第二阶段:总体设计第三阶段:详细设计和可测性设计第四阶段:时序验证与版图设计第五阶段:加工与完备3.1ASIC设计流程介绍第一阶段:项目策划任务:形成项目任务书(项目进度,周期管理等)。流程:市场需求--调研--可行性研究--论证--决策--任务书。第二阶段:总体设计任务:确定设计对象和目标,进一步明确芯片功能、内外部性能要求,参数指标,论证各种可行方案,选择最佳方式,加工厂家,工艺水准。流程:需求分析--系统方案--系统设计--系统仿真。输出:系统规范化说明(SystemSpecification):包括系统功能,性能,物理尺寸,设计模式,制造工艺,设计周期,设计费用等等.第三阶段:详细设计和可测性设计任务:分功能确定各个模块算法的实现结构,确定设计所需的资源按芯片的要求,速度,功耗,带宽,增益,噪声,负载能力,工作温度等和时间,成本,效益要求选择加工厂家,实现方式,(全定制,半定制,ASIC,FPGA等);可测性设计与时序分析可在详细设计中一次综合获得,可测性设计常依据需要采用FullScan,PartScan等方式,可测性设计包括带扫描链的逻辑单元,ATPG,以及边界扫描电路BoundScan,测试Memory的BIST。流程:逻辑设计--子功能分解--详细时序框图--分块逻辑仿真--电路设计(算法的行为级,RTL级描述)--功能仿真--综合(加时序约束和设计库)--电路网表--网表仿真。输出:功能设计(FunctionDesign):将系统功能的实现方案设计出来.通常是给出系统的时序图及各子模块之间的数据流图。逻辑设计(LogicDesign):这一步是将系统功能结构化.通常以文本(VerilogHDL或VHDL),原理图,逻辑图表示设计结果,有时也采用布尔表达式来表示设计结果。电路设计(CircuitDesign):电路设计是将逻辑设计表达式转换成电路实现。第四阶段:时序验证与版图设计任务:静态时序分析从整个电路中提取出所有时序路径,然后通过计算信号沿在路径上的延迟传播,找出违背时序约束的错误(主要是SetupTime和HoldTime),与激励无关。在深亚微米工艺中,因为电路连线延迟大于单元延迟,通常预布局布线反复较多,要多次调整布局方案,对布局布线有指导意义。流程:预布局布线(SDF文件)--网表仿真(带延时文件)--静态时序分析--布局布线--参数提取--SDF文件--后仿真--静态时序分析--测试向量生成。输出:物理设计(PhysicalDesignorLayoutDesign):物理设计或称版图设计是VLSI设计中最费时的一步.它要将电路设计中的每一个元器件包括晶体管,电阻,电容,电感等以及它们之间的连线转换成集成电路制造所需要的版图信息.设计验证(DesignVerification):在版图设计完成以后,非常重要的一步工作是版图验证.主要包括:设计规则检查(DRC),版图的电路提取(NE),电学规检查(ERC)和寄生参数提取(PE)。第五阶段:加工与完备任务:联系生产加工,准备芯片的样片测试和应用准备。流程:工艺设计与生产--芯片测试--芯片应用。输出:用户使用说明书。上面我们描述了集成电路设计的五个阶段,每一阶段有不同的任务,有具体的工作流程,也产生对应的输出结果。实际工作中,主要的设计具体任务内容可以用下面的流程图来说明。集成电路的设计过程:设计创意+仿真验证功能要求行为设计(VHDL)Singoff集成电路芯片设计过程框架是行为仿真综合、优化——网表时序仿真布局布线——版图后仿真否是否否是—设计业—典型ASIC设计具有下列相当复杂的流程,实际中包含如下多项基本内容:•结构及电气规定。•RTL级代码设计和仿真测试平台文件准备。•为具有存储单元的模块插入BIST(DesignFortest设计)。•为了验证设计功能,进行完全设计的动态仿真。•设计环境设置。包括使用的设计库和其他一些环境变量。使用DesignCompiler工具,约束和综合设计,并且加入扫描链(或者JTAG)。•使用DesignCompiler自带静态时序分析器,进行模块级静态时序分析。•使用Formality工具,进行RTL级和综合后门级网表的FormalVerification。•版图布局布线之前,使用PrimeTime工具进行整个设计的静态时序分析。•将时序约束前标注到版图生成工具。•时序驱动的单元布局,时钟树插入和全局布线。•将时钟树插入到DC的原始设计中。•使用Formality,对综合后网表和插入时钟树网表进行FormalVerification。•从全局布线后的版图中提取出估算的时间延时信息。•将估算的时间延时信息反标注到DesignCompiler或者Primetime。•在Primetime中进行静态时序分析。•在DesignCompiler中进行设计优化。•设计的详细布线。•从详细布线设计中提取出实际时间延时信息。•将提取出的实际时间延时信息反标注到DesignCompiler或者Primetime中。•使用Primetime进行版图后的静态时序分析。•在DesignCompiler中进行设计优化(如需要)。•进行版图后带时间信息的门级仿真。•LVS和DRC验证,然后流片。设计流程过程中,使用语言:VHDL/verilogHDL各阶段典型软件介绍:输入工具:SummitSummit公司仿真工具:VCS,VSSSynopsys公司综合器:DesignCompile,BCCompileSynopsys公司布局布线工具:Dracula,DivaCadence公司静态时序分析:PrimeTimeSynopsys公司测试:DFTCompileSynopsys公司在实际工作中,不同的设计团队可能拥有不同的ASIC设计开发流程,但是这些不同的开发流程只是在对设计流程的各个阶段命名时有一些细微的差别。总的来说,ASIC设计的必要步骤是缺一不可的。一个ASIC芯片的设计必须要有一个团结合作的团队才能够完成。首先,我们来看看ASIC项目的主要步骤。然后,详细描述各步骤的具体内容。3.2ASIC开发流程步骤详细描述ASIC项目的主要步骡包括:.预研阶段;.顶层设计阶段;.模块级设计阶段;.模块实现阶段;.子系统仿真阶段;.系统仿真,综合和版图设计前门级仿真阶段;.后端版面设计阶段;.测试向量准备阶段;.后端仿真阶段;.生产签字;.硅片测试阶段。在实际的ASIC开发中,不可能像上述的那样能够一帆风顺地从头至尾走完整个ASIC项目开发流程。常常在某些阶段遇到困难,并且有的困难在本阶段是不能解决的。所以下一个阶段往往会在遇到困难时向上一个阶段产生反馈,比如在做模块级详细设计时发现模块划分不合理,一个模块怎样设计都不能完成分配给它的功能,或者是不能到达所要求的性能。这时就要反馈到上级顶层设计,对系统模块重新进行划分以解决问题。有时反馈还可能向更上一级发生。总之,下图所示的流程是一个理想化的流程,在实际开发中按照这一流程进行开发的同时,要灵活应用反馈机制,不能认为一个步骤走过了,结果就固定下来了,要解决问题只能在本阶段。图:ASIC开发流程中各步骤预研阶段是ASIC项目开发的最初始阶段,也是开发部门和市场部门工作结合得最紧密的一个阶段。预研阶段的工作就是要分析产品市场的商业机会,给出初姑的产品结构,并验证产品结构对于商业机会的把握程度。该阶段的任务:.初始的产品系统结构设计;.产品初始规划和资源需求统计;.风险和成本分析。1预研阶段该阶段输出:.项目的时间和资源需求估计;.晶片面积的估计;.产品研发预算估计;.初始的产品系统结构设计;.风险分析;.设立产品的目标、可行性和里程碑;.设计路线和开发工具的选定。可行性分析是预研阶段最重要的一个环节,它是对该项目的利润模型、开发周期和风险性的分析。如果设立ASIC开发项目的目的是替代目前的一个成功产品,那么降低成本和增强功能是项日的最主要需求。如果设立ASIC开发项日的目的是去开拓新的市场或者替代目前尚未成功的产品,开发时间将是项目中优先级最高的需求。由于项目的开发策略会对整个项目的结构设计、开发等产生巨大的影响,项目的规划者需要根据项目的具体情况在预研阶段开始之前对项目的这些驱动因素进行归纳分析,以制定项目的开发策略。顶层设计是一个富有创造性的阶段,在这个阶段,要定义产品的顶层架构。许多经典的工程折中问题都需要在这个阶段做出决定。产品的开销、设计的开销、产品上市时间、资源需求和风险之间的对比也是顶层结构设计过程中的一部分。这个阶段中的创造性思维对于产品的成功有着极大的影响。创造性可以体现在产品的创意、顶层架构设计创意和设计流程的创意等方面。这个阶段的工作主要由少数具有结构设计和系统设计才能的高级工程师参与。2顶层设计阶段该阶段的任务:.书写功能需求说明;.讨论几个顶层结构备选项;.分析这几个顶层结构选项——需要考虑技术灵活性、资源需求及开发周期等;.完成顶层结构设计说明;.确定关键的模块(如果需要,这些模块可以尽早开始).确定需要使用的第三方IP模块;.选择开发组成员;.确定新的工具;.确定开发路线/流程;.讨论风险;.预估硅片面积、输入输出引脚、开销和功耗等。项目经理的任务:.完成项目计划;.确定资源(项目组、设备和工具);.组织培训课程。该阶段输出:.功能需求说明;.顶层结构设计说明;.初始的开发计划和资源需求。这个阶段需要递交的文档:结构设计文档:在这个文档中,设计者需要清楚地描述电路板、软件和ASIC的划分。通常ASIC作为系统中的一个重要部分,它的功能需要在顶层结构设计说明中详细的描述。ASIC开发计划:这个计划必须经过项目管理人员的验收通过。同时,还需要完成设计线路描述文档。这个文档要定义项目开发中所需要的工具、技术和方法。在这个阶段,顶层结构将被合理划分成一些小的模块。各个设计模块之间需要认真细致的合理划分。确定功能,模块与模块之间的联系等。ASIC的层次化结构最好用图示方式表示,如果绘图工具使用合理,这些图可以直接用工具转成结构化的verilog或VHDL代码。3模块级详细设计阶段本阶段的任务:.将顶层架构分解成更小的模块;.定义模块的功能和接口;.回顾上一阶段完成的初始项目开发计划和顶层结构设计文档;.风险分析(如果需要,对已有的计划结构进行修改以减少风险);.组织开发小组学习开发规范(代码编写风格,开发环境的目录结构);.检查芯片设计规则(晶片温度,封装,引脚,芯片供电等);.重新估计芯片的门数。项目经理的任务:.分析和管理开发风险;.更新开发计划,分配工作;.开始考虑芯片验证/确认;.建立一个文档代码管理机制。本阶段输出:.所有模块的设计文档;.准确的项目开发计划。本阶段的风险:.一些组员可能在设计时感到有些孤立无援;.开发小组可能未理解项目的目标。在这个阶段,ASIC的生产商必须确定下来。项目管理者必须与ASIC生产商建立例会制度,在这些例会中需要讨论ASIC的结构和设计路线。因为ASIC生产商有他们的一套生产流程和他们自己的技术特点,设计也需要遵循他们的设计规则。在这些讨论中,特别要注意的就是生产商对于生产签字(尤其是在与新的生产商接触时)的要求和工具都有可能是不同于以往的。这个环节要是了解得不清楚,这对于以后的生产签字和芯片测试都会带来巨大冲击,轻则造成项目的延迟,重则投片失败。本阶段任务:.模块及设计、编码、测试和综合;.芯片级的测试环境设