Parametry systemu Verilog w bloku generowania
Chciałbym ustawić parametr na podstawie parametru, który jest ustawiany podczas tworzenia instancji modułu. Mam następujące.
module foo #(WORDS = 8);
parameter P00 = 33;
logic [7:0] tmp;
generate
case (WORDS)
4: begin : A
assign tmp = 8'haa;
parameter P00 = 4;
end
8: begin : B
assign tmp = 8'hbb;
parameter P00 = 8;
end
16: begin : C
assign tmp = 8'hcc;
parameter P00 = 16;
end
default: begin : D
assign tmp = 8'hdd;
parameter P00 = 8;
end
endcase
endgenerate
initial begin
$display ("WORDS = %d", WORDS);
$display ("tmp = %h", tmp);
$display ("P00 = %d", P00);
end
endmodule
Spodziewałem się, że otrzymam błąd podczas ponownego definiowania P00, ale skompilowałem go i uruchomiłem, a zamiast niego wyświetliłem następujące.
WORDS = 8
tmp = bb
P00 = 33
Jeśli skomentuję przypisanie „parametr P00 = 33”, otrzymam „Identyfikator P00 nie został jeszcze zadeklarowany”. błąd.
Wydaje się, że blok generowania jest ignorowany. Co tu jest nie tak?