1、第3章 设计开发流程3.1 设计流程介绍3.2 开发流程步骤详细描述 集成电路从设计到制造全过程,涉及到很多方面的知识和内容,就本章而已,不可能完成全部内容的学习讲解。我们这是从认识的角度去学习集成电路的设计和制造流程,当然,最主要的是学习集成电路的设计流程。在开始本章课程学习前,我们先来看看集成电路设计与制造全过程中的几个主要流程框架。集成电路设计与制造的主要流程框架设计设计芯片检测芯片检测单晶、外单晶、外延材料延材料掩膜版掩膜版芯片制造芯片制造过程过程封装封装测试测试系统需求系统需求下面我们来介绍设计的基本流程。设计过程可分五个阶段:第一阶段:项目策划第二阶段:总体设计第三阶段:详细设计和
2、可测性设计第四阶段:时序验证与版图设计第五阶段:加工与完备3.1 设计流程介绍设计流程介绍第一阶段:项目策划任务:形成项目任务书(项目进度,周期管理等)。流程:市场需求调研可行性研究论证决策任务书。第二阶段:总体设计任务:确定设计对象和目标,进一步明确芯片功能、内外部性能要求,参数指标,论证各种可行方案,选择最佳方式,加工厂家,工艺水准。流程:需求分析系统方案系统设计系统仿真。输出:系统规范化说明():包括系统功能,性能,物理尺寸,设计模式,制造工艺,设计周期,设计费用等等.第三阶段:详细设计和可测性设计任务:分功能确定各个模块算法的实现结构,确定设计所需的资源按芯片的要求,速度,功耗,带宽,
3、增益,噪声,负载能力,工作温度等和时间,成本,效益要求选择加工厂家,实现方式,(全定制,半定制,等);可测性设计与时序分析可在详细设计中一次综合获得,可测性设计常依据需要采用,等方式,可测性设计包括带扫描链的逻辑单元,以及边界扫描电路,测试的。流程:逻辑设计子功能分解详细时序框图分块逻辑流程:逻辑设计子功能分解详细时序框图分块逻辑仿真电路设计仿真电路设计(算法的行为级,级描述算法的行为级,级描述)功能仿真综功能仿真综合合(加时序约束和设计库加时序约束和设计库)电路网表网表仿真。电路网表网表仿真。输出:输出:功能设计功能设计():将系统功能的实现方案设计出来:将系统功能的实现方案设计出来.通常通
4、常是给出系统的时序图及各子模块之间的数据流图。是给出系统的时序图及各子模块之间的数据流图。逻辑设计逻辑设计():这一步是将系统功能结构化:这一步是将系统功能结构化.通常以文通常以文本本(或或),原理图原理图,逻辑图表示设计结果逻辑图表示设计结果,有时也采用布有时也采用布尔表达式来表示设计结果。尔表达式来表示设计结果。电路设计电路设计():电路设计是将逻辑设计表达式转换成电:电路设计是将逻辑设计表达式转换成电路实现。路实现。第四阶段:时序验证与版图设计 任务:静态时序分析从整个电路中提取出所有时序路径,然后通过计算信号沿在路径上的延迟传播,找出违背时序约束的错误(主要是 和),与激励无关。在深亚
5、微米工艺中,因为电路连线延迟大于单元延迟,通常预布局布线反复较多,要多次调整布局方案,对布局布线有指导意义。流程:预布局布线(文件)网表仿真(带延时文件)静态时序分析布局布线参数提取文件后仿真静态时序分析测试向量生成。输出:输出:物理设计物理设计():物理设计或称版图设计是设计中:物理设计或称版图设计是设计中最费时的一步最费时的一步.它要将电路设计中的每一个元器它要将电路设计中的每一个元器件包括晶体管件包括晶体管,电阻电阻,电容电容,电感等以及它们之间电感等以及它们之间的连线转换成集成电路制造所需要的版图信息的连线转换成集成电路制造所需要的版图信息.设计验证设计验证():在版图设计完成以后:在
6、版图设计完成以后,非常重要的一非常重要的一步工作是版图验证步工作是版图验证.主要包括主要包括:设计规则检查设计规则检查(),版版图的电路提取图的电路提取(),电学规检查电学规检查()和寄生参数提取和寄生参数提取()。第五阶段:加工与完备任务:联系生产加工,准备芯片的样片测试和应用准备。流程:工艺设计与生产芯片测试芯片应用。输出:用户使用说明书。上面我们描述了集成电路设计的五个阶段,每一阶段有不同的任务,有具体的工作流程,也产生对应的输出结果。实际工作中,主要的设计具体任务内容可以用下面的流程图来说明。集成电路的设计过程:集成电路的设计过程:设计创意设计创意 +仿真验证仿真验证功能要求功能要求行
7、为设计()行为设计()集成电路芯片设计过程框架集成电路芯片设计过程框架是是行为仿真行为仿真综合、优化综合、优化网表网表时序仿真时序仿真布局布线布局布线版图版图后仿真后仿真否否是是否否否否是是设计业设计业典型设计具有下列相当复杂的流程,实际中包含如下多项基本内容:结构及电气规定。级代码设计和仿真测试平台文件准备。为具有存储单元的模块插入(设计)。为了验证设计功能,进行完全设计的动态仿真。设计环境设置。包括使用的设计库和其他一些环境变量。使用 工具,约束和综合设计,并且加入扫描链(或者)。使用 自带静态时序分析器,进行模块级静态时序分析。使用 工具,进行 级和综合后门级网表的 。版图布局布线之前,
8、使用工具进行整个设计的静态时序分析。将时序约束前标注到版图生成工具。时序驱动的单元布局,时钟树插入和全局布线。将时钟树插入到的原始设计中。使用 ,对综合后网表和插入时钟树网表进行 。从全局布线后的版图中提取出估算的时间延时信息。将估算的时间延时信息反标注到 或者。在中进行静态时序分析。在 中进行设计优化。设计的详细布线。从详细布线设计中提取出实际时间延时信息。将提取出的实际时间延时信息反标注到 或者中。使用进行版图后的静态时序分析。在 中进行设计优化(如需要)。进行版图后带时间信息的门级仿真。和验证,然后流片。设计流程过程中,设计流程过程中,使用语言:使用语言:各阶段典型软件介绍:各阶段典型软
9、件介绍:输入工具:输入工具:公司公司 仿真工具:仿真工具:,公司公司 综合器:综合器:,公司公司 布局布线工具布局布线工具:,公司公司 静态时序分析静态时序分析:公司公司 测试:测试:公司公司 在实际工作中,不同的设计团队可能拥有不同的设计开发流程,但是这些不同的开发流程只是在对设计流程的各个阶段命名时有一些细微的差别。总的来说,设计的必要步骤是缺一不可的。一个芯片的设计必须要有一个团结合作的团队才能够完成。首先,我们来看看项目的主要步骤。然后,详细描述各步骤的具体内容。3.2 开发流程步骤详细描述开发流程步骤详细描述项目的主要步骡包括:预研阶段;顶层设计阶段;模块级设计阶段;模块实现阶段;子
10、系统仿真阶段;系统仿真,综合和版图设计前门级仿真阶段;后端版面设计阶段;测试向量准备阶段;后端仿真阶段;生产签字;硅片测试阶段。在实际的开发中,不可能像上述的那样能够一帆风顺地从头至尾走完整个项目开发流程。常常在某些阶段遇到困难,并且有的困难在本阶段是不能解决的。所以下一个阶段往往会在遇到困难时向上一个阶段产生反馈,比如在做模块级详细设计时发现模块划分不合理,一个模块怎样设计都不能完成分配给它的功能,或者是不能到达所要求的性能。这时就要反馈到上级顶层设计,对系统模块重新进行划分以解决问题。有时反馈还可能向更上一级发生。总之,下图所示的流程是一个理想化的流程,在实际开发中按照这一流程进行开发的同
11、时,要灵活应用反馈机制,不能认为一个步骤走过了,结果就固定下来了,要解决问题只能在本阶段。图:开发流程中各步骤 预研阶段是项目开发的最初始阶段,也是开发部门和市场部门工作结合得最紧密的一个阶段。预研阶段的工作就是要分析产品市场的商业机会,给出初姑的产品结构,并验证产品结构对于商业机会的把握程度。该阶段的任务:初始的产品系统结构设计;产品初始规划和资源需求统计;风险和成本分析。1 预研阶段 该阶段输出:项目的时间和资源需求估计;晶片面积的估计;产品研发预算估计;初始的产品系统结构设计;风险分析;设立产品的目标、可行性和里程碑;设计路线和开发工具的选定。可行性分析是预研阶段最重要的一个环节,它是对
12、该项目的利润模型、开发周期和风险性的分析。如果设立开发项目的目的是替代目前的一个成功产品,那么降低成本和增强功能是项日的最主要需求。如果设立开发项日的目的是去开拓新的市场或者替代目前尚未成功的产品,开发时间将是项目中优先级最高的需求。由于项目的开发策略会对整个项目的结构设计、开发等产生巨大的影响,项目的规划者需要根据项目的具体情况在预研阶段开始之前对项目的这些驱动因素进行归纳分析,以制定项目的开发策略。顶层设计是一个富有创造性的阶段,在这个阶段,要定义产品的顶层架构。许多经典的工程折中问题都需要在这个阶段做出决定。产品的开销、设计的开销、产品上市时间、资源需求和风险之间的对比也是顶层结构设计过
13、程中的一部分。这个阶段中的创造性思维对于产品的成功有着极大的影响。创造性可以体现在产品的创意、顶层架构设计创意和设计流程的创意等方面。这个阶段的工作主要由少数具有结构设计和系统设计才能的高级工程师参与。2 顶层设计阶段该阶段的任务:书写功能需求说明;讨论几个顶层结构备选项;分析这几个顶层结构选项需要考虑技术灵活性 、资源需求及开发周期等;完成顶层结构设计说明;确定关键的模块(如果需要,这些模块可以尽早开始)确定需要使用的第三方模块;选择开发组成员;确定新的工具;确定开发路线/流程;讨论风险;预估硅片面积、输入输出引脚、开销和功耗等。项目经理的任务:完成项目计划;确定资源(项目组、设备和工具);
14、组织培训课程。该阶段输出:功能需求说明;顶层结构设计说明;初始的开发计划和资源需求。这个阶段需要递交的文档:结构设计文档:在这个文档中,设计者需要清楚地描述电路板、软件和的划分。通常作为系统中的一个重要部分,它的功能需要在顶层结构设计说明中详细的描述。开发计划:这个计划必须经过项目管理人员的验收通过。同时,还需要完成设计线路描述文档。这个文档要定义项目开发中所需要的工具、技术和方法。在这个阶段,顶层结构将被合理划分成一些小的模块。各个设计模块之间需要认真细致的合理划分。确定功能,模块与模块之间的联系等。的层次化结构最好用图示方式表示,如果绘图工具使用合理,这些图可以直接用工具转成结构化的或代码
15、。3 模块级详细设计阶段本阶段的任务:将顶层架构分解成更小的模块;定义模块的功能和接口;回顾上一阶段完成的初始项目开发计划和顶层结 构设计文档;风险分析(如果需要,对已有的计划结构进行修改 以减少风险);组织开发小组学习开发规范(代码编写风格,开发 环境的目录结构);检查芯片设计规则(晶片温度,封装,引脚,芯片 供电等);重新估计芯片的门数。项目经理的任务:分析和管理开发风险;更新开发计划,分配工作;开始考虑芯片验证/确认;建立一个文档代码管理机制。本阶段输出:所有模块的设计文档;准确的项目开发计划。本阶段的风险:一些组员可能在设计时感到有些孤立无援;开发小组可能未理解项目的目标。在这个阶段,
16、的生产商必须确定下来。项目管理者必须与生产商建立例会制度,在这些例会中需要讨论的结构和设计路线。因为生产商有他们的一套生产流程和他们自己的技术特点,设计也需要遵循他们的设计规则。在这些讨论中,特别要注意的就是生产商对于生产签字(尤其是在与新的生产商接触时)的要求和工具都有可能是不同于以往的。这个环节要是了解得不清楚,这对于以后的生产签字和芯片测试都会带来巨大冲击,轻则造成项目的延迟,重则投片失败。本阶段任务:模块及设计、编码、测试和综合;芯片级的测试环境设计、编码和测试;给出一个更准确的芯片面积估计。项目管理者的任务:提供文档规范和对设计文档验收;设立和讲解验收过程,确定哪些部分在什么时候 需
17、要验收;每周组织会议,了解进度,对发现的问题进行解 决;4 模块实现阶段和生产厂商谈判进行初始版图设计的时间,需要 提交的材料等以便于生产厂商尽早对设计如何布 局布线有一个大致的了解,这样对于以后正式交 付设计后生产厂商的工作顺利开展并缩短对方的 设计时问有很大的帮助;验收测试例设计和分析测试覆盖率;开始安排资源准备项目原型化和硅片测试;准备好所有的第三方芯片的仿真模型。本阶段输出:所有的模块设计、代码和模块织的测试;初始的模块级综合;最终决定的芯片引脚。该阶段风险分析:该阶段是最容易造成项目延迟的阶段,所以必须 坚持任务向前赶的原则,随时关心各个小组的进 度,及时发现问题并安排解决资源,坚持
18、按时验 收;由于最终得到硅片的面积可能超过估计的最大 值,因此需要考虑怎样修改设计缩小硅片面积。模块设计可以划分为以下5个任务:细化设计说明;模块设计;编码;仿真;综合。在这个阶段,需要开始计划硅片的测试。下面是一些重要的事项需要在这个阶段考虑和跟踪。(1)芯片引脚列表。引脚列表需要在最终的网表递交的前几个星期生成,并通过验收确定下来。引脚列表必须征得生产厂商、前端设计小组和印制电路板设计小组的同意。(2)封装。如果对于生产厂商来说,封装是新的,则生产厂商必须重新设计封装。重新设计封装主要是设计晶片与引脚之间的连接印制电路板。封装的信号引脚数量、供电引脚数量和封装的方式等都必须确定下来。如果重
19、新制作封装,项目管理者必须跟生产厂商确定封装重新设计的时间,以便于重新考虑项目的开发计划。(3)样片和预生产量。生产厂商一般为客户提供一定数量的样片。样片一般可以有多种类型,它们的返回和递交时间都不一样。对于初始的测试,必须有足够的数量可以保证硅片和系统的测试能够快速、顺利地进行。通过和生产厂商的有效谈判,可以提高芯片预生产量,这样可以有效地提高产品的首批上市产量。子系统仿真就是将那些独立设计而在逻辑上关联比较紧密的模块集成在一起,组成一个小系统进行仿真。在有些小的设计中子系统仿真是没有必要的。但是有些大的系统,子系统仿真是非常有必要的。子系统仿真必须同时与模块级设计同时进行。5 子系统仿真阶
20、段 该阶段的任务:撰写并验收测试列表文档;撰写测试伪代码,例如,寄存器访问,测试 环境配置等;运行仿真。该阶段输出:先成功地完成第一个子系统仿真;对第一个子系统的仿真结果进行验收;完成所有子系统模块仿真。该阶段的风险:测试小组和设计小组之间的交流不畅通会增加不 必要的项目进度延缓,特别是会导致完成第个 仿真例的时间拖延。该阶段的任务:撰写和验收系统测试例文档;编写测试伪代码,例如寄存器访问,测试环 境配置等;进行级仿真和门级仿真;记录跟踪问题的解决过程,如可能,使用错误自 动报告系统进行错误的反馈和修改;检查芯片设计是否满足设计规范;开始撰写芯片的使用指南;编写系统综合的脚本,对系统进行综合;
21、根据芯片的特性,画出芯片内模块摆放的方法。6 系统仿真,综合和版图设计前门级仿真阶段项目管理者的任务:密切注意仿真的进度并安排定期的短会讨论仿真 进展;安排与生产厂商关于版图设计的会议。该阶段输出:成功地完成第一个系统测试例;验收过的系统仿真计划;所有的级仿真和门级仿真完成及测试报告;综合后的网表。该阶段的风险:是测试小组和设计小组之间的交流不通畅会延缓 项目进度,特别是会导致第一个仿真实例的拖延。本小节所描述的工作是由生产厂商完成的。生产厂商的任务:测试版和最终版网表的版图设计;检查网表和测试向量的错误;生成版图设计后的时间面积信息。生产厂商输出:布局布线完成后的时间面积信息;布局布线完成后
22、的网表和标准时延文件;硅片制造的信息。7 后端版面设计阶段 生产厂商将拿到的网表转换成一个物理的版图设计。这个过程要使用一些复杂的工具,风险主要是由设计的大小和系统速度需求决定。设计越大,系统速度越快,风险就越大。如果设计跟生产厂商以前已经做过的完全不同,风险就会更大。这些不同包括:不同的工艺、逻辑门数量大、输入输出引脚数量大和使用非常可靠的逻辑单元等。该阶段的任务:综合、测试电路插入和测试向量生成;生成一个版图设计文档;支持版图设计(平面图设计和检查时序等);版图设计之后的重新综合(修理过载电路和时序)。项目管理者的任务:安排版图设计和综合会议并让版图设计和综合的 工程师参与;检查版图设计的
23、进度。8 版面设计后仿真综合阶段该阶段输出:最终版本的网表;测试向量;版面设计后仿真和静态时序分析结果。该阶段的风险:输入输出引脚经常会发生错误,需要多次对其进 行检查;版图设计会有许多问题(布线、时序等),应尽早 在测试版本的网表上进行版图设计;测试向量的生成会花费很长时间,也应尽早开始 测试向量的生成;门级仿真中会出现不定态,影响仿真的继续,因 此在早些时候的设计中需要强调所有的寄存器在 复位以后是定态。项目管理者的任务:检查签字文档;为了保证芯片的质量,从不同的部门获得签字同 意。在完成版图设计之后的仿真和综合之后,网表被送去生产。生产签字文档将作为设计者和生产厂商之间的生产签字的根据。
24、这个文档清楚地描述了网表的版本号、生产商所需要的测试向量、质量意向和商业上的问题等。签字之前,生产厂商需要仔细检查设计者提供的网表文件、版图设计结果和测试向量。通常生产厂商要求测试向量在签字之前是经过仿真的,这是一个比较长的过程。9 该阶段输出芯片生产签字该阶段任务:撰写并验收评估测试列表所/计划划;撰写测试例;计划和实现测试自动操作;预定测试设备;设计或采购非标准的测试设备;在硅片制造完成租借测试设备;定义硅片评估的不同电压和温度(环境测试);定义记录、分析和解决问题的方法。10 测试硅片准备阶段该阶段输出:检查评估计划;硅片制造完成之前要准备好或租到测试设备;所有测试工作准备好(硬件设备、
25、软件和自动操 作);该阶段风险:准备硅片测试是一个耗时的任务,因此应该有一 个适当的计划,并且尽早开始;如果在计划这个阶段的任务时的说明没有 准备好或者不够准确,这样测试硅片准备工作就 必须拖延。该阶段的任务:测试芯片;用错误报告数据库跟踪测试中出现的错误;分析失败的测试例;对中出现的错误进行定位;针对中出现的错误,确定在网表中的改动;评估芯片的工作电压范围和温度范围(环境测试);进行与其他已有产品的互通性测试。11 硅片测试阶段该阶段输出:在一个实际的应用环境中对芯片进行全面测试;产生测试报告并对其验收。该阶段的风险:如果此时测试用的印制电路板没有到位会严重影 响芯片的初始测试进度,延长测试时间;如果测试用的印制电路板出现问题,会造成测试 不可靠,以至于对其进行修改。如果修改时间过 长,同样会延长测试时间。