Main Content

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

matlabcp

MATLAB コンポーネント関数をインスタンス化された HDL デザインに関連付ける

説明

メモ

このコマンドは、MATLAB® ではなく HDL シミュレーターに入力します。

matlabcp instance は次のアクションを実行します:

  • HDL Verifier™ ソフトウェアの HDL シミュレータ クライアント コンポーネントを起動します。

  • HDL シミュレータで作成された HDL デザインの指定されたインスタンスを MATLAB 関数に関連付けます。

  • 指定された MATLAB 関数の呼び出しをスケジュールするプロセスを作成します。

  • 同じインスタンスを指定した以前の matlabcp コマンドによってスケジュールされた保留中のイベントをすべてキャンセルします。たとえば、インスタンス foo に対してコマンド matlabcp を発行すると、matlabcpfoomatlabcp によって開始された以前にスケジュールされたすべてのイベントをキャンセルします。

    HDL シミュレーターでこのコマンドを発行します。

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

    メモ

    matlabcp に指定する通信モードは、サーバー接続を確立したときに hdldaemon に指定した通信モードと一致する必要があります。

    ソケット通信の場合、HDL シミュレータで matlabcp コマンドを使用してリンク要求を発行するときに、hdldaemon に選択したポート番号を指定します。

matlabcp instance time-specs は、指定された MATLAB 関数をスケジュールするための時間指定を追加します。

matlabcp instance ___ pair1 ... pairN は、有効な仕様名とその値で構成されるペアとして 1 つ以上の追加仕様を指定します。たとえば、-mfunc vlogmatlabc は、MATLAB 関数 vlogmatlabc が指定された HDL モジュールに関連付けられることを指定します。これらのペアは、time-specs の有無にかかわらず指定できます。

すべて折りたたむ

-mfunc オプションを使用して、Verilog® モジュール vlogtestbench_top.u_matlab_component を MATLAB 関数 vlogmatlabc に関連付けます。-socket オプションは、ポート 4449 でソケット通信を使用することを指定します。

hdlsim>matlabcp vlogtestbench_top.u_matlab_component -mfunc vlogmatlabc -socket 4449

Verilog モジュール vlogtestbench_top を MATLAB 関数 vlogtestbench_top に関連付け、-cancel オプションで明示的な時間を指定します。

hdlsim>matlabcp vlogtestbench_top 1e6 fs  3 2e3 ps -repeat 3 ns -cancel 7ns

Verilog モジュール vlogtestbench_top を MATLAB 関数 vlogtestbench_top に関連付け、立ち上がりエッジと立ち下がりエッジを指定します。

hldsim> matlabcp vlogtestbench_top  1 2 3 4 5 6 7 -rising outclk3 
          -falling u_matlab_component/inoutclk

入力引数

すべて折りたたむ

MATLAB 関数に関連付けられた HDL モジュールのインスタンス。HDL モジュール インスタンスを示す文字ベクトルまたは文字列スカラーとして指定されます。デフォルトでは、matlabcp コマンドはインスタンスを、インスタンスと同じ名前を持つ MATLAB 関数に関連付けます。たとえば、インスタンスが myfirfilter の場合、matlabcp はインスタンスを MATLAB 関数 myfirfilter に関連付けます。コマンドは階層名を無視します。たとえば、インスタンスが top.myfirfilter の場合、matlabcp コマンドは myfirfilter のみを MATLAB 関数に関連付けます。指定されたインスタンスをインスタンス名とは異なる MATLAB 関数に関連付けるには、pair1 ... pairN 引数のように -mfunc 指定を使用します。

メモ

MATLAB 関数にすでに関連付けられている HDL モジュールのインスタンスを指定すると (matlabcp または matlabtb 経由)、新しい関連付けによって既存の関連付けが上書きされます。

データ型: char | string

スペースで区切られた 1 つ以上の時間指定のリスト。この表にリストされている 1 つ以上の時間指定のスペースで区切られたリストとして指定されます。

時間指定説明
time_1 time_2 ... time_n

HDL シミュレータが指定された MATLAB 関数を呼び出す 1 つ以上の離散時間を指定します。指定された時間は、現在のシミュレーション時間を基準とします。時間を指定しない場合、HDL シミュレータはシミュレーションの開始時に MATLAB 関数を 1 回呼び出します。各 time_i は、時間の値を示す数値と、オプションで次の時間単位で構成されます。

  • fs(フェムト秒)

  • ps(ピコ秒)

  • ns(ナノ秒)

  • us (マイクロ秒)

  • ms (ミリ秒)

  • 秒(秒)

時間単位を指定しない場合、コマンドは時間値を HDL シミュレーション ティックの値として扱います。各time_iをスペースで区切ります。

たとえば、このコードでは、MATLAB 関数 vlogmodel_top が時刻 0 (初期実行) に実行され、その後 10 ナノ秒、10 ミリ秒、10 秒に実行されるように指定します。

matlabcp vlogmodel_top 10 ns, 10 ms, 10 sec
-repeat <time>HDL シミュレータが指定された回数に基づいて MATLAB 関数を繰り返し呼び出すように指定します。時間値は、HDL シミュレータが最初に MATLAB 関数を呼び出したときの tnow の値を基準とします。
-cancel <time>

指定された MATLAB 関数の実行を停止する単一の時刻を指定します。時間値は、HDL シミュレータが最初に MATLAB 関数を呼び出したときの tnow の値に相対します。キャンセル時間を指定しない場合、シミュレーションが終了するか、セッションを終了するか、nomatlabtb 呼び出しを発行するまで、アプリケーションは MATLAB 関数を呼び出します。

メモ

-cancel オプションは、<time-specs> 引数でのみ機能します。これは、matlabcp の他のスケジュール引数には影響しません。

メモ

時間指定は、matlabcp インスタンスの後、追加のコマンド引数の前に配置します。そうしないと、時間指定は無視されます。

追加の仕様。1 つ以上の仕様ペアのスペース区切りリストとして指定されます。仕様ペアは名前と値で構成されます。この表には、これらのペアの有効な名前と値のオプションが表示されます。

仕様ペア

名前説明
-sockethdldaemonコマンドで発行された通信モードと一致する通信モード

HDL Verifier が TCP/IP ソケットを使用して HDL シミュレータと MATLAB 間で通信するように指定します。共有メモリは通信のデフォルト モードであり、-socket <tcp_spec> を指定しない場合に有効になります。matlabcp コマンドで指定する通信モードは、hdldaemon コマンドで指定した通信モードと一致する必要があります。

TCP/IP ソケット ポートの選択の詳細については、TCP/IP ソケット ポート を参照してください。

-rising1 つ以上のシグナル名のコンマ区切りリスト

-rising には、ロジック タイプとして定義された 1 つ以上の信号のパス名 (STD_LOGICBITX01 など) を指定します。このペアは、アプリケーションが指定された信号のいずれかの立ち上がりエッジ ('0' から '1' への遷移) で指定された MATLAB 関数を呼び出すことを示します。

  • VHDL® では、0 または L から 1 または H への遷移によって立ち上がりエッジが決まります。

  • Verilog では、0 から x、z、または 1 への遷移、または x または z から 1 への遷移によって立ち上がりエッジが決定されます。

メモ

-rising ペアで信号を指定する場合は、信号をフルパス名形式で指定します。完全なパス名を指定しない場合、コマンドは HDL シミュレータのルールを適用して信号仕様を解決します。

-falling1 つ以上のシグナル名のコンマ区切りリスト

ロジック タイプとして定義された 1 つ以上の信号のパス名を指定します (STD_LOGICBITX01 など)。指定された信号のいずれかが立ち下がりエッジ ('1' から '0' への遷移) を経験するたびに、アプリケーションが指定された MATLAB 関数を呼び出すことを示します。

以下の信号遷移を決定する場合:

  • VHDL では、1 または H から 0 または L への遷移によって立ち下がりエッジが決まります。

  • Verilog では、1 から x、z、または 0 への遷移、または x または z から 0 への遷移によって立ち下がりエッジが決定されます。

メモ

-falling ペアで信号を指定する場合は、信号をフルパス名形式で指定します。完全なパス名を指定しない場合、コマンドは HDL シミュレータのルールを適用して信号仕様を解決します。

-sensitivity1 つ以上のシグナル名のコンマ区切りリスト

1 つ以上の信号のパス名を指定します。このペアは、指定された信号のいずれかの状態が変化するたびに、アプリケーションが指定された MATLAB 関数を呼び出すことを示します。あらゆるタイプの信号が感度リストに表示され、HDL モデル階層の任意のレベルに配置できます。

メモ

-sensitivity ペアで信号を指定する場合は、信号をフルパス名形式で指定します。完全なパス名を指定しない場合、コマンドは HDL シミュレータのルールを適用して信号仕様を解決します。

-mfuncMATLAB 関数名

instance に指定した HDL モジュール インスタンスに関連付けられている MATLAB 関数の名前を指定します。デフォルトでは、HDL Verifier ソフトウェアは、指定された HDL インスタンスと同じ名前を持つ MATLAB 関数を呼び出します。名前が同じ場合は、-mfunc ペアを省略できます。名前が同じでない場合は、matlabcp を呼び出すときにこの引数を使用します。この引数を省略し、matlabcp が同じ名前の MATLAB 関数を見つけられない場合、コマンドはエラー メッセージを生成します。

-use_instance_obj-use_instance_obj フィールドの表に記載されているフィールドを持つ構造

このペアは、引数 -mfunc で指定された関数に、HDL Verifier によって関数に渡された HDL インスタンス オブジェクトを使用するように指示します。この値には、該当する表に示すフィールドがあります。例についてはHDLインスタンスオブジェクトを使用した関数の記述を参照してください。

-argumentHDLインスタンス引数

HDL 側の matlabcp コマンドから MATLAB 関数コールバックにユーザー定義の引数を渡します。このペアは -use_instance_obj でのみサポートされます。詳細については、表 -use_instance_obj フィールド のフィールドを参照してください。

-use_instance_obj フィールド

フィールド読み取りまたは書き込みアクセス説明
tnext書き込み専用

設定された時間内にコールバックをスケジュールします。このフィールドは古い tnext と同等です。たとえば、このコードは tnow から 5 ナノ秒後にコールバックをスケジュールします。

hdl_instance_obj.tnext = hdl_instance_obj.tnow + 5e-9
userdata読むか書くか現在の matlabcp インスタンスの状態変数を保存します。このインスタンスのコールバックが次にスケジュールされたときに、変数を取得できます。
simstatus読み取り専用

HDL シミュレータのステータスを保存します。HDL Verifier ソフトウェアは、この特定のインスタンスの最初のコールバック中にこのフィールドを Init に設定し、その後は Running に設定します。simstatus は読み取り専用フィールドです。

>> hdl_instance_obj.simstatus

ans=
      Init
instance読み取り専用

コールバックに関連付けられた Verilog または VHDL インスタンスの完全なパスを保存します。instance は読み取り専用フィールドです。このフィールドの値は、関数呼び出しで指定されたモジュール インスタンスの値と同じです。次に例を示します。

HDL シミュレータの場合:

hdlsim> matlabcp osc_top -mfunc oscfilter use_instance_obj

MATLAB で、以下を実行します。

>> hdl_instance_obj.instance

ans=
		osc_top
argument読み取り専用

-argument ペアによって設定された引数を保存します。次に例を示します。

matlabtb osc_top -mfunc oscfilter -use_instance_obj -argument foo
リンク ソフトウェアは、-use_instance_obj ペアで使用される場合にのみ、-argument オプションをサポートします。それ以外の場合、コマンドは引数を無視します。argument は読み取り専用プロパティです。

>> hdl_instance_obj.argument

ans= 
    	foo
portinfo読み取り専用

このインスタンスに関連付けられている VHDL ポートと Verilog ポートに関する情報を格納します。portinfo は読み取り専用プロパティであり、関連付けられている HDL モジュールに定義されているポートを記述するフィールド構造を持ちます。各ポートについて、portinfo 構造体はポートのタイプ、方向、サイズなどの情報を渡します。ポート データの詳細については、ポート情報へのアクセスと適用 を参照してください。

hdl_instance_obj.portinfo.field1.field2.field3

メモ

use_instance_obj を使用する場合は、HDL インスタンス オブジェクトを介して tscale にアクセスします。use_instance_obj を使用しない場合でも、portinfo を介して tscale にアクセスできます。

tscale読み取り専用

HDL シミュレータの解像度制限 (ティック) を秒単位で保存します。tscale は読み取り専用プロパティです。

>> hdl_instance_obj.tscale

ans=
	1.0000e-009

メモ

use_instance_obj を使用する場合は、HDL インスタンス オブジェクトを介して tscale にアクセスします。use_instance_obj を使用しない場合でも、portinfo を介して tscale にアクセスできます。

tnow読み取り専用

現在の時刻を保存します。tnow は読み取り専用プロパティです。

hdl_instance_obj.tnext = hld_instance_obj.tnow + fastestrate;
portvalues読むか書くか

matlabcp インスタンスの出力ポートと入力ポートの現在の値を保存し、新しい値を設定します。次に例を示します。

>> hdl_instance_obj.portvalues

ans =
Read Only Input ports:
	clk_enable: []
	clk: []
	reset: []
Read/Write Output ports:
	sine_out: [22x1 char]
linkmode読み取り専用

コールバックのステータスを保存します。HDL Verifier は、コールバックが matlabtb コマンドに関連付けられている場合はこのフィールドを 'testbench' に設定し、コールバックが matlabcp コマンドに関連付けられている場合は 'component' に設定します。linkmode は読み取り専用プロパティです。

>> hdl_instance_obj.linkmode

ans=
	component

バージョン履歴

R2008a で導入