在SV代码中,当看到一个变量时:
第一,判断它的类型是变量类型variable还是线网类型net;
第二,判断它的数据类型是四态逻辑还是二态逻辑。
在verilog中,reg并不一定会被综合成寄存器register,它只是用来与线网类型相对照,表示存储数据的变量。
在SV中,使用logic(数据类型,四态逻辑)来达到通用的存储硬件数据的目的。它既可以被声明为变量类型variable,也可以被声明为线网类型net(wire),默认为变量类型。
二态逻辑bit的类型默认为变量类型。
在RTL(寄存器转换级电路Register Transfer Level)级别:
四态中的X值是用来捕捉设计错误的,例如寄存器未初始化;
四态中的Z值则用来表示未连接或者三态的设计逻辑。
但在系统级或者事务级,X和Z很少被使用。
可以在有符号类型的后面添加unsigned来表示无符号类型。
例如:
有符号类型byte,数值范围是[-128,127],
而byte unsigned则表示无符号类型,等同于bit [7:0],数值范围是[0,255]。
在验证环境里做激励驱动时,只需要使用二值逻辑0和1,无需关注硬件的底层逻辑X和Z值。
在SV中,void类型表示空类型,常用在函数定义时,表示不会返回数值,此用法与C语言中的void用法相同。
在SV中,shortreal类型表示32位的单精度浮点类型,等同于C语言中的float。
在Verilog中,real类型表示双精度浮点类型,等同于C语言中的double。