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?

questionAnswers(3)

yourAnswerToTheQuestion