最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
HDL Coder™ は、次の RTL 記述ルールに準拠し、モデル構造がこれらのルールに違反しないかチェックします。HDL Coder は、HDL コーディング標準レポートにルールに違反している可能性がある箇所を報告します。違反を防ぐには、ルールの推奨事項を参照してください。
2.A.A 組み合わせ論理規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.A.1 リファレンス |
| HDL Coder では、生成された VHDL コード内の各エンティティにパッケージを含みます。 | 対処不要です。 |
2.A.A.2 警告 |
| HDL Coder は、DUT にファンクションを生成しません。 | 対処不要です。 |
2.A.A.3 警告 |
| HDL Coder は、VHDL コードおよび Verilog コードを正しい構文で生成し、このルールに準拠しています。 | 対処不要です。 |
2.A.B ファンクション規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.B.1 エラー |
| HDL Coder は、DUT にファンクションを生成しません。 | 対処不要です。 |
| HDL Coder は std_logic または std_logic_vector を使用して入出力端子を記述します。 | 対処不要です。 | |
2.A.B.2–3 エラー |
| 生成された Verilog の HDL コードは、このルールに準拠します。 | 対処不要です。 |
| 既定では、HDL Coder は生成コードで整数型の範囲を指定します。 | 対処不要です。 | |
2.A.B.4 エラー |
| HDL Coder は、Verilog コードで task 文や fork-join 構造を使用しません。 | 対処不要です。 |
| HDL Coder は、生成コードでビットまたはビット ベクトル データ型は使用しません。 | 対処不要です。 | |
2.A.B.5 エラー |
| Verilog コード生成時、HDL Coder はタスクの記述にクロック エッジを使用しません。 | 対処不要です。 |
2.A.B.6 エラー |
| 生成された VHDL コードでは std_logic_vector が使用する範囲が指定されているため、HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.A.C ビット幅一致規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.C.1–2 エラー |
| HDL Coder は、モジュールのインスタンス化時に強制的にタイプ マッチングを行うため、このルールに準拠します。 | 対処不要です。 |
| VHDL コード生成時、HDL Coder は ‘IN’、’OUT’、または ‘INOUT’ ポートを指定し、buffer や linkage は使用しません。 | 対処不要です。 | |
2.A.C.3 エラー |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
| HDL Coder は VHDL コード生成時、‘IN’、’OUT’、または ‘INOUT’ ポートを指定し、buffer または linkage は使用しません。 | 対処不要です。 | |
2.A.C.4–5 エラー |
| HDL Coder は、このルールに準拠した Verilog コードを生成します。 | 対処不要です。 |
| HDL Coder は、生成した VHDL コードで、入力端子に初期値を指定しません。 | 対処不要です。 |
2.A.D 演算子規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.D.5 メッセージ |
| HDL Coder で生成された Verilog コードは、マルチビット演算子について、このルールに準拠しています。 | 対処不要です。 |
2.A.D.6 メッセージ |
| 既定では、HDL Coder はシングルビットや大きな式のリダクションは行いません。設計にビット リダクション演算を含む場合、生成される HDL コードが大きな式の削減を行うことがあります。 | ビット リダクション演算を呼び出さないよう、設計を変更してください。 |
2.A.E 条件ステートメント規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.E.3 メッセージ |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.A.F 配列、ベクトル、行列の規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.F.2 警告 |
| 設計に LSB が非ゼロ値のベクトルが含まれます。 | 生成コードに含まれるベクトルまたはメモリの LSB が 0 になるよう、設計を変更してください。 |
2.A.F.4 警告 |
| HDL Coder は、インデックス変数の幅が小さくなりすぎないよう、強制的にタイプ マッチングを行います。 | 対処不要です。 |
2.A.F.5 エラー |
| HDL Coder の生成したコードでは、配列のインデックスに x や z は使用されません。 | 対処不要です。 |
2.A.G 代入規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.G.1 エラー |
| HDL Coder は、他の演算を介在させずに、集合体を生成コードに直接代入します。 | 対処不要です。 |
2.A.H ファンクションの戻り値の規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.H.1 リファレンス |
| HDL Coder の生成したコードでは、サブプログラムの記述に制約付き配列は使用されません。 | 対処不要です。 |
2.A.H.2 リファレンス |
| ファンクションの記述において、戻り値の型が配列の場合、HDL Coder は生成コード内のファンクションで戻り値の範囲を指定します。 | 対処不要です。 |
2.A.H.4–6 エラー |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.A.H.9–10 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.A.I 組み込み属性の規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.I.4–5 エラー |
| 既定では、HDL Coder は、生成コードにユーザー定義の属性を使用しません。[DSPStyle] などの HDL ブロック プロパティを設計内で設定した場合、生成コードに合成命令が使用されます。 | このエラーを修正するには、設計を変更して、合成命令を生成コード上で使用するために設定した HDL ブロック プロパティを取り除きます。 |
2.A.J VHDL 固有の規則
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.A.J.1–6 警告 |
| 設計にループ ステートメントが使用されている場合、HDL Coder はこの警告を生成します。 | この警告を回避するには、ループ ステートメントのない設計に変更します。 |
2.A.J.8–13 エラー |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
Always
" 文のガイドライン2.B.A ラッチ制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.B.A.2 リファレンス |
| HDL Coder はラッチを作成しません。 | 対処不要です。 |
2.B.B 信号制約 - I
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.B.B.2–3 メッセージ |
| HDL Coder は、 | 対処不要です。 |
| HDL Coder では、 | 対処不要です。 |
2.B.C 信号制約 - II
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.B.C.1–2 エラー |
| 組み合わせ回路の | 生成される Verilog コードにこれらの構造が使われないよう、MATLAB® アルゴリズムか Stateflow® 設計を変更してください。 |
2.B.C.3 メッセージ |
| HDL Coder は、順序回路の | 対処不要です。 |
2.C.A 代入制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.C.A.1–2c エラー |
| HDL Coder は、 | 対処不要です。 |
2.C.A.4–5b 警告 |
| HDL Coder は、DUT に | 対処不要です。 |
2.C.A.6 エラー |
| HDL Coder は、生成コード内で | 対処不要です。 |
2.C.A.7 メッセージ |
| HDL Coder は、複数の非同期リセットを生成しません。生成コードは、複数の同期リセットを含むことができます。 | 対処不要です。 |
2.C.A.8 エラー |
| HDL Coder は、wait 文を使用しません。 | 対処不要です。 |
2.C.A.9 エラー |
| 既定では、HDL Coder は、クロック イベントにイベント構文を使用します。
| このエラーを修正するには、生成コードがイベント構文を使用するよう、 |
2.C.B ブロッキング ステートメント制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.C.B.1–2 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.C.B.4 エラー |
| 生成された HDL コードにデッド コードは含まれないため、HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.C.C クロック制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.C.C.1–2b エラー |
| HDL Coder は、クロックの立ち上がりエッジまたは立ち下がりエッジのいずれかを使用しますが、クロックの両エッジを使用することはありません。 | 対処不要です。 |
2.C.C.4–5 エラー |
| クロック イネーブル信号やネットワーク上のリセット信号が設計に使用されている場合、HDL Coder はエラーを生成します。 | 生成された HDL コード内のクロック イネーブル信号を最小限に抑えるには、HDL コーディング標準のカスタマイズ プロパティで、[MinimizeClockEnableCheck] プロパティを有効にします。 ネットワーク上のリセット信号を削除するには、HDL コーディング標準のカスタマイズ プロパティで、[RemoveResetCheck] 設定を有効にします。 |
2.C.C.6 警告 |
| Simulink® モデル設計または MATLAB コードに、非同期リセット信号が使用されています。 | この違反を回避するには、同期リセット信号を設計に使用します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[リセット タイプ] を |
2.C.D 初期値制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.C.D.1 エラー |
| 設計用に生成された HDL コードに合成不能な | HDL ワークフロー アドバイザーの [ブロック RAM を初期化] または [すべての RAM ブロックを初期化] オプションを無効にします。 このルール チェックを無効にするには、HDL コーディング標準のカスタマイズ オブジェクトの |
2.C.F タイミングの混在制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.C.F.1–2a 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.D.A モジュール制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.D.A.2–3 警告 |
| HDL Coder は、生成コードにラッチを作成しません。 | 対処不要です。 |
2.D.A.4–5 エラー |
| 既定では、HDL Coder は組み合わせループを生成しません。MATLAB アルゴリズムに組み合わせループが存在する場合は、生成された HDL コードで組み合わせループが使用されることがあります。 | 生成される HDL コードに組み合わせループが含まれないよう、MATLAB コードを変更してください。 |
2.E.A モジュール制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.E.A.1–2 警告 |
| HDL Coder は、生成コード内にラッチまたはトライステート バッファーを作成しません。 | 対処不要です。 |
2.E.A.4–5b リファレンス |
| HDL Coder は、生成コード内にラッチまたはトライステート バッファーを作成しません。 | 対処不要です。 |
2.E.A.6–9 エラー |
| 既定では、HDL Coder は、入力端子または出力端子を双方向端子に直接接続しません。 Simulink モデルで、入力端子または出力端子の HDL ブロック プロパティにおいて [BidirectionalPort] を | Simulink モデルで、入力端子または出力端子の HDL ブロック プロパティで、[BidirectionalPort] を |
2.E.B 接続性制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.E.B.1 警告 |
| HDL Coder で生成した HDL コードには、トライステート ネットは含まれません。 | 対処不要です。 |
Always
/Process
文のガイドライン2.F.B 条件ステートメントの数の制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.F.B.1 エラー |
| process ブロック ( | process ブロックに個別に記述されている条件付きステートメントが 1 つを超えて存在しないように設計を更新します。 このルールをカスタマイズするには、HDL コーディング標準のカスタマイズ オブジェクトの |
2.F.B.2 エラー |
| HDL Coder は、クロック信号、リセット信号、イネーブル信号など、センシティビティ リスト内の変数を変更しません。 | 対処不要です。 |
2.G.B 共通部分の式の制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.G.B.2 警告 |
| 生成された HDL コードにデッド コードは含まれません。また、実行されない条件が生じることはありません。 | 対処不要です。 |
2.G.C ネストの深さの制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.G.C.1a-b メッセージ |
| MATLAB コードに、入れ子レベルが N を超える | MATLAB コード内で、入れ子レベルが N 以下になるように たとえば、次の if ... if ... if ... else else else このルールをカスタマイズするには、HDL コーディング標準のカスタマイズ オブジェクトの |
2.G.C.1c メッセージ | Verilog/VHDL: if...else if 文のチェーンは既定のレベル数以内にする。 | 生成された HDL コードに 7 個を超えた分岐をもつ | MATLAB コード内の たとえば、次の if ... elseif ... elseif ... else このルールをカスタマイズするには、HDL コーディング標準のカスタマイズ オブジェクトの |
2.G.D begin-end デコレータ制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.G.D.2–3 メッセージ |
| 生成された HDL コードは、これらのコード構造に従います。 | 対処不要です。 |
|
2.H.A case 構造制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.H.A.3–5 リファレンス |
| 生成された HDL コードの case ステートメントは、これらの構造に従っており、full_case 命令は使用されません。 | 対処不要です。 |
2.H.C 既定値制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.H.C.3 警告 |
| HDL Coder は、case ステートメントで、取り得るすべてのケースを記述するため、合成ツールによってラッチが生成されることがありません。 | 対処不要です。 |
2.H.C.4 メッセージ |
| HDL Coder は、don't care 値を代入した信号を default 項で使用しません。 | 対処不要です。 |
2.H.C.5 警告 |
| ラッチの干渉を防ぐため、HDL Coder は、default 項を含む、取り得るすべてのケースを記述します。 | 対処不要です。 |
2.H.C.6–7 メッセージ |
| HDL Coder は、don't care 値を使用せず、n ビット選択信号の全空間を探索します。 | 対処不要です。 |
2.H.D don't care 制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.H.D.1-4 メッセージ |
| HDL Coder は、casex または casez 構造を生成しないため、このルールに準拠しています。 | 対処不要です。 |
2.H.E 追加の case 制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.H.E.1–4 メッセージ |
| HDL Coder は、 | 対処不要です。 |
2.I.A ループ本体の制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.I.A.2a-b メッセージ |
| HDL Coder は、casex 文または casez 文を生成しないため、このルールに準拠しています。 | 対処不要です。 |
2.I.A.2c-e メッセージ |
| HDL Coder は、適正な loop 文を生成するため、このルールに準拠しています。 | 対処不要です。 |
|
2.I.B 非定数演算制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.I.B.4 エラー |
| HDL Coder は、フリップフロップ記述のリセット部、ロジック部とで、別々の for ループを使用します。 | 対処不要です。 |
2.I.C exit 制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.I.C.1 エラー |
| 生成コードに for ループが含まれるのは、HDL Coder が反復回数を認識している場合のみです。ループ実行中に HDL Coder が for ループから抜けることはありません。 | 対処不要です。 |
2.J.A 比較と優先順位制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.A.4a-c メッセージ |
| 既定では、HDL Coder はこれらの構造を含むコードを生成しません。 Simulink モデル設計に、[Architecture] が | [Architecture] が |
2.J.A.4v エラー |
| 既定では、HDL Coder は case ステートメントの others 項で | 生成された HDL コードが [2.J.A.4a-c] のルールが指定する構造を使用しないよう、Simulink モデルの設計を変更してください。 |
2.J.A.5–6 警告 |
| 設計に未知の定数または高インピーダンスな定数が含まれている場合、HDL Coder は警告を表示します。 | 高インピーダンスの定数を含まないよう、Simulink モデルまたは MATLAB アルゴリズムを変更してください。 |
| |||
2.J.A.7–8 メッセージ |
| 既定では、HDL Coder は、このルールに準拠しています。Simulink モデルに Switch ブロックまたは Multiport switch ブロックをもつ RAM 出力信号が使用されている場合、生成された HDL コードにこれらの構造が使用されることがあります。 | Switch ブロックまたは Multiport switch ブロックへの RAM 出力信号がなくなるよう、Simulink モデルを変更してください。 |
2.J.B ベクトル演算子制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.B.3 メッセージ |
| HDL Coder は、ベクトルに対して論理否定を実行しません。 | 対処不要です。 |
2.J.C 関係演算子制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.C.1–6 エラー |
| HDL Coder では、関係式または論理式内のオペランドのデータ型は必ず一致します。 | 対処不要です。 |
|
2.J.D 符号付き信号、データ型制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.D.3–5 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.J.D.6 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.J.D.8 警告 |
| HDL Coder は、ファンクション | 対処不要です。 |
2.J.E 演算子の反復回数の制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.E.5 警告 |
| HDL Coder はこのルールに準拠しています。 | 対処不要です。 |
2.J.F 精度制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.F.5 警告 | Verilog/VHDL: 大規模乗算器は RTL 記述で推定せず、乗算器の中身を論理式で記述する。 | 生成された HDL コードに乗算演算子 ( | 設計内で、シフト演算と加算演算のアルゴリズムで乗算を実装するか、乗算の出力のデータ サイズが 16 以上のビット幅を必要としないようにしてください。 このルールをカスタマイズするには、HDL コーディング標準のカスタマイズ オブジェクトの |
2.J.G 共通部分の式の制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.G.2 警告 | Verilog/VHDL: 共通な演算式は個別に記述する。 | HDL Coder は、共通の演算式を特定し、分離して記述します。 | 対処不要です。 |
2.J.H 除算演算子制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.J.H.1 メッセージ | Verilog/VHDL: 除算、剰余の右辺左辺は演算式、論理式を使用しない。 | HDL Coder は、除算演算子を同次化して別のステートメントにするため、このルールに準拠しています。 | 対処不要です。 |
2.J.H.2–3 メッセージ | Verilog/VHDL: 除算、剰余の左辺は 12 ビット以下にする。除算、剰余の右辺は 8 ビット以下にする (2 の累乗の値は除く)。 | 設計に含まれる除算もしくは剰余演算の左辺が 12 ビットを超えているか、右辺 (2 のべき乗ではない) が 8 ビットを超えています。 | 除算または剰余演算のオペランドのビット数が、ルールで規定された範囲に収まるよう、設計を変更してください。 |
2.K.A 状態遷移制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.K.A.4 警告 | Verilog/VHDL: ステート数は 40 以内とする。 | モデル設計に、ステート数が 40 より多い Stateflow Chart または State Transition Table が含まれています。 | ステート数が 40 以内になるよう、モデルを変更してください。 |
2.K.C ロジック分離制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.K.C.1 リファレンス | Verilog/VHDL: FF 文と状態を定義する case 文に分離させると検証に有利。クロックによる FF 動作は単独の always 文で記述する。状態の定義は if 文と case 文を用いて別の always 文で記述する。 | 既定では、HDL Coder は、有限ステート マシン (FSM) の逐次部分と組み合わせ部分を別々の | 対処不要です。 |
2.K.E エンコード制約
ルール/重要度 | メッセージ | 問題 | 推奨事項 |
---|---|---|---|
2.K.E.2 警告 | VHDL: タイプ宣言で定義された状態変数に対して、attribute によるロジック値の設定は行わない。 | HDL Coder は、生成コード内の状態変数に属性を付加しません。 | 対処不要です。 |