使用与Verilog不同,SystemVerilog引入了一个新的数据类型logic
四值逻辑属于硬件世界(0、1、X、Z),二值逻辑属于软件世界(0、1),SV引入二值逻辑能够有效减少内存使用量、提高仿真器性能。
四值逻辑:integer、reg、wire、logic、tri;
二值逻辑:byte、shortint、int、longint、bit。
根据有无符号可划分为:
有符号类型:byte、shortint、int、longint、integer;
无符号类型:bit、logic、reg、wire、tri
例如:使用有符号数byte代替logic[7:0]时,byte最大值只有127(-128~127),而不是255。可以使用byte unsigned使得最大值为255,但这比bit[7:0]更加麻烦。
logic类型只能有一个驱动,如果需要双向驱动,可以使用wire。
将二值逻辑连接到DUT时,如果DUT试图产生X或Z,这些值会被自动转换成双状态值0或1。使用$isunknown操作符,可以在表达式的任意位出现X或Z时返回1,如下:
if($isunknown(iport)==1)
$display("@%0t:4-state value detected on iport %b",$time,iport);
使用格式符%0t和参数¥time可以打印出当前仿真时间,打印个格式可以在$timeformat子程序中设置。