博主是先前学习过verilog,过渡到sv较为简单
====================================
systemverilog 以.sv文件结尾
sv中的操作符:
== != : 这两种表示逻辑符合与逻辑不符 , 如若其中存在有x或者z,那么得到的结果 则是z
=== !== : 严格匹配x与z,但此条语句不可综合。
==? !=? : 在其中x与z为无关项,若右操作数为常数,则可综合。
加入延迟:
#(n timedelay_uint) 加入延迟事件
#(min:typical:max,min:typical:max,min:typical:max) 加入上升延迟与下降延迟,还有截止延迟
编写的技巧:
使用parameter语句添加参数,使模块参数化,,使得模块可以重复使用。实现代码复用。
关于sv的testbench的一个发现:
module TestAnd2;
wire a , b , c ;
And g1(c,a,b);
intial begin
a = ‘0;
b = ‘0;
#100ps a = ‘1;
#50ps b = ‘1;
end
endmodule
testbench中的wire变量类型可以直接通过赋值语句赋值了,而不再需要写成 output reg 的类型了。
实在是一大惊奇的发现!!!
同时sv可以使得延迟的事件带有时间单位,并且在实例化一个module时,若其端口名与链接名是一致的,
那么则可使用module_name(.*)的简写方式
sv的数据类型:
char:一个两态的有符号变量,它与C语言中的char数据类型相同,可以是一个8位整数(ASCI