Verilog语法——按位取反“~“和位宽扩展的优先级-验证

时间:2024-04-12 19:21:58

  仿真代码,下面代码验证的是“~”按位取反和符号扩展的优先级。

module tb();
    reg [7:0] a;
    reg b;
    wire [7:0] b1;
    wire [7:0] b2;
    wire [7:0] b3;
    
    initial begin
        a=0;b=0;
        repeat(10)begin
            #10
            a={$random}%256;
            b={$random}%2;
        end
    end
    assign b1=a+~b;
    assign b2=a+~{7'b0,b};
    assign b3=a+{~b};
endmodule

  仿真结果
在这里插入图片描述

  如上所示,b1=a+ ~ b相当于b2=a+ ~ {7’b0,b}$,但是实际应该是按照逻辑b3=a+{~ b}或者是b2=a+{ 7’b0,~ b }逻辑才对。