您的位置:技术中心首页 > 硬件语言 >> Verilog HDL >> Verilog语言综合问题研究

Verilog语言综合问题研究

作者:何清平 刘佐濂 江建钧   时间:2007-09-29 10:58:03  来自:网上转载  浏览次数:0  文字大小:【】【】【
简   介:综合问题是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语句代码
……
z=0:
 if(sel[0]) z=a; 
 if(sel[1]) z=b; 
 if(sel[2]) z=c; 
 if(sel[3]) z=d; 
end 
……
……
case x(se1)
4b1xxx z=d;
4bx1xx z=c;
4bxx1x z=b;
4bxxx1 z=a;
default z=1b0;
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.
DC的综合约束模型 
图9 DC的综合约束模型
DC在综合过程中,总是力图同时满足这两种约束,并遵循表1所示的优先级对综合结果进行优化.

表1 约束条件的优先级
约束类型 优先级(降序)
设计规则 min capacitance
max transition
max fanout
max capacitance
cell degradation
优化规则 max delay
min delay
power
area
    在设计规则约束中,最大信号跳变时间由工艺库中的参数决定.最大扇出表示信号线的驱动能力.最大电容和最小电容允许设计者对线上的电谷施加约束.
    在逻辑优化约束中,包含面积与时序约束.时序约束,使综合器在满足系统时钟频率要求条件下进行逻辑优化.DC根据同步逻辑和异步逻辑的不同定义时序约束.对同步逻辑,通过对输入时钟、输入和输出时延施加约束实现,对异步逻辑,则定义点对点之问最大和最小的时延.而积约束,DC通过设置set_max_delay对设计施加最大面积约束.最大面积约束表示综合后使用的门的个数.

3 结论
    通过研究代码风格对综合结果的影响以及DC综合器的综合约束条件模型,设计者不仅可通过选择合理的Verilog语言风格来优化综合结果,还可以借助优异的综合工具(如DC等)对综合结果进行优化设计.对于复杂的设计,DC综合器对逻辑资源的优化率町达到30%.综合器可根据代码描述的系统功能要求和综合约束,尽最大可能地输出符合用户设计要求的功能、时序、功耗的结果,并输出多种性能报告和网表,从而缩短产品的研发周期.

责任编辑:5life

更多相关 Verilog 综合 synthesis 的文章

仿真工作流程(Verilog/Modelsim+Debussy) [2007-05-14]
Verilog 的些许经验 [2006-09-05]
Debussy 教程 [2006-03-26]
如何调试锁相环频率合成器 [2006-03-01]
如何调试锁相环频率合成器 [2006-03-01]
双向端口仿真及实例 [2006-02-27]
Verilog PLI教程 --- 第二部分 编写PLI应用程序 [2006-02-18]
编码风格 --- 命名规则 [2006-02-18]
编码风格 --- 其他 [2006-02-18]
编码风格 --- 与综合相关 [2006-02-18]
本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造工艺
书籍精选
说文解字
工具学习
数字滤波
趣闻逸事
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  Verilog语言综合问题研究
  Verilog 的些许经验
  Verilog学习笔记(More)
  Verilog HDL的基础知识
  verilog HDL笔记
  阻塞式赋值与非阻塞式赋值
  Verilog设计经验点滴
  硬件描述语言(HDL)的基础...
  中文版Verilog HDL简明教程

栏目最新

更多相关链接

  Verilog语言综合问题研究
  Verilog 的些许经验
  Verilog学习笔记(More)
  Verilog HDL的基础知识
  verilog HDL笔记
  阻塞式赋值与非阻塞式赋值
  Verilog设计经验点滴
  硬件描述语言(HDL)的基础...
  中文版Verilog HDL简明教程

热点文章

更多相关链接

  中文版Verilog HDL简明教程
  Verilog HDL的基础知识
  Verilog学习笔记(More)
  Verilog 的些许经验
  verilog HDL笔记
  Verilog设计经验点滴
  阻塞式赋值与非阻塞式赋值
  硬件描述语言(HDL)的基础知识...
  Verilog语言综合问题研究