基于VerilogHDL语言的可综合性设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Verilog HDL语言的可综合性设计
1 引言
逻辑综合带来了数字设计行业的革命,有效地提高了生产率,减少了设计周期时间。在手动转换设计的年代,设计过程受到诸多限制,结更容易带来人为的错误。而一个小小的错误就导致整个模块需进行重新设计,设计转换工作占去了整个设计周期的大部分时间,验证工作进行困难,设计技术无法重用等等。而自动逻辑综合工具的出现,突破了上述种种限制,使得设计者从繁琐的转换工作中解脱出来,将更多的时间用于验证和优化,不仅保证了功能的实现,而且有利于提高性能。可见,综合在逻辑设计中具有举足轻重的作用。
2 综合的概念及其过程
2.1 逻辑综合概述
综合就是在给定标准元件库和一定的设计约束条件下,把用语言描述的电路模型转换成门级网表的过程。要完成一次综合过程,必须包含三要素:RTL级描述、约束条件和工艺库。
2.2 RTL级描述
RTL级描述是以规定设计中采用各种寄存器形式为特征,然后在寄存器之间插入组合逻辑,其可以用如图1所示的“寄存器和云图”方式来表示。
图1 RTL级描述
2.3 约束条件
为了控制优化输出和映射工艺要用约束,它为优化和映射试图满足的工艺约束提供了目标,并且它们控制设计的结构实现方式。目前综合工具中可用的约束包括面积、速度、功耗和可测性约束,未来我们或许会看到对封装的约束和对布图的约束等,但是,目前的最普遍的约束是按面积和按时间的约束。
时钟限制条件规定时钟的工作频率,面积限制条件规定该设计将花的最大面积。综合工具将试图用各种可能的规则和算法尽可能地满足这些条件。
2.4 工艺库
按照所希望的逻辑行为功能和有关的约束建立设计的网表时,工艺库持有综合工具必须的全部信息。工艺库含有允许综合进程为建立设计做正确选择的全部信息,工艺库不仅含有ASIC单元的逻辑功能,而且还有该单元的面积、单元输入到输出的定时关系、有关单元扇出的某种限制和对单元所需的定时检查。
2.5 综合过程
逻辑综合工具将RTL级描述转换成门级描述一般有3个步骤:
(1)将RTL级描述转换成未优化的门级布尔描述(通常为原型门,如与门、或门、触发器和锁存器),这一步称为“展平”。
(2)执行优化算法,化简布尔方程,产生一个优化的布尔方程描述,这一步称为“优化”。
(3)按半导体工艺要求,采用相应的工艺库,把优化的布尔描述映射成实际的逻辑电路,这一步称为“设计实现”。
具体的综合过程如图2所示:
图2 综合过程
2.6 综合涉及的两个领域
从代码到门级电路的“翻译”是通过综合工具内部的映射机制实现的,其中涉及的两个领域之间的映射机制如图3所示。
图3 综合涉及的两个领域
因为不同综合工具的映射机制可能不同,所以相同的程序在不同综合工具下可能得到不同的电路。
3 可综合模型的设计
Verilog HDL这种硬件描述语言允许用户在不同的抽象层次上对电路进行建模,这些层次从门级、寄存器传输级、行为级直至算法级。因此,同一个电路就可以有多种不同的描述方式,但不是每一种描述
都是可综合的。图4中使用Verilog HDL以不同的方式描述了同一个电路。某综合系统支持对方式A和方式B的综合,但可能不支持对方式C的综合。而方式D可能根本就不可综合。这一局限给设计者造成了严重障碍,因为设计者不仅需要理解Verilog HDL,而且还必须理解特定综合系统的建模方式,才能编写出可综合的模型。
图4 同样的行为,不同的建模方式
3.1 可综合模型的结构
如果程序只用于仿真,那么几乎所有的语法和编程语句都可以使用。但如果程序是用于硬件实现,那么我们就必须保证程序的可综合性,即所编写的程序能被综合器转化为相应的电路结构。不可综合的HDL 语句在用综合工具综合时将被忽略或者报错。作为设计者,应该对可综合模型的结构有所了解。
虽然不同的综合工具对Verilog HDL语法结构的支持不尽相同,但Verilog HDL中某些典型的结构是很明确地被所有综合工具支持或不支持的。
(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。
(2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。
(3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。
因此,要编写出可综合的模型,应尽量采用所有综合工具都支持的结构来描述,这样才能保证设计的正确性和缩短设计周期。
3.2 建立可综合模型的原则
要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点:
(1)不使用初始化语句。
(2)不使用带有延时的描述。
(3)不使用循环次数不确定的循环语句,如forever、while等。
(4)不使用用户自定义原语(UDP元件)。
(5)尽量使用同步方式设计电路。
(6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。
(7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。