Verilog/SystemVerilog中==和===的区别

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

你可能感兴趣的:(验证菜鸡网上冲浪)