IC验证学霸笔记2——verilog基本语法之可综合(十三)
可综合语法
and or nand 等基本逻辑门if块和case块
+,-,*,/,^,~等逻辑运算符
&&,||,==,>,<=,!=,!等关系运算符
>>,<<,assign 等赋值语句
always(不包含延时)块;
不可综合语法
initial块
forever块
repeat, force,release,task,enable,disable一般不可综合
系统函数如$display等
#延时赋值语句一般综合是会被忽略。
阻塞赋值于非阻塞赋值
阻塞赋值(=)
阻塞赋值对应的电路往往与触发沿没有关系,只与输入电平的变化有关;一般可综合的阻塞赋值语句在执行操作时不能设定延迟,(即使是零延迟也不允许),否则延迟后才执行赋值,这种语句不可综合;
赋值语句可以认为只有一个步骤的操作:
其后面的赋值语句是在前一句赋值语句结束后再开始赋值的;
非阻塞赋值(<=)
非阻塞赋值对应的电路结构往往与触发有关系,只有在触发沿时才有可能发生赋值的情况。非阻塞赋值在赋值操作时刻开始时计算非阻塞赋值符右边的表达式,赋值操作时刻结束时更新左边。同一语句块中的非阻塞赋值是同时进行的。
非阻塞赋值只能用在initial块额always块中,不能用于连续赋值。
Verilog 模块编程要点
1.时序电路建模时,用非阻塞赋值;2.锁存器电路建模时,用非阻塞赋值;
3.用always块建立组合逻辑模型时,用阻塞赋值;
4.在同一个always块中建立组合逻辑和逻辑电路时,使用非阻塞赋值;
5.在同一个always块中不要既使用阻塞赋值又使用非阻塞赋值;
6.不要在一个以上的always块中为同一个变量赋值;
7.用$strobe系统任务来显示用非阻塞赋值的变量值;
8.在赋值时不要使用#0延迟;
注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持