Verilog/SV 中有些数据类型为4态。
比如 reg, 就是说每个bit可谓有四种可能的value,即:0,1,x,z。
在写数据比较的代码,尤其是验证时写checker时,需要注意比较操作符间的区别。
== 和 ===
!= 和 !==
下面直接用一段代码来展示使用不同比较操作符的结果。
结果可以参考注释。
program test();
initial begin
$display ( "--------- == ----------" );
$display ( 4'b0011 == 4'b1010 ); // 0
$display ( 4'b0011 != 4'b1010 ); // 1
$display ( 4'b1011 == 4'b1x10 ); // 0
$display ( 4'b0011 != 4'b1x10 ); // 1
$display ( 4'b1x10 == 4'b1x10 ); // x
$display ( 4'b1x10 != 4'b1x10 ); // x
$display ( 4'b1z10 == 4'b1z10 ); // x
$display ( 4'b1z10 != 4'b1z10 ); // x
$display ( 4'b1x10 == 4'b1z10 ); // x
$display ( 4'b1x10 != 4'b1z10 ); // x
if( 4'b1x10 != 4'b1z10 )
$display ( "if" ); // won't be printed
else
$display ( "else" ); // will be printed
$display ( "--------- === ----------" );
$display ( 4'b0011 === 4'b1010 ); // 0
$display ( 4'b0011 !== 4'b1010 ); // 1
$display ( 4'b1011 === 4'b1x10 ); // 0
$display ( 4'b0011 !== 4'b1x10 ); // 1
$display ( 4'b1x10 === 4'b1x10 ); // 1
$display ( 4'b1x10 !== 4'b1x10 ); // 0
$display ( 4'b1z10 === 4'b1z10 ); // 1
$display ( 4'b1z10 !== 4'b1z10 ); // 0
$display ( 4'b1x10 === 4'b1z10 ); // 0
$display ( 4'b1x10 !== 4'b1z10 ); // 1
end
endprogram