systemverilog always_comb构造不能纯粹推断

时间:2018-09-04 23:06:49

标签: system-verilog

import rv32i_types::*;

module cmp
(
    input [2:0] sel,
    input [31:0] a, b,
    output logic f
);

always_comb
begin
    case (sel)
        beq:  
              if(a==b)
                    out = 1'b1;
                else
                    out = 1'b0;

        bne: 
                if(a!=b)
                    out = 1'b1;
                else
                    out = 1'b0;
        blt:
              if($signed(a) < $signed(b))
                  out = 1'b1;
                else
                    out = 1'b0;

        bge:
              if($signed(a) > $signed(b))
                  out = 1'b1;
                else
                    out = 1'b0;

        bltu:
              if(a < b)
                    out = 1'b1;
                else
                    out = 1'b0;

        bgeu:
              if(a > b)
                    out = 1'b1;
                else
                    out = 1'b0;
    endcase
end

endmodule : cmp

每当我运行它时,它说always_comb构造不会推断纯粹的组合逻辑 有什么问题吗?

1 个答案:

答案 0 :(得分:4)

该错误表示您的代码推断出一些存储空间。由于sel为3位,因此有8个可能的值,而您的case语句只有6个。因此,您没有分配通过块的所有可能流的分配。您需要提供default分支或在case语句之前进行分配。