systemverilog always_comb构造不纯粹推断

问题描述 投票:0回答:1
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构造不能推断出纯粹的组合逻辑是什么问题?

system-verilog
1个回答
4
投票

该错误意味着您的代码会推断出一些存储空间。由于sel是3位,因此有8个可能的值,而你的case语句只有6个。那么你没有在所有可能的流量中分配出来。您需要在default声明之前提供case分支或进行分配。

© www.soinside.com 2019 - 2024. All rights reserved.