首页 理论教育 Verilog综合原则实战

Verilog综合原则实战

时间:2023-10-20 理论教育 版权反馈
【摘要】:所有的综合工具都支持的语法结构包括:所有的综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait;有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。下面列出了建立可综合模型要遵循的原则:不要使用initial初始化语句。这点之前提到过了,initial语句是用在仿真的;events。real数据类型还不能被综合;time。

Verilog综合原则实战

有的时候,源代码可以被综合,有的时候不能被综合。那就有一个问题。到底什么情况才能综合呢?这就涉及综合的原则。

首先看一下哪些结构是综合支持的,那些结构是不支持的。

(1)所有的综合工具都支持的语法结构包括:

(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。

所以,读者在进行编程时,要对照以上事项,看你编写的程序是不是不能被综合的。如果这种结构确实没有综合支持,就尽量不要写,或者以其他的语法结构来替换。

那么,我们在综合时,要尽量的遵循一些基本原则。下面列出了建立可综合模型要遵循的原则:

(1)不要使用initial初始化语句。initial语句是用于仿真的;

(2)不要使用分支项中存在x值或z值的case语句;

(3)循环语句一定要循环次数明确,不要使用循环次数不明确的结构,比如forever、while等;

(4)不要使用用户定义原语UDP;

(5)有可能的话最好使用同步触发的电路设计方式;

(6)尽量采用行为描述语句来进行设计;

(7)描述组合逻辑的时候,如果用到了always语句块,要养成在信号敏感列表中列出所有的输入信号;

(8)所有的内部寄存器都要能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位;(www.xing528.com)

(9)时序逻辑电路的设计,应该尽可能采用非阻塞赋值。对组合逻辑电路的设计,既可以采用阻塞赋值,也可以采用非阻塞赋值。但是,同一个语句块里,尽量不要同时使用阻塞赋值和非阻塞赋值;

(10)如果在2个或多个always过程块中对同一个变量进行赋值,那就有可能产生矛盾,这是不允许的;

(11)对同一个赋值对象不能既使用阻塞赋值,又使用非阻塞赋值;

(12)对同一个变量的赋值,不能用多个时钟(包括不同的沿触发和电平触发)来控制。

下面,着重指出不能被综合的语句结构:

(1)initial语句。这点之前提到过了,initial语句是用在仿真的;

(2)events。events也是用在仿真;

(3)real。real数据类型还不能被综合;

(4)time。time数据类型还不能被综合;

(5)fork-join语句不可以被综合;

(6)有些语句有延迟,比如:

延迟只适用于仿真,综合的时候,会自动忽略掉这些延迟;

(7)不要在信号敏感列表里同时对一个信号的上升沿和下降沿操作,比如:

这个语句是错误的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈