摘要:随着数字电路设计的规模以及复杂程度的提高,对其进行设计所花费的时间和费用也随之而提高。根据近年来的统计,对数字系统进行设计所花的时间占到了整个研发过程的60%以上。所以减少设计所花费的实践成本是当前数字电路设计研发的关键,这就必须在设计的方法上有所突破。
关键词:数字系统;ic;设计
一、数字ic设计方法学
在目前ci设计中,基于时序驱动的数字ci设计方法、基于正复用的数字ci设计方法、基于集成平台进行系统级数字ci设计方法是当今数字ci设计比较流行的3种主要设计方法,其中基于正复用的数字ci设计方法是有效提高ci设计的关键技术。它能解决当今芯片设计业所面临的一系列挑战:缩短设计周期,提供性能更好、速度更快、成本更加低廉的数字ic芯片。
基于时序驱动的设计方法,无论是hdl描述还是原理图设计,特征都在于以时序优化为目标的着眼于门级电路结构设计,用全新的电路来实现系统功能;这种方法主要适用于完成小规模asic的设计。对于规模较大的系统级电路,即使团队合作,要想始终从门级结构去实现优化设计,也很难保证设计周期短、上市时间快的要求。
基于pi复用的数字ci设计方法,可以满足芯片规模要求越来越大,设计周期要求越来越短的要求,其特征是ci设计中的正功能模块的复用和组合。采用这种方法设计数字ci,数字ci包含了各种正模块的复用,数字ci的开发可分为模块开发和系统集成配合完成。对正复用技术关注的焦点是,如何进行系统功能的结构划分,如何定义片上总线进行模块互连,应该选择那些功能模块,在定义各个功能模块时如何考虑尽可能多地利用现有正资源而不是重新开发,在功能模块设计时考虑怎样定义才能有利于以后的正复用,如何进行系统验证等。WWw.133229.Com
基于pi复用的数字ci的设计方法,其主要特征是模块的功能组装,其技术关键在于如下三个方面:一是开发可复用的正软核、硬核;二是怎样做好ip复用,进行功能组装,以满足目标ci的需要;三是怎样验证完成功能组装的数字ci是否满足规格定义的功能和时序。
二、典型的数字ic开发流程
典型的数字ci开发流程主要步骤包含如下24方面的内容:
(1)确定ic规格并做好总体方案设计。
(2)rtl代码编写及准备etshtnehc代码。
(3)对于包含存储单元的设计,在rtl代码编写中插入bist(内建自我测试)电路。
(4)功能仿真以验证设计的功能正确。
(5)完成设计综合,生成门级网表。
(6)完成dft(可测试设计)设计。
(7)在综合工具下完成模块级的静态时序分析及处理。
(8)形式验证。对比综合网表实现的功能与trl级描述是否一致。
(9)对整个设计进行pre一layout静态时序分析。
(10)把综合时的时间约束传递给版图工具。
(11)采样时序驱动的策略进行初始化nooprlna。内容包括单元分布,生成时钟树
(12)把时钟树送给综合工具并插入到初始综合网表。
(13)形式验证。对比插入时钟树综合网表实现的功能与初始综合网表是否一致。
(14)在步骤(11)准布线后提取估计的延迟信息。
(15)把步骤(14)提取出来的延迟信息反标给综合工具和静态时序分析工具。
(16)静态时序分析。利用准布线后提取出来的估计延时信息。
(17)在综合工具中实现现场时序优化(可选项)。
(18)完成详细的布线工作。
(19)从完成了详细布线的设计中提取详细的延时信息。
(20)把步骤(19)提取出来的延时信息反标给综合工具和静态时序分析工具。
(21)post-layout静态时序分析。
(22)在综合工具中实现现场时序优化(可选项)。
(23)post一alyout网表功能仿真(可选项)。
(24)物理验证后输出设计版图数据给芯片加工厂。
对于任何ci产品的开发,最初总是从市场获得需求的信息或产品的概念,根据这些概念需求,ci工程师再逐步完成ci规格的定义和总体方案的设计。总体方案定义了芯片的功能和模块划分,定义了模块功能和模块之间的时序等内容。在总体方案经过充分讨论或论证后开始ci产品的开发。ci的开发阶段包含了设计输入、功能仿真、综合、dft(可测试设计)、形式验证、静态时序分析、布局布线等内容。而ci的后端设计包括布局、插入时钟树、布线和物理验证等内容,后端设计一般能在软件中自动完成,如sie软件就能自动完成布局布线。
三、ic开发过程介绍
ic开发过程包括设计输入、功能仿真、综合、可测试性设计dft、形式验证、静态时序分析、布局、插入时钟树、布线、物理验证等内容,下面分别进行详细介绍。
设计输入:一般包括图形与文本输入两种格式。文本输入包括采用verilog和vhdl两种硬件描述语言的格式,verliog语言支持多种不同层次的描述,采用硬件描述语言主要得益于采用综合器来提高设计效益;图形输入一般应该支持多层次逻辑图输入,主要应用在一些专门的电路设计中,但是图形输入耗时费力且不方便复用。
功能仿真:功能仿真的目的是为了验证设计功能的正确性和完备性。搭建的测
试环境质量和测试激励的充分性决定了功能仿真的质量和效益,仿真工具也是比较多,而且功能比较齐全。
综合:所谓综合,就是将设计的hdl描述转化为门级网表的过程。综合工具(也可称为编译器)根据时间约束等条件,完成可综合的trl描述到综合库单元之间的映射,得到一个门级网表等;综合工具可内嵌静态时序分析工具,可以根据综合约束来完成门级网表的时序优化和面积优化。
可测试性设计dft:目前大多数ci设计都引入可测试结构设计,一般在电路初步综合后可进行dft设计。典型的dft电路包括存储单元的内建自测bist电路、扫描链电路和边界扫描电路。bist电路是为了测试而设计的专门电路,它可以来自半导体生产厂商,也可以用商用的工具自动产生。扫描链电路一般是用可扫描的寄存器代替一般的寄存器,由于带扫描功能的寄存器的延时与一般的寄存器并不一致,所以在综合工具进行时序分析时最好就能考虑这种“附加”的延迟。边界扫描电路主要用来对电路板上的连接进行测试,也可以把内部扫描链的结果从边界扫描电路引入。
形式验证是一种静态的验证手段,它根据电路结构静态地判断两个设计在功能上是否等价,从而判断一个设计在修改前和修改后其功能是否保持一致。
静态时序分析:静态时序分析是ci开发流程中非常重要的一环。通过静态时序分析,一方面可以了解到关键路径的信息,分析关键路径的时序;另一方面,还可以了解到电路节点的扇出情况和容性负载的大小。
布局:布局被认为是整个后端流程最关键的一步,布局首先是在满足电路时序要求的条件下得到尽可能小的实现面积,其次布局也是把整个设计划分成多个便于控制的模块。布局的内容包括把单元或宏模块摆放到合适的位置,其目的是为了最大限度地减小连线的rc延迟和布线的寄生电容效应,此外,良好的布局还可以减小芯片面积和降低布线时出现拥赛现象的几率。
插入时钟树:时钟树又称时钟网络,是指位于时钟源和它所有扇出的寄存器时钟输入端之间的buffer驱动逻辑,时钟树通常根据物理布局情况生成。时钟树的插入关键在于如何控制时钟信号延时和时钟信号扭曲,因为较大的延迟对解决电路的保持时间问题不利,较大的时钟扭曲往往增加寄存器锁存不稳定数据的几率。但是时钟信号延迟和时钟信号扭曲问题是对矛盾,如果设计对两者都要求比较严格的话,时钟树的插入往往需要考虑比较多。
布线:布线分为两个阶段完成:预布线和详细布线,预布线时版图工具把整个芯片划分为多个较小的区域,布线器只是估算各个小区域的信号之间最短的连线长度,并以此来计算连线延迟,这个阶段并没有生成真正的版图连线。详细布线阶段,布线器根据预布线的结果和最新的时序约束条件生成真正的版图连线。但是如果预布线的时间比布局运行的时间还要长,这就意味着布局的结果是失败的,这时候就需要重新布局以减少布线的拥赛。
布局布线完成之后,eda工具根据布局布线的结果产生电路网表,产生真正的互连线延迟数据,这样以前综合工具dc根据线负载模型计算出来的延迟数据与这些互连线延迟数据相比是不够精确的,因此把这些版图提取出来的互连线延迟数据反标给dc重新进行综合优化,如果生成的网表满足了时序、面积及功耗要求后就生成电路版图,电路版图经过验证就可以制成芯片。
参考文献:
[1]王金明,扬吉斌.数字系统设计与verligohdl[m].北京:电子工业出版社,2002
[2]牛风举,刘元成等.基于pi复用的数字ci设计技术[m].北京:电子工业出版社,2003