Else主体正在系统Verilog中执行

Else主体正在系统Verilog中执行,verilog,system-verilog,Verilog,System Verilog,我正在使用以下代码处理System Verilog中的一个模块: module my_module (input [7:0] rd_i // rd_i = 00001001 ,input [7:0] rs_i // rs_i = 10010010 ,output logic [7:0] result_o // result_o = 00001010 ); always_

我正在使用以下代码处理System Verilog中的一个模块:

module my_module (input             [7:0] rd_i // rd_i = 00001001
                 ,input             [7:0] rs_i // rs_i = 10010010
                 ,output logic  [7:0] result_o // result_o = 00001010
);

    always_comb
        if ((rd_i << 4) & 8'hF0 == rs_i & 8'hF0) begin
            result_o = 'b0101;
        end
        else begin
            result_o = 'b1010;
        end
endmodule

module my_module_tb();
    logic [7:0] rd_i = 'b00001001;
    logic [7:0] rs_i = 'b10010010;
    logic [7:0] result_o;

    my_module uut (
        .rd_i(rd_i),
        .rs_i(rs_i),
        .result_o(result_o)
    );
endmodule
模块我的模块(输入[7:0]rd\u i//rd\u i=00001001
,输入[7:0]rs\u i//rs\u i=10010
,输出逻辑[7:0]结果\u o//结果\u o=00001010
);
总是用梳子

如果((rd_i问题在于运算符优先级。IEEE标准1800-2012,第11.3.2节运算符优先级显示,
=
运算符的优先级高于二进制
&
运算符。这意味着您的代码表现如下,并添加了括号:

    if ((rd_i << 4) & (8'hF0 == rs_i) & 8'hF0) begin
    if ( ((rd_i << 4) & 8'hF0) == (rs_i & 8'hF0) ) begin