Verilog语言综合问题研究 联系客服

发布时间 : 星期三 文章Verilog语言综合问题研究更新完毕开始阅读143ed9a742323968011ca300a6c30c225801f00f

摘要:综合问题是FPGA设计过程中的关键环节,综合的结果就是系统设计的硬件结构,决定了系统的性能.文章通过RTI 电路模型来分析代码风格对综合结果的影响,介绍了著名的DC综合器的综合约束模型.为FPGA设计者提供最佳的综合设计策略.

随着计算机技术和微电子技术的发展,ASIC(Application Specific Integrated Circuit,专用集成电路)设计或SoC(System on a Chip,单片系统)设计成为电子电路设计的重要课题.使用硬件描述语言Verilog(或VHDL)在FPGA(Field Programmable Gate Array,现场可编程门阵列)器件上开发产品或进行ASIC的原型设计与验证的EDA(Electronic Design Automation,电子设计自动化)技术可有效降低产品上市风险,降低开发成本,缩短产品上市周期,受到了电子工程师的青睐.

这种以硬件描述语言和综合技术为核心的EDA技术,综合问题在设计中起着关键作用.综合就是逻辑综合器根据约束条件把Verilog(或VHDL)描述的RTL(Register Transfer Level,寄存器传输级)设计,转换为可与FPGA/CPLD的门阵列基本结构相映射的网表文件(如图1).

图1 综合的原理

网表文件包含使用工艺库的标准逻辑单元构建系统的硬件电路的信息,决定了系统的功能、性能、时序特性等.而Verilog代码风格和综合器的性能将对逻辑综合的生成的网表结果产生重要的影响. 1 Verilog代码风格对逻辑综合的影响 1.1 设计思想对逻辑综合的影响

设计思想是整个FPGA设计的灵魂 ,它决定了系统设计中Verilog代码编写策略和逻辑综合后获得的硬件架构,直接影响系统性能.对系统时钟设计而言,有同步设计与异步设计;而对工程实现而言,常采用的设计思想有:层次化设计、串行设计、并行设计和流水线设计.

一个规范的FPGA设计尽可能使用同步设计.同步设计具有时序分析方便、可靠性好的优点,现代EDA软件是以同步设计为基准做分析的.但同步设计中最长的组合逻辑延迟,即关键路径(Critical Path)将影响整个系统的运行速度.而基于锁存器的异步设计比触发器占据更小的面积,没有时钟树的耗电问题,但现代EDA工具几乎无法对复杂的异步电路模型做出有效的分析.

层次化设计使得用户可以采用自上而下(Top-down)及自下而上(bottom-up)相结合的混合设计,在进行系统级和模块级设计的同时进行底层关键模块的划分和设计.对输入的处理是分步进行,且后一步骤依赖于前一步骤的结果的功能模块使用串行设计,并在串行模块之问加入FIFO(先进先出队列)缓冲;对几个可同时处理流程的功能模块使用并行设计,注意同步并行输出的结果.若系统要求高性能的处理效率,可在系统的关键路径加人流水线设计.

1.2 Verilog代码与锁存器(1atch)

多数EDA工具都是基于同步电路模型进行分析的.在FPGA设计时,Verilog代码的综合由EDA工具自动完成.在使用Verilog语言设计控制代码时,常因Verilog代码风格缺陷导致综合时产生非预期的锁存器,产生异步电路,使EDA工具无法对系统进行时序分析与验证.产生非预期的锁存器常见情况有:嵌套if语句;使用不完整的敏感列表(Sensitivity List);条件不完备的case语句.锁存器产生原因往往是在Verilog代码设计时没有为所有输出指定输出状态,综合工具就会使用锁存器保存该输出原来的状态,从而影响系统

的可靠性.此时,设计者必须要修改代码,消除锁存器.

1.3 代码风格与综合的RTL电路的时延 1.3.1 If语句与Case语句

在FPGA控制电路设计中,常常使用if与case语句来进行逻辑条件的判断和信号的选择.在多if结构的语句中,选择信号的判断是有优先级的,综合出的电路的输入输出路径也有区别,这意味着信号的时延随着优先级而不同,设计中注意合理处理较大时延的信号路径.

采用单if和case语句中,各输入信号到最终的结果输出所经过的路径长度是相同的,时延也基本相同.图2~图4描述了if与case语句与RTL电路结构的对应关系.两个语句都能完成4选1多路选择器的功能,但其时延是不一样的.图3中,输入a具有最低优先级,其输出延时最长,图4采用无优先级信号判断的case语句,输入a,b,e,d到输出的延时是基本相同的.在设计时要根据系统的时序和功能要求,合理选择if与case语句风格.

图2 多if与case语句代码 …… …… case x(se1) z=0: 4b1xxx z=d; if(sel[0]) z=a; 4bx1xx z=c; if(sel[1]) z=b; 4bxx1x z=b; if(sel[2]) z=c; 4bxxx1 z=a; if(sel[3]) z=d; default z=1b0; end endcase …… ……

图3 多if语句的RTL电路

图4 case语句的RTL电路

1.3.2 代码风格与综合的RTL电路的串/并行结构

组合逻辑RTL代码尽量采用并行结构,降低寄存器问组合路径的延迟是提高系统工作频率最主要的手段,因此在完成相同功能的前提下应该尽量使用并行逻辑.而代码风格与综合所获得的RTL结构有着密切的关系,并行结构的选择可有效改善耗时较多的运算模块,对比图5与图6的RTL电路,同是消耗3个加法器资源的情况下,不同代码风格产生的电路结构与时序性能有着很大的差别.

图5 表达式z=(a+b)+(c+d)的RTL电路

图6 表达式z=a+b+c+d的RTL电路

1.4 代码风格与综合后RTL电路占用的资源

由于运算单元需要占用比较大的逻辑资源,特别是复杂的运算单元,设计时需要考虑消耗的逻辑资源成本.此时,寻求资源共享就变得很重要.资源共享的主要思想是通过数据缓冲器或多路选择器的方法来共享数据通路中的工作单元.对于非并发的两个运算单元,可采用资源共享策略.逻辑共享与代码风格有着密切的关

系,如图7、图8所示,在保证时序性能相同的基础上,采用不同的代码风格,可实现资源的共享,节省逻辑资源.

图7 表达式z=(cond)?(a+b):(c+d)的RTL电路

图8 表达式if(cond)z=a+b;else z=c+d的RTL电路 2 Design Complier综合器

随着系统设计复杂度的增加,FPGA综合依靠EDA工具自动完成.加州大学洛杉矶分校(UCLA)Jason Cong教授研究指出,现有的综合工具所生成的电路规模比已知综合基准的最优方案可能要大70到500倍.新思(synopsys)公司在逻辑综合市场占据85% 的市场份额,其逻辑工具DC(Design Complier)得到全球60多个半导体厂商、380多个工艺库的支持,是Synopsys最核心的产品.它根据设计描述和约束条件并针对特定的工艺库自动综合出优化的门级电路,并产生多种性能报告,在缩短设计时问的同时提高设计性能.通过熟悉DC(Design Complier)综合器的综合约束模型,为设计者选择Verilog代码风格及综合策略提供依据. DC综合约束设置有两种:一是设计规则约束(Design Rule Constraint);二是逻辑优化约束(Optimization Constraint),其涵盖的约束范围如图9.

图9 DC的综合约束模型

DC在综合过程中,总是力图同时满足这两种约束,并遵循表1所示的优先级对综合结果进行优化.

表1 约束条件的优先级 约束类型 优先级(降序)