Конструкция systemverilog always_comb не подразумевает чисто - PullRequest
0 голосов
/ 05 сентября 2018
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 голосов
/ 05 сентября 2018

Ошибка означает, что ваш код обнаружил некоторое хранилище. Поскольку sel равен 3 битам, существует 8 возможных значений, а в вашем операторе case есть только 6. Тогда у вас нет назначения out во всех возможных потоках через ваш блок. Вам необходимо предоставить ветку default или сделать присвоение до оператора case.

...