发布网友 发布时间:2022-04-24 07:46
共2个回答
热心网友 时间:2022-06-17 18:11
在高阶设计的领域中,硬件描述语言扮演的角色,只是一种程序语言接口(PLI);它提供了一个极具弹性的设计入口(design 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划分为数个模块(mole);此阶段是整个设计过程中最要的关键之一,它直接影响了ASIC内部的架构及各模块间互动的讯号,更间接影响到后续电路合成的效能及未来产品的可靠性。 决定模块之后,便分交由团队的各个工程师,以VHDL或Verilog等硬件描述语言进行设计-亦即功能的行为描述(behavioral description);为能明确及有效率地描述模块的内部功能,各模块之下可能再细分成数个子模块(sub-mole),直到能以可合成(synthesizible)的语法描述为止。这种一层层分割模块的设计技巧,便是一般所谓的阶层式设计(hierarchical design);这与早期直接以绘制闸级电路进行设计的时代,所使用的技巧是相类似的。此一步骤所完成的设计描述,是进入高阶合成电路设计流程的叩门砖;习惯上,称之为硬件描述语言的设计切入点(HDL design entry)。 关于此一步骤,亦有相关的辅助工具相继推出。Design Book便是其中的代表;它利用一般工程师熟悉的图形接口-如状态图及流程图,协助初接触以硬件描述语言进行设计的工程师,自动编写出相对应的硬件语言描述码。效能如何笔者不敢断言,但它能依使用者决定,整合惯用之其它EDA工具的特点,倒是满吸引人的地方。 3.功能验证(Function Verification) 完成步骤2的设计描述,接下来便是利用VHDL或Verilog的电路仿真器,针对先前的设计描述,验证其功能或时序(timing)是否符合由步骤1所制定的规格。通常,称这类验证为功能仿真(function simulation),或行为仿真(behavioral simulation),而这类的HDL电路仿真器,则通称为行为仿真器(behavioral simulator)。 对于这一类功能验证的仿真而言,仿真器并不会考虑实际逻辑闸或联机(connenct wires)所造成的时间延迟(time delay)、闸延迟(gate delay)及传递延迟(transport delay)。取而代之的是,使用单一延迟(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及Verilog 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 planning的工作便是,适当地规划这些划分好模块在芯片上的位置。 比起模块内逻辑闸间的接线,各模块之间互连讯号的接线,通常会比较长,因此,他们所产生的延迟会主控ASIC的性能;在次微米制程上,此种现象更为显著,这也就是为何先前特别强调,模块划分的重要性。完成平面规划之后,P&R工具便接着完成各模块方块内逻辑闸的放置与绕线。 7.绕线后的电路功能验证(Post Layout Verification) 在这个阶段,经过P&R之后的电路,除了须重复验证,是否仍符合原始之功能设计之外,工程师最关心的是,在考虑实体的闸延迟及联机延迟的条件之下,电路能否正常运作。与逻辑闸层次的电路功能验证时发生的情况相同,您将面对诸如set-up time、holding time及glitch的问题;不同的是,此时若真有错误发生,您将面对更冗长的重复修正周期(iteration cycle)。也就是说,您可能需要回到最原始的步骤:修改HDL设计描述,重新再跑一次相同的流程。热心网友 时间:2022-06-17 18:12
多找些东西看看`