Добрый день!
Помогите, пожалуйста, разобраться с проблемой. Описываю автомат. Использую при этом связку: перечисления + unique case.
Исходный код прилагается:
module simple_fsm
(
input clk, rst,
output logic y
);
typedef enum logic [1:0] {IDLE=2'b00, WORK=2'b01, DONE=2'b10} fsm_state;
fsm_state State, Next;
always_ff @(posedge clk)
if(rst)
State<=IDLE;
else
State<=Next;
always_comb
unique case (State)
IDLE: Next=WORK;
WORK: Next=DONE;
DONE: Next=IDLE;
endcase
always_comb
y=(State==DONE);
endmodule
Далее я пытаюсь загрузить этот файл в Synopsys DC. Использую пару команд:
analyze -format sverilog simple_fsm.sv
elaborate simple_fsm
И получаю следующие предупреждение:
Warning: ./mult.sv:17: Case statement marked unique does not cover all possible conditions. (VER-504)
Поэтому у меня возникает вопрос. Как DC анализирует unique case?
Ведь я использую перечисления, разве это не должно сказать DC, что кроме перечисленных значений, других не возникнет?