このエラーは、インテル® Quartus® II ソフトウェア・バージョン 6.0 (6.0 SP1 を含む) でのみ発生します。このエラーは、以下の例のように、デザインが generate ステートメント内でローカル・パラメーター宣言を使用している場合、そのソフトウェアが他のすべてのバージョンよりも厳しく 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) には次のルールが記載されています。
モジュール宣言とモジュール項目は、generate ステートメントでは使用できません。パラメーター、ローカル・パラメーター、入力宣言、出力宣言、inout 宣言、および specify ブロック。1364-2001 LRM 12.1.3
このエラーを回避して同じ機能を実装するには、以下の例のように、ローカルのパラメーター・ステートメントを always ブロックに入れます。
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