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构造不会推断纯粹的组合逻辑 有什么问题吗?
答案 0 :(得分:4)
该错误表示您的代码推断出一些存储空间。由于sel
为3位,因此有8个可能的值,而您的case
语句只有6个。因此,您没有分配通过块的所有可能流的分配。您需要提供default
分支或在case
语句之前进行分配。