Lỗi này chỉ xảy ra trong phần mềm Quartus® II phiên bản 6.0 (bao gồm cả 6.0 SP1), nếu thiết kế sử dụng các tuyên bố localparam bên trong các báo cáo tạo, như trong ví dụ dưới đây, vì phần mềm thực thi một số quy tắc ngôn ngữ Verilog nghiêm ngặt hơn so với tất cả các phiên bản khác.
generate
for (i = 0; i < WIDTH; i = i 8)
begin : my_loop
localparam j = i 7 > WIDTH-1 ? WIDTH-1 : i 7;
localparam k = BASE (i>>3); ...
endgenerate
Hướng dẫn tham khảo ngôn ngữ Verilog (LRM) nêu quy tắc sau:
Khai báo mô-đun và các mục mô-đun không được phép trong báo cáo tạo bao gồm: tham số, tham số cục bộ, khai báo đầu vào, khai báo đầu ra, khai báo không thanh toán và xác định các khối. 1364-2001 LRM 12.1.3
Để tránh xảy ra lỗi và thực hiện các chức năng tương tự, hãy đặt các tuyên bố tham số cục bộ vào trong một khối luôn như trong ví dụ dưới đây:
generate for (i = 0; i < WIDTH; i = i 8) begin : my_loop always @(posedge clk or posedge reset) begin : my_params localparam j = i 7 > WIDTH-1 ? WIDTH-1 : i 7; localparam k = BASE i>>3); ... endgenerate