このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
時間制限のない SystemC/TLM シミュレーション
この例では、Simulink® Coder™ または Embedded Coder® のいずれかの tlmgenerator ターゲットを使用して Simulink® モデルから SystemC™/TLM コンポーネントを生成するときに、「Untimed」タイミング モードを使用する方法を説明します。
Simulink® モデルでは、ソースとシンク間のデータの移動は、信号サンプル レートと集中タイミング ソルバーによって制御されます。SystemC/TLM モデルでは、データ シンクとソース間の相互作用は SystemC シミュレーション カーネルによって制御され、SC_THREAD を通じて時間が進み、wait
呼び出しを通じて別のスレッドに制御が協調的に渡されます。
時間制限のない 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_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 14.403s
4. 生成されたファイルを開く
生成されたレポートまたは MATLAB エディターで「DualFilter_uttb_tlm_tb.cpp」をクリックして、生成されたテストベンチ ソース コードを MATLAB Web ブラウザーで開きます。
5. 生成されたコードを確認する
「タイミングなし」を指定すると、テストベンチは特別な構成インターフェイス mw_backdoorcfg_IF
を使用して TLM コンポーネントにタイミングなしモードで実行するように指示します。コードが示すように、タイミング モードの選択は動的であり、シミュレーションの過程で変更できます。この選択は純粋にシミュレーション構造であるため、「フロントドア」TLM トランザクションによってプログラムされるものではありません。
さらに、コードが示すように、テストベンチは、イニシエーター スレッドが TLM トランザクション呼び出しで適切な同期を使用するように、正しいタイミング モードでローカル ヘルパー オブジェクトを設定する必要があります。
mw_support_tb.cpp
ファイル内の時間制限のない同期クラス mw_syncuntimed_tb
の実装には、イニシエーター スレッドと TLM トランザクションによって使用されるさまざまな同期呼び出しの詳細が示されています。前述のように、呼び出しは SC_ZERO_TIME の待機を利用し、遅延が蓄積されることは許可されません。
6. 生成されたコードを検証する
Configuration Parameters
ダイアログ ボックスで、TLM Testbench
構成パラメータ ダイアログに移動し、Verify TLM Component
ボタンを押して 生成されたテストベンチを非タイミング タイミング モードで実行 するか、MATLAB コマンド ウィンドウで以下を実行します。
>> verifyTlmgDemoModel('uttb')
このアクションにより次のことが起こります:
生成されたコードをビルドする
Simulink を実行して入力刺激と期待される結果をキャプチャします
SimulinkデータをTLMベクトルに変換する
スタンドアロンのSystemC/TLMテストベンチ実行ファイルを実行する
TLMの結果をSimulinkデータに戻す
データ比較を実行する
データが比較されなかった信号に対して図ウィンドウを生成します。