このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
緩やかな時間指定の 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® では make と互換性のある GNU コンパイラ gcc をパスに、Windows® では Visual Studio® コンパイラをパスにインストールします。
メモ: 例には、コード生成ビルド手順が含まれています。Simulink では、MATLAB インストール領域にプログラムをビルドすることはできません。必要に応じて、ビルドを開始する前に、MATLAB インストール領域以外の作業ディレクトリに変更します。
1. 事前設定されたモデルを開く
TLM ルーズリータイム テストベンチ モデル を開くには、[モデルを開く] ボタンをクリックします。
次のモデルは Simulink で開きます。
2. TLMジェネレータターゲット構成オプションを確認する
Simulink ツールストリップで、モデリング タブから モデル設定 を選択します。[構成パラメータ] ダイアログ ボックスで、[TLM ジェネレータ] ビューを選択し、次に [TLM テストベンチ] ビューのタブを選択して、次の図に示すようにテストベンチの設定を確認します。SystemC/TLM シミュレーションにおけるイニシエーター/ターゲットの相互作用の完全なログを表示するには、詳細なテストベンチ メッセージのチェックボックスを選択します。これは数千行になるため、必要に応じて、SystemC/TLM シミュレーションの簡潔なログを取得するオプションの選択を解除します。
3. モデルの作成
モデル ウィンドウで、DualFilter ブロックを右クリックし、コンテキスト メニューで [C/C++ コード] > [このサブシステムのコード生成] を選択して、[TLM コンポーネントとテストベンチの生成] を開始します。または、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 11.524s
4. 生成されたファイルを開く
生成されたレポートまたは MATLAB エディターで「DualFilter_lttb_tlm_tb.cpp」をクリックして、生成されたテストベンチ ソース コードを MATLAB Web ブラウザーで開きます。
5. 生成されたコードを確認する
「タイミングあり」を指定すると、テストベンチは特別な構成インターフェイス mw_backdoorcfg_IF
を使用して TLM コンポーネントにタイミング モードで実行するように指示します。コードが示すように、タイミング モードの選択は動的であり、シミュレーションの過程で変更できます。この選択は純粋にシミュレーション構造であるため、「フロントドア」TLM トランザクションによってプログラムされるものではありません。
さらに、コードが示すように、テストベンチは、イニシエーター スレッドが TLM トランザクション呼び出しで適切な同期を使用するように、正しいタイミング モードでローカル ヘルパー オブジェクトを設定する必要があります。
mw_support_tb.cpp
ファイル内の緩やかなタイミングの同期クラス mw_syncfunctimed_tb
の実装は、イニシエーター スレッドと TLM トランザクションによって使用されるさまざまな同期呼び出しの詳細を示します。時間制限のないシミュレーションとは異なり、呼び出しではゼロ以外の時間の待機が使用されますが、時間制限のないシミュレーションと同様に、「ローカル時間」の遅延が蓄積されることはありません。
6. 生成されたコードを検証する
Configuration Parameters
ダイアログ ボックスで、TLM Testbench
構成パラメータ ダイアログに移動し、Verify TLM Component
ボタンを押して 生成されたテストベンチを緩いタイミング モードで実行 するか、MATLAB コマンド ウィンドウで以下を実行します。
>> verifyTlmgDemoModel('lttb')
このアクションにより次のことが起こります。
生成されたコードをビルドする
Simulink を実行して入力刺激と期待される結果をキャプチャします
SimulinkデータをTLMベクトルに変換する
スタンドアロンのSystemC/TLMテストベンチ実行ファイルを実行する
TLMの結果をSimulinkデータに戻す
データ比較を実行する
データが比較されなかった信号に対して図ウィンドウを生成します。