METech 版 (精华区)

发信人: kisosaki (kisosaki), 信区: METech
标  题: IC设计流程之关系-来自SSIPEX技术论坛
发信站: BBS 哈工大紫丁香站 (Wed Dec 22 10:02:26 2004)

在了解了硬件描述语言的演进过程中,相信各位对VHDL及Verilog HDL与ASIC EDA工具之间

的关系,应已有基本的认识。在此,让我再强调一次:在高阶设计的领域中,硬件描述语

言扮演的角色,只是一种程序语言接口(PLI);它提供了一个极具弹性的设计入口(des

ign entry),以作为电路设计者与各种计算机辅助设计工具之间沟通的桥梁 。因此,若

缺少了这些EDA工具,硬件描述语言的剩余价值,也只不过是一种系统规划工具,或是技术

文件格式而已。



具体地说,整个数字电路的高阶设计概念 ,可以说就是设计自动化(design automatize

)的实现。理想的情况是:由仿真验证设计是否符合原始设定的规格(specification),

以至于诸如逻辑电路的合成与实际晶体管配置与绕线(place and route)这一类徒手不易

掌控的工作,工程师均能寻求适当的DEA工具来完成整个电路的设计。图2描述了完整的自

动化数字电路设计流程;其中包含了三种主要的EDA工具:仿真器(simulator)、合成器

(synthesizer)以及配置与绕线(place and routing, P&R)工具;除了P&R工具之外,

其余两者绝大部分,均是以VHDL或Verilog HDL作为其程序语言接口。以下,笔者将配合介

绍这个典型的自动化设计流程,简述各项EDA工具的基本功用。 

1.系统规格制定(Define Specification) 

在ASIC设计之初,工程师们须根据产品的应用场合,为ASIC设定一些诸如功能、操作速度

、接口规格、环境温度及消耗功率等规格,以做为将来电路设计时的依据。在这方面,目

前已有厂商提供系统级仿真器(system -level simulator),为系统设计提供不错的解决

方案;透过此类仿真器,工程师们可以预估系统的执行效能,并可以最佳化的考量,决定

韧体模块及硬件模块该如何划分。除此之外,更可进一步规划哪些功能该整合于ASIC内,

哪些功能可以设计在电路板上,以符合最大的经济效能比。 

2.设计描述(Design Description) 

一旦规格制定完成,便依据功能(function)或其它相关考量,将ASIC划分为数个模块(

module);此阶段是整个设计过程中最要的关键之一,它直接影响了ASIC内部的架构及各

模块间互动的讯号,更间接影响到后续电路合成的效能及未来产品的可靠性。 

决定模块之后,便分交由团队的各个工程师,以VHDL或Verilog等硬件描述语言进行设计-

亦即功能的行为描述(behavioral description);为能明确及有效率地描述模块的内部

功能,各模块之下可能再细分成数个子模块(sub-module),直到能以可合成(synthesi

zible)的语法描述为止。这种一层层分割模块的设计技巧,便是一般所谓的阶层式设计(

hierarchical design);这与早期直接以绘制闸级电路进行设计的时代,所使用的技巧是

相类似的。此一步骤所完成的设计描述,是进入高阶合成电路设计流程的叩门砖 ;习惯上

,称之为硬件描述语言的设计切入点(HDL design entry)。 

关于此一步骤,亦有相关的辅助工具相继推出。Design Book便是其中的代表;它利用一般

工程师熟悉的图形接口-如状态图及流程图,协助初接触以硬件描述语言进行设计的工程

师,自动编写出相对应的硬件语言描述码。效能如何笔者不敢断言,但它能依使用者决定

,整合惯用之其它EDA工具的特点,倒是满吸引人的地方。 

3.功能验证(Function Verification) 

完成步骤2的设计描述,接下来便是利用VHDL或Verilog的电路仿真器,针对先前的设计描

述,验证其功能或时序(timing)是否符合由步骤1所制定的规格。通常,称这类验证为功

能仿真(function simulation),或行为仿真(behavioral simulation),而这类的HD

L电路仿真器,则通称为行为仿真器(behavioral simulator)。 

对于这一类功能验证的仿真而言,仿真器并不会考虑实际逻辑闸或联机(connenct wires

)所造成的时间延迟(time delay)、闸延迟(gate delay)及传递延迟(transport de

lay)。取而代之的是,使用单一延迟(unit delay)的数学模型,来粗略估测电路的逻辑

行为;虽然如此无法获得精确的结果,但其所提供的信息,已足够作为工程师,针对电路

功能的设计除错之用。
为了能顺利完成仿真,在此,您还需要准备一分称为测试平台(test bench)的HDL描述?

。在这份测试平台的描述档中,必须尽可能地细描述所有可能影响您设计功能的输入讯号

组合,以便激发出错误的设计描述位于何处。幸运的话,或许在几次修改之后,就可得到

您想要的结果,顺利进入下一个步骤。 

4.逻辑电路合成(Logic synthesis) 

确定设计描述之功能无误之后,便可藉由合成器(synthesizer)进行电路合成。合成过程

中,您必须选择适当的逻辑闸组件库(logic cell library),作为合成逻辑电路时的参

考依据。组件库的取得,可能直接来自于您的ASIC供货商(ASIC vendor, 负责协助客户设

计ASIC的厂商)、购自其它组件库供货商(third-party ASIC library vendor),或是为

了某种特殊原因,您亦可能考虑自行建立。 

事实上,组件库内含的逻辑闸信息非常广泛,大致上包括了以下各项。 

?   cell schematic,用于电路合成,以便产生逻辑电路的网络列表(netlist)。 

?   timing model,描述各逻辑闸精确的时序模型;组件工程师会萃取各逻辑闸内的寄生

电阻及电容进行仿真,进而建立各逻辑闸的实际延迟参数。其中包括闸延迟(gate delay

) 、输出入的延迟(input delay / output delay)及所谓的联机延迟(wire delay)等

;这在进入逻辑闸层次的电路仿真,以及在P&R之后的仿真都会使用到它。 

?   routing model,描述各逻辑闸在进行绕线时的限制,作为绕线工具的参考资料。 


?   silicon physical layout,在制作ASIC的光罩(mask)时会使用到它。 

使用合成器有几个需要注意的事项,其一就是最佳化(optimize)的设定。根据步骤1所制

定的规格,工程师可对合成器下达一连串限制条件(constrain),根据这些条件,合成器

便会自动合成满足您规格要求的逻辑电路。最常见的三个限制条件(注3)有:操作速度、

逻辑闸数及功率消耗。事实上,这三项限制条件之间是呈现互相矛盾的关系;也就是说:

一旦您所下的限制条件太过严苛,将使电路合成的速度变得非常的慢,更甚者,有可能在

花费大把时间后,仍得不到您想要的结果。 

design entry硬件语言设计描述文件,其语法的编写风格(HDL coding style) ,亦是决

定合成器执行效能的另一个因素。事实上,无论是对VHDL或是Verilog而言,合成器所支持

的HDL语法均是有限的;过于抽象的语法只适用于编写cell library,或是做为系统规划评

估时的仿真模型所用,而不为合成器所接受。 

此外,由于一般合成器的最佳化算法则,都只能达到区域性最佳化(local optima);因

此,对于过分刁钻的语法描述,将影响合成器在最佳化过程的执行时间。 

利用图3,可以简单地说明coding style与最佳化之间的关系:一个良好的coding style,

便如同位于A点上的球,合成器仅需花费些许的气力,便可将其推至最低点(最佳点)。而

相反地,较差的coding style,就犹如位在C点上的球,合成器需花费较大的功夫,才能将

其推到B点;假若又加上较严苛的限制条件,则可能连B点都到不了。工程师应清楚的明白

,对您所使用的合成器而言,哪些才是“良好的”coding style,而这些在使用手册中都

可以查得到。 

5.逻辑杂层次的电路功能验证(Gate-Level Netlist Verification) 

由合成器产生的netlist,会在这个阶段进行第二次的电路仿真;一般称之为逻辑闸层次的

电路功能验证,或称为P&R前的仿真,简称前段仿真(pre-simulation)。在此阶段,主要

的工作是要确认,经由合成器所合成的电路,是否如同原始的设计描述般,符合您的功能

需求;利用逻辑闸层次仿真器(gate-level simulator),配合在功能验证时已经建立的

test bench,便可达到这个目的。 

这里出现两个新的名词:VITAL(VHDL Initiative Toward ASIC Library)、library及V

erilog library;两者均可视为先前所提及的cell library当中的timing model。在pre-

simulation中,一般只考虑闸延迟,而联机延迟在此处是不予考虑的(通常在电路合成阶

段,是无法预测实际联机的长度,因此也就无法推测联机所造成的延迟)。
时序变异(timing variation)是此处经常出现的发生错误,这当中包括了,设定时间(

set-up time)或保持时间(holding time)的不符合,以及脉冲干扰(glitch)现象的发

生。而这些时序变异,基本上都是只是单纯考虑闸延迟时所造成的结果。 

6. 配置与绕线(Place and Routing) 

这里包含了三项主要的工作:平面规划(floor planning)、配置(placement)及绕线(

routing)。还记得在设计描述的步骤,您已将ASIC划分成数个模块了吗?floor plannin

g的工作便是,适当地规划这些划分好模块在芯片上的位置。 

比起模块内逻辑闸间的接线,各模块之间互连讯号的接线,通常会比较长,因此,他们所

产生的延迟会主控ASIC的性能;在次微米制程上,此种现象更为显著,这也就是为何先前

特别强调,模块划分的重要性。完成平面规划之后,P&R工具便接着完成各模块方块内逻辑

闸的放置与绕线。 

7.绕线后的电路功能验证(Post Layout Verification) 

在这个阶段,经过P&R之后的电路,除了须重复验证,是否仍符合原始之功能设计之外,工

程师最关心的是,在考虑实体的闸延迟及联机延迟的条件之下,电路能否正常运作。与逻

辑闸层次的电路功能验证时发生的情况相同,您将面对诸如set-up time、holding time及

glitch的问题;不同的是,此时若真有错误发生,您将面对更冗长的重复修正周期(iter

ation cycle)。也就是说,您可能需要回到最原始的步骤:修改HDL设计描述,重新再跑

一次相同的流程。 

麻烦还没有完,由于需要参考的参数非常的多,仿真时间将花费您数倍于先前的仿真。经

由P&R工具所产生的标准延迟格式(Standard Delay Format, SDF)档,提供了详实的物理

层次的延迟参数;透过VITAL的参数回传机制(back-annotation),仿真器能够精确的预

估数字电路的电气行为,并且指示出发生时序错误的时间点,而您所须付出的代价就是“

时间”。最后,非常幸运的您完成了这项验证工作,便可以sign-off,等着您的ASIC ven

dor交货了。 

整个设计流程在此只能算是大概介绍完毕 ;这当中牵涉到许多未提及的层面,其中包括了

时脉(clock tree)、测试设计(Design for Test)、功能一致性验证(function equi

valence check)、以及静态仿真(static simulation)等等。为免文章过于冗长,这些

进阶的问题,将来有机会再与读者分享。 

结论 

假使设计硬件电路能像写软件这样方便,那该是多么美好的景象;硬件描述语言的高阶合

成电路设计,为我们打开了这扇窗。事实上,VHDL及Verilog HDL并非唯一的硬件描述语言

,基于相似的目的,早期也发展出其它如ABEL及AHDL等硬件语言,但是由于支持的厂商不

多,因此目前不如前者来得普遍。最近,VHDL及Verilog HDL的发展协会 ,为提供更一般

化的电路描述,已制定了能够同时描述数字及模拟混合电路的描述语法(注4),相信支持

其语法的相关EDA工具,应该能在近期面市。 

为能迎接系统芯片(System on One Chip, SoC)以及智产权(Intellectual Property, 

IP)的时代来临,各EDA工具的供货商无不卯足全力,企图在下一世代的设计流程上,站在

业界领先的地位。Synopsys及Cadence更是相继推出应用功能一致性验证及静态仿真等技术

的产品,例如:Formality、PrimeTime(Synopsys)以及Affirma(Cadence);其它诸如

预先平面规划(pre-floor-planning)等新的设计观念亦不断地被提出。虽然电路的设计

工具及观念不断推陈出新,但是对传统的芯片设计厂商而言,如何将这些新的概念,整合

进原先的设计流程,才是最重要的问题。希望本文介绍的基本设计流程,能提供初入门者

一个完整的概念。笔者相信,只要以这个典型的设计流程为基础,应该不难接受新的设计

观念才对。
--

※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 218.9.123.45]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.219毫秒