이 오류는 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)에는 다음 규칙이 명시되어 있습니다.
생성 문에 허용되지 않는 모듈 선언 및 모듈 항목에는 매개변수, 로컬 매개변수, 입력 선언, 출력 선언, inout 선언 및 블록 지정이 포함됩니다. 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