Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

MATLABコンポーネント関数を作成する

HDL Verifier™ソフトウェアは、MATLAB®環境内で HDL コンポーネントを視覚化する手段を提供します。これを行うには、HDL モデルと、HDL モデルとデータを共有できるMATLAB関数をコーディングします。この章では、HDL シミュレータと通信するMATLABコンポーネント関数のプログラミング、インターフェイス、およびスケジューリング規則について説明します。

メモ

このワークフローは、Vivado®コシミュレーションではサポートされていません。

MATLABコンポーネント関数は、HDL モデル内のコンポーネントの動作をシミュレートします。HDL モデルのスタブ モジュール (ポート定義のみを提供) は、その入力信号をMATLABコンポーネント関数に渡します。MATLABコンポーネントはこのデータを処理し、結果をスタブ モジュールの出力に返します。MATLABコンポーネントは通常、HDL コードにまだ実装されていないいくつかの機能 (フィルターなど) を提供します。

次の図は、HDL シミュレーターがMATLABコンポーネント関数をラップする方法と、コンポーネント シミュレーション セッション中にMATLAB がHDL シミュレーターと通信する方法を示しています。

MATLABとリンクすると、HDL シミュレーターはクライアントとして機能し、 MATLABはサーバーとして機能します。次の図は、TCP/IP ソケット ポート 4449 でサーバーに接続する複数クライアントのシナリオを示しています。

MATLABサーバーは、複数の HDL シミュレーター セッションと HDL モジュールを同時に処理できます。ただし、サーバーが各モジュールおよびセッションに関連付けられた I/O を追跡できるようにするために、推奨ガイドラインに従う必要があります。提供された関数MATLAB hdldaemon サーバーは、同じまたは異なるコンピューター上で実行されている HDL シミュレーターのインスタンスからの接続要求を待ちます。サーバーは要求を受信すると、HDL デザイン内のモジュールに代わってタスクを実行するためにコーディングした、指定されたMATLAB関数を実行します。サーバーの起動時に指定するパラメーターは、サーバーが共有メモリまたは TCP/IP ソケット通信リンクを確立するかどうかを示します。

有効なマシン構成については、協調シミュレーション構成を参照してください。

メモ

テストベンチ機能とコンポーネント機能のプログラミング、インターフェイス、およびスケジューリングの規則は、実質的に同じです。ほとんどの場合、同じ手順が両方のタイプの関数に適用されます。

次のワークフロー手順に従って、HDL シミュレータとのコシミュレーション用のMATLABコンポーネント関数を作成します。

  1. HDLモジュールを作成します。HDL シミュレーターでモデルをコンパイル、精緻化、シミュレーションします。MATLABビジュアライゼーション用の HDL モジュールの作成を参照してください。

  2. コンポーネントMATLAB関数を作成します。コンポーネント関数を作成するを参照してください。

  3. MATLAB-HDL シミュレータ接続のセットアップ.

  4. コンポーネント関数をMATLAB検索パスに配置します。コンポーネント関数をMATLAB検索パスに配置を参照してください。

  5. matlabcpを使用して HDL インスタンスをコンポーネント関数にバインドします。matlabcp を使用したバインド コンポーネント関数呼び出しを参照してください。

  6. スケジュールオプションを追加します。コンポーネントセッションのスケジュールオプションを参照してください。

  7. 対話型 HDL デバッグ用のブレークポイントを設定します (オプション)。

  8. HDL シミュレーターから協調シミュレーションを実行します。MATLAB-HDL コシミュレーションを実行します。を参照してください。

MATLABビジュアライゼーション用の HDL モジュールの作成

MATLABを使用した視覚化のための HDL モジュールのコーディング

HDL Verifierインターフェイスにおける通信の最も基本的な要素は、HDL モジュールです。このインターフェイスは、HDL シミュレーターとMATLABの間ですべてのデータをポート データとして渡します。HDL Verifierソフトウェアは、既存の HDL モジュールで動作します。ただし、 MATLAB検証の対象となる HDL モジュールをコーディングする場合は、その名前、2 つの環境間で共有されるデータの種類、および方向モードを考慮する必要があります。この章内のセクションでは、これらのトピックについて説明します。

MATLAB視覚化用の HDL モジュールをコーディングするプロセスは次のとおりです。

MATLABコンポーネント関数で使用する HDL モジュール名を選択してください

必須ではありませんが、HDL モジュールに名前を付けるときは、 MATLAB関数名としても使用できる名前を選択することを検討してください。(通常、 VHDL®またはVerilog®とMATLABの命名規則には互換性があります。)デフォルトでは、 HDL Verifierソフトウェアは、HDL モジュールとそのシミュレーション関数が同じ名前を共有していると想定します。テストベンチ関数呼び出しをmatlabtbでバインドするを参照してください。

MATLAB関数の命名ガイドラインの詳細については、 MATLABドキュメントのファイルとファイル名に関する「 MATLABプログラミングのヒント」を参照してください。

コンポーネント関数で使用するために HDL モジュールでポート方向モードを指定する

module ステートメントでは、各ポートを方向モード (入力、出力、または双方向) で指定する必要があります。次の表では、これら 3 つのモードを定義します。

VHDLモードを使用...Verilogモードを使用...ポートの場合...
INinputMATLAB関数またはSimulink®テストベンチによって駆動できる信号を表します
OUToutputMATLAB関数またはSimulinkテストベンチに渡される信号値を表します。
INOUTinoutMATLAB関数またはSimulinkテスト ベンチによって駆動したり、値を渡したりできる双方向信号を表します。

コンポーネント関数で使用するための HDL モジュールでのポート データ型の指定

VHDLエンティティのポート データ タイプ.  エンティティ ステートメントでは、 MATLABでテストする予定の各ポートを、 でサポートされるTG VHDLデータ型で定義する必要があります。 $$ソフトウェア。このインターフェイスは、次のVHDL型のスカラー データと配列データを、同等のMATLAB型に変換できます。

  • STD_LOGICSTD_ULOGICBITSTD_LOGIC_VECTORSTD_ULOGIC_VECTOR、そしてBIT_VECTOR

  • INTEGER および NATURAL

  • REAL

  • TIME

  • 列挙型 (ユーザー定義の列挙型とCHARACTERを含む)

このインターフェイスは、すべてのサブタイプと前述のタイプの配列もサポートします。

メモ

HDL Verifierソフトウェアは、次のコンポーネントのVHDL拡張識別子をサポートしていません。

  • コシミュレーションで使用されるポートと信号名

  • コシミュレーションで使用されるポートおよび信号名の配列インデックスとして使用される場合の列挙リテラル

ただし、ソフトウェアはVHDLの基本識別子をサポートします。

Verilogモジュールのポート データ タイプ.  モジュール定義では、 MATLABでテストする予定の各ポートを、$ でサポートされるTG Verilogポート データ型で定義する必要があります。 $HDL Verifierソフトウェア。このインターフェイスは、次のVerilogポート タイプのデータを、同等のMATLABタイプに変換できます。

  • 登録

  • 整数

  • ワイヤー

メモ

HDL Verifierソフトウェアは、コシミュレーションで使用されるポート名と信号名のVerilogエスケープ識別子をサポートしていません。ただし、 Verilogの単純な識別子はサポートされます。

コンポーネント関数で使用するための HDL デザインのコンパイルと詳細化

HDL ソース ファイルを作成または編集した後、HDL シミュレーター コンパイラーを使用してコードをコンパイルおよびデバッグします。

 ModelSimの編集

 Xceliumの編集

その他の例については、 HDL Verifierのチュートリアルとデモを参照してください。HDL コンパイラの使用方法の詳細については、シミュレータのドキュメントを参照してください。

コンポーネント関数を作成する

HDL Verifierコンポーネント関数のコーディングの概要

HDL モジュールまたはコンポーネントを視覚化するMATLAB関数をコーディングするには、特定のコーディング規則に従う必要があります。また、発生するデータ型変換について理解し、データを操作して HDL シミュレーターにデータを返すためのデータ型変換をプログラムする必要もあります。

HDL モジュールまたはコンポーネントを検証するMATLAB関数をコーディングするには、次の手順を実行します。

  1. MATLAB HDL Verifierコンポーネント関数の構文を学習します。コンポーネント関数の構文を参照してください。

  2. HDL VerifierソフトウェアがMATLAB環境で使用するために HDL シミュレーターからのデータをどのように変換するかを理解します。サポートされているデータ型を参照してください。

  3. MATLABコンポーネント関数の名前を選択します。MATLABコンポーネント関数コマンドmatlabcpを呼び出しますを参照してください。

  4. コンポーネント関数定義行で予期されるパラメーターを定義します。MATLAB関数の構文と関数の引数の定義を参照してください。

  5. 関数に渡されるポート データのタイプを決定します。MATLAB関数の構文と関数の引数の定義を参照してください。

  6. portinfo構造体で受け取った情報を抽出し、シミュレーションに適用できる場合は適用します。ポート情報へのアクセスと適用を参照してください。

  7. 必要に応じて、 MATLAB環境での操作のためにデータを変換します。MATLABまたはSimulinkに送信するための HDL データの変換を参照してください。

  8. HDL シミュレーターに返す必要があるデータを変換します。HDL シミュレータに返すためのデータの変換を参照してください。

その他のヒントについては、 「 テストベンチとコンポーネント関数の作成 」を参照してください。

コンポーネント関数の構文

MATLABコンポーネント関数の構文は次のとおりです。

function [iport, tnext] = MyFunctionName(oport, tnow, portinfo)

iportコンポーネント関数の入出力引数 oport およびMATLAB は、 のポート引数の逆です。 $MATLABテストベンチ機能。つまり、 MATLABコンポーネント関数は、関連する HDL モジュールの 出力 に信号データを返し、入力 からデータを受け取ります。

次の例のように、関数の先頭で関数出力を空の値に初期化します。

tnext = [];
oport = struct();

各関数の引数の説明については、MATLAB関数の構文と関数の引数の定義を参照してください。tnextでのシミュレーション スケジュールに tnext および matlabcp tnowを使用する方法の詳細については、 tnextパラメーターを使用したコンポーネント関数のスケジュールを参照してください。

関連するトピック