ข้อผิดพลาดนี้เกิดขึ้นเฉพาะในซอฟต์แวร์ Quartus® II เวอร์ชั่น 6.0 (รวมถึง 6.0 SP1) หากการออกแบบใช้คําประกาศท้องถิ่นภายในสร้างคําสั่งดังตัวอย่างด้านล่างเนื่องจากซอฟต์แวร์บังคับใช้กฎภาษา Verilog บางข้ออย่างเคร่งครัดกว่าเวอร์ชันอื่นๆ ทั้งหมด
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
คู่มืออ้างอิงภาษา Verilog (LRM) จะระบุกฎต่อไปนี้:
การประกาศโมดูลและรายการโมดูลที่ไม่ได้รับอนุญาตในคําสั่งสร้าง ประกอบด้วย: พารามิเตอร์, พารามิเตอร์ในเครื่อง, การประกาศอินพุต, การรายงานเอาต์พุต, การประกาศขาเข้า และระบุบล็อก 1364-2001 LRM 12.1.3
เพื่อหลีกเลี่ยงข้อผิดพลาดและใช้งานฟังก์ชันเดียวกัน ให้ใส่คําสั่งพารามิเตอร์ภายในบล็อกเสมอดังตัวอย่างด้านล่าง:
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