記事 ID: 000078358 コンテンツタイプ: エラーメッセージ 最終改訂日: 2021/08/28

エラー (10170): Verilog HDL 構文エラー時 <design>.v 「localparam」というテキストの近く。「end」、または識別子 (「localparam」は予約キーワード)、またはシーケンシャル・ステートメントを必要とする</design>

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

このエラーは、インテル® 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

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。