Main Content

SimulinkStateflow、および MATLAB Function のブロックを使用したモデル化

このガイドラインは、Simulink® ライブラリ ブラウザーでさまざまなブロックを含む設計をモデル化する際の一般的な方法を示したものです。

各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

ガイドライン ID

1.1.8

重大度

情報

説明

HDL コード生成用の Simulink モデルを作成する場合、アプリケーションに基づいて Simulink ブロック、MATLAB Function ブロック、Stateflow® ブロックを使用します。次の図は DUT 内でさまざまなブロックを使用する例を示しています。

Simulink ブロック

Simulink ブロックを使用して、数値処理を実行する演算アルゴリズムをモデル化するか、フィードバック ループを含めます。

MATLAB Function ブロック

MATLAB Function ブロックを使用して、制御ロジック、if-else ステートメントなどの条件分岐、および単純なステート マシンをモデル化します。MATLAB Function ブロックを使用して、MATLAB® コードで記述される IP をモデル化することもできます。

Stateflow ブロック

これらの Stateflow ブロックを使用して、アルゴリズムをモデル化します。

  • State Transition Table (Stateflow):これらのブロックを使用して、過去と現在の知識を利用して出力を制御するステート マシンをモデル化します。

  • Chart (Stateflow):これらのブロックを使用して、条件付き if-else 分岐を使用するフロー チャートと、過去と現在の知識を利用して出力を制御するステート マシンをモデル化します。

  • Truth Table (Stateflow):これらのブロックを使用して条件付き if-else 分岐をモデル化します。

Stateflow ブロックを使用して組み合わせ論理をモデル化できます。複素数演算およびパイプライン挿入と処理などのタイミングを変更する演算の場合は、Simulink ブロックを使用します。その後、Stateflow ロジックを使用して Simulink ブロックから計算された結果を処理できます。

モデル参照

複雑な計算が含まれる非常に大きなアルゴリズムの場合、設計を階層化された小規模な設計に分割できます。この分割は、再利用、モジュラー開発、およびシミュレーションの高速化に使用します。最上位モデル内に Model ブロックとして含めることで、モデルを再利用できます。このブロックを再利用するモデルは最上位モデルと呼ばれ、最上位モデルに再利用または含められるブロックは参照モデルと呼ばれます。

メモ

モデルの最上位レベルにない Subsystem の HDL コードを生成する場合、HDL Coder™ は Subsystem をモデル参照に変換します。

参照モデルは Atomic Subsystem と同等に扱われます。場合によっては、代数ループが発生する可能性があり、HDL コード生成が妨げられる場合があります。コードを生成するには、設計から代数ループを削除するか、[コンフィギュレーション パラメーター] ダイアログ ボックスで [代数ループの発生の最小化] 設定を指定します。

BlackBox サブシステム

設計でサブシステムのシミュレーションを行い、作成した HDL コードを含める場合は、BlackBox サブシステムを使用します。[BlackBox] サブシステムを作成するには、Subsystem の HDL アーキテクチャまたはモデル参照を BlackBox に設定します。このアーキテクチャを使用して手書きの HDL コードを Simulink モデルに組み込むことができます。詳細については、Verify the Combination of Hand-Written and Generated HDL Code (HDL Verifier)を参照してください。

作成した HDL コードを使用して Simulink モデルを生成する場合は、HDL インポートを使用します。詳細については、Verilog コードのインポートと Simulink モデルの生成を参照してください。

HDL Cosimulation ブロック

Mentor Graphics® ModelSim® や Cadence Incisive® などの HDL シミュレーターがある場合は、HDL Cosimulation (HDL Verifier) ブロックを使用して DUT の HDL コードをシミュレートし、その HDL コードを生成コードでインスタンス化できます。

参考

モデリング ガイドライン

関連するトピック