++硬件描述语言Verilog代码风格对可综合性的影响_第1页
++硬件描述语言Verilog代码风格对可综合性的影响_第2页
++硬件描述语言Verilog代码风格对可综合性的影响_第3页
++硬件描述语言Verilog代码风格对可综合性的影响_第4页
++硬件描述语言Verilog代码风格对可综合性的影响_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硬件描述语言Verilog代码风格对可综合性的影响2009-10-0217:561.硬件描述语言中的综合技术以硬件描述语言为核心的EDA技术中,综合问题在设计中起着关键作用。综合就是逻辑综合器根据约束条件把Verilog(或VHDL)描述的RTL(RegisterTransferLevel,寄存器传输级)设计,转换为可与FPGA/CPLD的门阵列基本结构相映射的网表文件。网表文件包含使用工艺库的标准逻辑单元构建系统的硬件电路的信息,决定了系统的功能、性能、时序特性等。而Verilog代码风格和综合器的性能将对逻辑综合的生成的网表结果产生重要的影响。2.HDL代码的可综合性现在回到最初的问题上。为什么诸如除法、循环之类的HDL代码总是会出错?由上一部分可知,任何符合HDL语法标准的代码都是对硬件行为的一种描述,但不一定是可直接对应成电路的设计信息。行为描述可以基于不同的层次,如系统级,算法级,寄存器传输级(RTL)、门级等等。以目前大部分EDA软件的综合能力来说,只有RTL或更低层次的行为描述才能保证是可综合的。而众多初学者试图做的,却是想让软件去综合算法级或者更加抽象的硬件行为描述。域抽象层行为领域结构领域物理领域系统级性能描述部件及它们之间的逻辑连接方式芯片、模块、赶路板和物理划分的子系统算法级I/O应答算法级硬件模块数据结构部件之间的物理连接、电路板,底盘等寄存器传输级并行操作奇存器传输、状态表算术运算部件、多路选择器、<存器总线、微定序器、微存储器之间的物理连接方式芯片、宏单元逻辑级用布尔方程叙述门电路、羅发器、锁存器标准单元布图电路级犠分方程表达詰体管、电阻、电容、电感元件晶体管布图比如说,要想实现两个变量相除的运算,若在代码中写下C=A/B,你将会发现只有一些模拟软件在前仿真中能正确执行这句代码,但几乎任何软件都不能将其综合成硬件。不要怪软件太笨。试想一下,如果我们自己笔算除法是怎么做的?从高位到低位逐次试除、求余、移位。试除和求余需要减法器,商数和余数的中间结果必须有寄存器存储;而此运算显然不能在一个时钟周期里完成,还需要一个状态机来控制时序。一句简单的C=A/B同所有这些相比显得太抽象,对于只能接受RTL或更低层次描述的EDA软件来说确实太难实现。而如果代码是类似于(Verilog):always@(posedgeclk)c〈二A/B;这样的,要求除法在一个时钟延上完成,那更是不可能实现的。(注:有些FPGA的配套软件提供乘除法的运算模块,但也只能支持直接调用,不支持把形如C=A/B的语句综合成除法模块。)又比如,一个很多初学者常见的问题是试图让HDL进行循环运算,形同(Verilog):for(i=0;iparity=parityxordata[i];一些功能比较简单的综合软件会完全拒绝综合循环语句;而一些功能较强的软件仅当wordlength是常数的时候能综合;当wordlength为变量时,任何软件都不能综合上面的语句。这是因为硬件规模必须是有限的、固定的。当综合软件遇到循环语句时,总是将其展开成若干条顺序执行的语句,然后再综合成电路。若wordlength是常数,则展开的语句数是确定的,具有可综合性;而若它是变量时,展开的语句数不确定,对应的硬件电路数量也不能确定,无法被综合。或许有人说用计数器就能实现变量循环,但这情形又和上面的除法运算相同。那需要额外的硬件,用来存储中间结果和进行时序控制,象上面那样的循环语句对此描述得太抽象,软件接受不了。3.Verilog代码风格对逻辑综合的影响3.1设计思想对逻辑综合的影响设计思想是整个FPGA设计的灵魂,它决定了系统设计中Verilog代码编写策略和逻辑综合后获得的硬件架构,直接影响系统性能。对系统时钟设计而言,有同步设计与异步设计;而对工程实现而言,常采用的设计思想有:层次化设计、串行设计、并行设计和流水线设计。一个规范的FPGA设计尽可能使用同步设计。同步设计具有时序分析方便、可靠性好的优点,现代EDA软件是以同步设计为基准做分析的。但同步设计中最长的组合逻辑延迟,即关键路径(CriticalPath)将影响整个系统的运行速度。而基于锁存器的异步设计比触发器占据更小的面积,没有时钟树的耗电问题,但现代EDA工具几乎无法对复杂的异步电路模型做出有效的分析。层次化设计使得用户可以采用自上而下(Top-down)及自下而上(bottom-up)相结合的混合设计,在进行系统级和模块级设计的同时进行底层关键模块的划分和设计。对输入的处理是分步进行,且后一步骤依赖于前一步骤的结果的功能模块使用串行设计,并在串行模块之问加入FIFO(先进先出队列)缓冲;对几个可同时处理流程的功能模块使用并行设计,注意同步并行输出的结果。若系统要求高性能的处理效率,可在系统的关键路径加人流水线设计。3.2Verilog代码与锁存器(latch)多数EDA工具都是基于同步电路模型进行分析的。在FPGA设计时,Verilog代码的综合由EDA工具自动完成。在使用Verilog语言设计控制代码时,常因Verilog代码风格缺陷导致综合时产生非预期的锁存器,产生异步电路,使EDA工具无法对系统进行时序分析与验证。产生非预期的锁存器常见情况有:嵌套if语句;使用不完整的敏感列表(SensitivityList);条件不完备的case语句。锁存器产生原因往往是在Verilog代码设计时没有为所有输出指定输出状态,综合工具就会使用锁存器保存该输出原来的状态,从而影响系统的可靠性。此时,设计者必须要修改代码,消除锁存器。3.3代码风格与综合的RTL电路的时延3.3.1If语句与Case语句在FPGA控制电路设计中,常常使用if与case语句来进行逻辑条件的判断和信号的选择。在多if结构的语句中,选择信号的判断是有优先级的,综合出的电路的输入输出路径也有区别,这意味着信号的时延随着优先级而不同,设计中注意合理处理较大时延的信号路径。采用单if和case语句中,各输入信号到最终的结果输出所经过的路径长度是相同的,时延也基本相同。图2〜图4描述了if与case语句与RTL电路结构的对应关系。两个语句都能完成4选1多路选择器的功能,但其时延是不一样的。图3中,输入a具有最低优先级,其输出延时最长,图4采用无优先级信号判断的case语句,输入a,b,e,d到输出的延时是基本相同的。在设计时要根据系统的时序和功能要求,合理选择if与case语句风格。多if与case语句代码:z=0:if(sel[0])casex(se1)z=a;4blxxxz=d;if(sel[1])4bxlxxz=c;z=b;4bxx1xz=b;if(sel[2])4bxxx1z=a;z=c;defaultif(sel[3])z=lbO;z=d;endcaseend多if语句的RTL电路:

case语句的RTL电路3.3.2代码风格与综合的RTL电路的串/并行结构组合逻辑RTL代码尽量采用并行结构,降低寄存器问组合路径的延迟是提高系统工作频率最主要的手段,因此在完成相同功能的前提下应该尽量使用并行逻辑。而代码风格与综合所获得的RTL结构有着密切的关系,并行结构的选择可有效改善耗时较多的运算模块,对比图5与图6的RTL电路,同是消耗3个加法器资源的情况下,不同代码风格产生的电路结构与时序性能有着很大的差别。表达式z=(a+b)+(c+d)的RTL电路表达式z=a+b+c+d的RTL电路3.4代码风格与综合后RTL电路占用的资源由于运算单元需要占用比较大的逻辑资源,特别是复杂的运算单元,设计时需要考虑消耗的逻辑资源成本。此时,寻求资源共享就变得很重要。资源共享的主要思想是通过数据缓冲器或多路选择器的方法来共享数据通路中的工作单元。对于非并发的两个运算单元,可采用资源共享策略。逻辑共享与代码风格有着密切的关系,如图7、图8所示,在保证时序性能相同的基础上,采用不同的代码风格,可实现资源的共享,节省逻辑资源。表达式z=(cond)?(a+b):(c+d)的RTL电路表达式if(cond)z=a+b;elsez=c+d的RTL电路cdiuf4.结论通过研究代码风格对综合结果的影响以及DC综合器的综合约束条件模型,设计者不仅可通过选择合理的Verilog语言风格来优化综合结果,还可以借助优异的综合工具(如DC等)对综合结果进行优化设计.对于复杂的设计,DC综合器对逻辑资源的优化率町达到30%.综合器可根据代码描述的系统功能要求和综合约束,尽最大可能地输出符合用户设计要求的功能、时序、功耗的结果,并输出多种性能报告和网表,从而缩短产品的研发周期.转载:/html/EDAjishu/2007/0801/24

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论