メインコンテンツ

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

TLMジェネレータを使い始める

この例では、Simulink Coder ™ または Embedded Coder® のいずれかの tlmgenerator ターゲットを使用して SystemC™/TLM コンポーネントを生成するように Simulink® モデルを構成する方法を示します。

この例では、SystemC/TLM 生成の基礎として FIR フィルターの Simulink モデルを使用します。

この例を実行するための要件:

  • SystemC 2.3.1 (TLM ライブラリを含む)

  • コード検証のために、Linux® では make と互換性のある GNU コンパイラ gcc をパスに、Windows® では Visual Studio® コンパイラをパスにインストールします。

メモ: 例には、コード生成ビルド手順が含まれています。Simulink では、MATLAB® インストール領域にプログラムをビルドすることはできません。必要に応じて、ビルドを開始する前に、MATLAB インストール領域以外の作業ディレクトリに変更します。

1. 事前設定モデルを開く

FIR フィルター モデル を開くには、[モデルを開く] ボタンをクリックします。

2. Simulink Coder ターゲットを TLM ジェネレーターに設定する

a.モデル ウィンドウで [シミュレーション] > [モデル構成パラメータ] を選択して、[構成パラメータ] ダイアログ ボックスを開きます。

b.構成パラメーター ダイアログ ボックスで、左側のペインから コード生成 ビューを選択します。

c. システム ターゲット ファイル の下で、[参照] をクリックして TLM ジェネレーター ターゲットを選択します。HDL コード生成に Simulink Coder を使用するには tlmgenerator_grt.tlc を選択し、Embedded Coder を使用するには tlmgenerator_ert.tlc を選択できます。この例では、tlmgenerator_grt.tlc を選択します。

3. TLMジェネレータービューを開く

構成パラメータ ダイアログ ボックスで、左側のペインから TLM ジェネレーター ビューを選択します。

TLM ジェネレーター ビューには 5 つのタブがあります。

  • TLM マッピング

  • TLM処理

  • TLMタイミング

  • TLM テストベンチ

  • TLMコンパイル

各ペインで異なるジェネレーター オプションを設定する必要があります。

4. TLMマッピングオプションを選択

TLM マッピング タブの ソケット マッピング では、入力データ、出力データ、および制御用のソケットの数を選択できます。オプション 入力データ、出力データ、および制御用の 3 つの個別の TLM ソケット を選択します。

TLM ソケット オプションを使用すると、生成された TLM コンポーネントに対して 3 つの異なるメモリ マップを定義できます。

この例では、入力データ ソケットと出力データ ソケットに以下を選択します。

  • 入力および出力データソケットの自動生成されたメモリマップ

  • 各データ ソケットの 個別の入力および出力アドレス オフセット。このオプションは、モデル出力ごとに 1 つの読み取りレジスタと、個別のアドレスを持つモデル入力ごとに 1 つの書き込みレジスタを持つ TLM コンポーネントを生成します。各 Simulink モデル入力は対応する書き込みレジスタにバインドされ、各出力は対応する読み取りレジスタにバインドされます。

検討できるその他のメモリ マップ オプションは次のとおりです。

  • メモリマップなし:このオプションは、アドレスのない読み取りレジスタ 1 つと書き込みレジスタ 1 つだけを持つ TLM コンポーネントを生成します。Simulink モデルの入力は書き込みレジスタにバインドされ、出力は読み取りレジスタにバインドされます。

  • [自動生成されたメモリマップ] 単一の入力および出力アドレスオフセット:このオプションは、それぞれ 1 つのアドレスを持つ 1 つの読み取りレジスタと 1 つの書き込みレジスタのみを持つ TLM コンポーネントを生成します。Simulink モデルの入力は書き込みレジスタにバインドされ、出力は読み取りレジスタにバインドされます。

メモリ マップを使用してコンポーネントを生成する場合、コマンドおよびステータス レジスタ、テストおよび設定レジスタ、および調整可能なパラメーター レジスタを追加できます。

この例では、コントロール TLM ソケットに以下を選択します。

  • メモリ マップにコマンドとステータス レジスタを含めます。コマンドおよびステータス レジスタを使用すると、SystemC シミュレーション中にコマンドを書き込んだり、ステータスを読み取ったりできます (手動バッファリングやバッファ ステータスなど)。

  • 調整可能なパラメータ レジスタをメモリ マップに含めます。調整可能なパラメータ レジスタを使用すると、調整可能なパラメータ値を読み取ったり書き込んだりできます。

この例では使用されていませんが、SystemC シミュレーション中に複数のイニシエーターがコンポーネントにアクセスする場合、テストおよびセット レジスタをミューテックスとして使用できます。

5. TLM処理オプションを選択

TLM 生成 ペインで、TLM 処理 タブを選択します。アルゴリズム処理およびインターフェイス処理オプションを使用すると、生成された TLM コンポーネントに対してさまざまなバッファリングおよび処理動作を定義できます。

アルゴリズム実行オプションは次のとおりです。

  • SystemC スレッド:ステップ関数アルゴリズムは、独自の独立した SystemC スレッドで実行されます。

  • コールバック関数:ステップ関数アルゴリズムは、インターフェースから呼び出されるコールバック関数で実行されます。

  • 定期的な SystemC スレッド:ステップ関数アルゴリズムは、独自の時間周期の独立した SystemC スレッドで実行されます。

ステップ関数のタイミングは、アルゴリズム ステップ関数のタイミング (ns) フィールドの値によって決まります。アルゴリズムのタイミングはスレッド内の wait() でカウントされます。

この例では、SystemC スレッド を選択し、アルゴリズム ステップ関数のタイミング のフィールドに 100 と入力します。

インターフェース処理オプション:

  • 生成された TLM コンポーネントに割り込み要求ポートを作成します:このオプションは、入力セットが処理されるたびにトリガーされる割り込みポート (タイプは signal、bool) を作成します。

この例では、次の選択肢を選択または入力します。

  • 生成された TLM コンポーネントに割り込み要求ポートを作成するを選択します。

6. TLMタイミングオプションを選択する

TLM タイミング タブを選択します。インターフェース タイミング セクションでは、コンポーネントの入力/出力インターフェースと処理スレッドのタイミングを定義できます。

この例では、入力遅延と出力遅延はインターフェースの wait() を使用してカウントされます。入力データ インターフェイス タイミング出力データ インターフェイス タイミング、および 制御インターフェイス タイミング の各トランザクションに 5ns の時間値を設定します。

7. TLMテストベンチビューを選択

TLM テストベンチ タブを選択します。TLM ジェネレータ ターゲットは、TLM コンポーネントと一緒にスタンドアロンの SystemC/TLM テスト ベンチを生成し、TLM イニシエーター/ターゲット ペアのコンテキストで生成されたアルゴリズムを検証できます。TLM テストベンチ ビューには、テストベンチ コードが生成および実行される際の実行時オプションが提供されます。

TLM テストベンチ オプションを使用すると、次のことが可能になります。

  • SystemC/TLM 実行中にコマンド ウィンドウにエコーされる TLM トランザクションおよび同期メッセージなどの詳細なメッセージを表示することを選択します。

  • テストベンチをタイミング注釈付きで実行するか、またはなしで実行するかを指定します。

  • イニシエーターがレジスタとバッファ間の入力データセットと出力データセットの移動を制御するか、コンポーネントが自動的に移動を実行するかを示します。

この例では、テストベンチの生成ランタイム タイミング モードタイミング付き入力バッファー トリガー モード出力バッファー トリガー モードの両方に 自動 を選択します。

コンポーネントとテストベンチのコード生成が正常に行われた後、TLM コンポーネントの検証 ボタンが有効になります。TLM コンポーネントの検証 は、次の処理を実行します。

  • make と生成された makefile を使用して、生成されたコードをビルドします。

  • Simulink を実行して、入力刺激と予想される結果をキャプチャします。

  • Simulink データを TLM ベクトルに変換します。

  • スタンドアロンの SystemC/TLM テストベンチ実行可能ファイルを実行します。

  • TLM 結果を Simulink データに変換します。

  • データの比較を実行します。

  • データが誤って比較された信号に対して、図ウィンドウを生成します。

生成されたファイルのコンパイルでは、Linux® のパスに make と互換性のある GNU コンパイラ gcc が存在するか、Windows® のパスに Visual Studio® コンパイラが存在することが前提となります。

8.TLMコンパイルビューを選択

TLM コンパイル タブを選択します。このペインには、生成されたコードをコンパイルするために使用される makefile の生成を制御するためのオプションがあります。

コンパイラオプション:

SystemC および TLM インクルード ライブラリ パス オプションを使用すると、makefile が SystemC および TLM インストールを見つけることができる場所を指定できます。デフォルト値を使用すると、環境変数を使用できるため、SystemC または TLM インストールの更新で Simulink モデルを更新する必要がなくなります。MATLAB を呼び出す前に環境を設定することも、MATLAB setenv コマンドを使用することもできます。

この例では、/tools にある標準の OSCI インストールでテストされた環境変数値は次のとおりです。

  • SYSTEMC_INC_PATH=/tools/systemc-2.3.0/include

  • SYSTEMC_LIB_PATH=/tools/systemc-2.3.0/lib-linux64

  • SYSTEMC_LIB_NAME=libsystemc.a (Linux) または systemc.lib (Windows)

  • TLM_INC_PATH=/tools/systemc-2.3.0/include

ツールチェーン:

Windows では、このオプションを使用すると、同じマシンに複数のバージョンの Microsoft Visual Studio がインストールされている場合にコンパイラ ツールチェーンを選択できます。Linux ではこのオプションは gcc で固定されています。

コンポーネントの命名:

このオプションを使用すると、生成されたコンポーネントの名前に独自のタグを追加できます。生成されたコンポーネント名は、次のケースに従って構築されます。

  • ユーザータグが指定されている場合: modelname_usertag_tlm

  • ユーザータグフィールドが空の場合: modelname_tlm

この例では、ユーザー タグに intro と入力します。

9. レポートの選択

左側のペインで レポート を選択します。この例では、コード生成レポートを作成するレポートを自動的に開くを選択します。これらのオプションは、コンポーネント生成中に HTML レポートを生成します。コード生成レポートには、生成された各ファイルの内容が詳細に表示されます。

10. TLMジェネレーターのオプションを保存

OK をクリックしてこれらの設定を適用し、構成パラメータ ダイアログ ボックスを終了します。

11. モデルのビルド

モデル ウィンドウで、DualFilter ブロックを右クリックし、コンテキスト メニューで C/C++ コード > このサブシステムのコード生成 を選択して、TLM コンポーネントの生成を開始します。

あるいは、MATLAB コマンド ウィンドウで次のコマンドを実行することもできます。

>> slbuild('tlmgdemo_intro/DualFilter');

実行中に、調整可能なパラメータを選択するように求められます。各係数のドロップダウン リストでは、変数のストレージ クラスを選択できます。ストレージ クラスのオプションは次のとおりです。

  • インライン - インライン パラメータは調整できません。

  • SimulinkGlobal - SimulinkGlobal 変数は調整可能です。

ExportedGlobalImportedExtern、および ImportedExternPointer は、TLM 生成モデルではサポートされていません。

この例では、オプション Simulink Global が選択されています。ビルドをクリックします。MATLAB コマンド ウィンドウに次のメッセージが表示されたら、TLM 生成は完了です。

### Starting Simulink Coder build procedure for model: DualFilter
### Successful completion of Simulink Coder build procedure for model: DualFilter

Build Summary

Top model targets built:

Model       Action           Rebuild Reason                                    
===============================================================================
DualFilter  Code generated.  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 24.106s

12.生成されたファイルを開く

生成されたレポート内のリンクをクリックするか、MATLAB エディターで生成されたファイルを MATLAB Web ブラウザーで開きます (生成されたファイルとレポートは現在の作業ディレクトリにあります)。

13.生成されたコードを検証する

a.モデル ウィンドウで [シミュレーション] > [構成パラメータ] を選択して、[モデル構成パラメータ] ダイアログ ボックスを開きます。

b.[構成パラメータ] ダイアログ ボックスで、[TLM ジェネレータ] ビューを選択し、[TLM テストベンチ] タブを選択します。

c. TLM テストベンチ ペインで、TLM コンポーネントの検証 をクリックして、生成されたテストベンチを実行します。

あるいは、MATLAB コマンド ウィンドウで次のコマンドを実行することもできます。

  verifyTlmgDemoModel('intro')

この検証手順では、次のアクションが実行されます。

  • 生成されたコードをビルドします。

  • Simulink を実行して、入力刺激と予想される結果をキャプチャします。

  • Simulink データを TLM ベクトルに変換します。

  • スタンドアロンの SystemC/TLM テストベンチ実行可能ファイルを実行します。

  • TLM 結果を Simulink データに変換します。

  • データの比較を実行します。

  • データが誤って比較された信号に対して、図ウィンドウを生成します。

14.実行ログを確認する

テストベンチを生成するオプションを使用すると、テストベンチ イニシエーター スレッドがターゲットとどのように対話し、同期するかを確認できます。ログの最後にある比較結果を探し、データの比較が成功したことを確認します。

### Comparing expected vs. actual results.
Data successfully compared for signal tlmg_out1.
Data successfully compared for signal tlmg_out2.
### Component verification completed

これで、TLM ジェネレーターの使用開始の例は終了です。