Main Content

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

時間制限のない SystemC/TLM シミュレーション

この例では、 Simulink® Coder™またはEmbedded Coder® のtlmgenerator ターゲットを使用してSimulink®モデルから SystemC™/TLM コンポーネントを生成するときの、「アンタイム」タイミング モードの使用方法を示します。

Simulink®モデルでは、ソースとシンク間のデータの移動は、信号サンプル レートと集中型タイミング ソルバーによって制御されます。SystemC/TLM モデルでは、データ シンクとソース間の対話は SystemC シミュレーション カーネルによって制御され、SC_THREAD によって時間が進行し、 wait呼び出しを通じて別のスレッドに制御を協調的に渡します。

時間制限のない SystemC/TLM シミュレーションの場合、モデルは通信インターフェイスと処理の注釈付き遅延を無視します。このようなモデルでは、イニシエーターとターゲットがデータの移動を確実に同期できるようにすることで、正しい結果が得られるシミュレーションを行うことのみが目標となります。導入されたシステムのパフォーマンスを評価する試みはありません。同期は完全にイベントベースであるため、時間制限なしのシミュレーション中にシミュレーション時間が経過する必要はありません。

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

このデモを実行するために必要な製品:

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

  • コードを検証するには、Linux® のパスに互換性のある GNU コンパイラ gcc を作成するか、Windows® のパスに Visual Studio® コンパイラを作成します。

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

1. 事前構成されたモデルを開く

「TLM アンタイム テストベンチ モデル」を開くには、「モデルを開く」ボタンをクリックします。

次のモデルがSimulinkで開きます。

2.TLM ジェネレーターのターゲット構成オプションを確認する

Simulinkツールストリップで、モデリング タブから モデル設定 を選択します。「Configuration パラメーター」ダイアログ・ボックスで、「TLM Generator」ビューと「TLM Testbench」タブを選択し、次の図に示すようにテストベンチの設定を確認します。SystemC/TLM シミュレーションでのイニシエーターとターゲットの相互作用の完全なログを表示するには、詳細テストベンチ メッセージ チェックボックスを選択します。これは数千行になるため、必要に応じて、SystemC/TLM シミュレーションの簡潔なログを取得するオプションの選択を解除します。

3.モデルを構築する

モデル ウィンドウで DualFilter ブロックを右クリックし、コンテキスト メニューで C/C++ コード > このサブシステムのコードを生成 を選択してTLM component and testbench generationを開始します。または、 MATLABコマンド ウィンドウで次のコマンドを実行することもできます。

  >> slbuild('tlmgdemo_uttb/DualFilter')

MATLABコマンド ウィンドウに次のメッセージが表示されたら、生成が完了します。

### 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 10.582s

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

生成されたレポートまたはMATLABエディターで「DualFilter_uttb_tlm_tb.cpp」をクリックして、生成されたテストベンチのソース コードをMATLAB Web ブラウザーで開きます。

5.生成されたコードを確認する

「タイミングなし」を指定すると、テストベンチは特別な構成インターフェイスmw_backdoorcfg_IFを使用して、TLM コンポーネントに非タイミング モードで実行するように指示します。コードが示すように、タイミング モードの選択は動的であり、シミュレーション中に変更できます。この選択は純粋にシミュレーション構成であるため、「フロントドア」TLM トランザクションによってプログラムされることはありません。

さらに、コードが示すように、テストベンチは、イニシエーター スレッドが TLM トランザクション呼び出しで適切な同期を使用することを保証するために、正しいタイミング モードでローカル ヘルパー オブジェクトをセットアップする必要があります。

mw_syncuntimed_tbファイル内の時間制限なし同期クラスmw_support_tb.cppの実装は、イニシエーター スレッドと TLM トランザクションによって使用されるさまざまな同期呼び出しの詳細を示します。前述したように、呼び出しでは SC_ZERO_TIME の待機が利用され、遅延が蓄積することは許可されません。

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

Configuration Parametersダイアログボックスで、 TLM Testbench設定パラメーターダイアログに移動し、 Verify TLM Componentボタンを押してrun the generated testbench in the untimed timing modeに設定します。 $またはMATLABコマンド ウィンドウで次を実行します。

  >> verifyTlmgDemoModel('uttb')

このアクションにより次のことが行われます。

  • 生成されたコードをビルドする

  • Simulinkを実行して入力刺激と期待される結果をキャプチャする

  • Simulinkデータを TLM ベクトルに変換する

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

  • TLM 結果をSimulinkデータに変換して戻す

  • データ比較を実行する

  • データの比較ミスがあった信号に対して Figure ウィンドウを生成します。