Main Content

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

緩やかなタイミングの SystemC/TLM シミュレーション

この例では、 Simulink® Coder™またはEmbedded Coder® のtlmgenerator ターゲットを使用してSimulink®モデルから SystemC™/TLM コンポーネントを生成するときの 'Timed' タイミング モードの使用について説明します。

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

時間指定された SystemC/TLM シミュレーションの場合、モデルは通信インターフェイスと処理の注釈付き遅延に従います。緩いタイミングのシミュレーションの場合、モデルではスレッドが時間内に「先行して実行」することができないため、他のスレッドの時間感覚と異なる「ローカル時間」という概念がありません。代わりに、イニシエーターは、TLM トランザクションから返された遅延に即座に同期し、通常、ポーリング ループと同期オンデマンドを実行するためにゼロ以外の時間指定された待機を実行します。シミュレーション時間は、システム内の通信、処理、およびポーリングの遅延を反映するために、緩やかなタイミングのモデルで進みます。このモデルの目標は、アンタイム システムの場合と同様にデータ移動を適切に同期することに加えて、実時間での実行時間を短縮して機能的に正しいシミュレーションを行うことです。この速度により、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_lttb/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 15.592s

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

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

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

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

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

mw_syncfunctimed_tbファイル内の緩いタイミングの同期クラスmw_support_tb.cppの実装は、イニシエーター スレッドと TLM トランザクションによって使用されるさまざまな同期呼び出しの詳細を示します。タイミングなしのシミュレーションとは異なり、呼び出しではゼロ以外の待機時間が利用されますが、タイミングなしのシミュレーションと同様、「ローカル時間」の遅延が蓄積することは許可されません。

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

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

  >> verifyTlmgDemoModel('lttb')

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

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

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

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

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

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

  • データ比較を実行する

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