このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
SIL シミュレーションの構成と実行
SIL および PIL シミュレーションを実行するには 3 つの方法があります。以下を使用できます。
最上位モデル。
Model ブロック。
サブシステムから作成した SIL ブロックと PIL ブロック。
最上位モデルでのシミュレーション
最上位モデルの SIL または PIL シミュレーションを構成して実行するには、次のようにします。
Simulink® エディターでモデルを開きます。
[アプリ] タブで、[SIL/PIL マネージャー] をクリックします。
[モード] セクションで、[SIL/PIL シミュレーションのみ] を選択します。
[準備] セクションで、
[テスト対象システム]
を [最上位モデル] に設定します。[SIL/PIL モード] フィールドで、
[ソフトウェアインザループ (SIL)]
または[プロセッサインザループ (PIL)]
を選択します。このオプションでは、ERT、GRT、または AUTOSAR システム ターゲット ファイルのみがサポートされます。構成については、モデル コンフィギュレーション パラメーター: コード生成とAUTOSAR コード生成の構成 (AUTOSAR Blockset)を参照してください。コンポーネント信号と状態データを監視し、モデルと SIL または PIL シミュレーションの値を比較するには、次のようにします。
ログ記録する信号ごとに次を実行します。
Simulink エディターで、信号を選択します。
[SIL/PIL] タブで [信号の監視] をクリックします。ギャラリーから次のオプションを選択します。
選択した信号のログ
選択した信号をテストポイントにする
信号のログ
状態データをログに記録するには、[信号の監視] ギャラリーから [状態ログ] を選択します。
[言語] コンフィギュレーション パラメーターが
[C++]
で、[コード インターフェイスのパッケージ化] が[C++ クラス]
の場合、コード マッピング エディターで、信号、状態、および内部データ モデル要素カテゴリの [データの可視性] を[public]
に設定します。
SIL シミュレーションを構成している場合は、移植可能なワード サイズ オプションを指定します。その後、SIL モードと PIL モードをシームレスに切り替えることができます。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[移植可能なワード サイズを有効にする] チェック ボックスをオンにします。
必要に応じて、以下を構成します。
[実行] セクションの [終了時間] フィールドにシミュレーション時間を指定します。
[SIL/PIL を実行] をクリックします。
シミュレーションの終了時に、[結果] セクションで [データ インスペクター] をクリックしてシミュレーション結果を表示します。
メモ
Windows® オペレーティング システムで、Windows ファイアウォールが SIL または PIL のシミュレーションをブロックする可能性があります。自動化されたワークフローの一部として SIL または PIL シミュレーションを実行する予定がある場合は、IT 部門に相談して、シミュレーションが Windows ファイアウォールによってブロックされないようにしてください。
以下は実行できません。
シミュレーションの実行中にモデルを閉じる。シミュレーションを中断するには、コマンド ウィンドウで Ctrl+C を押します。
シミュレーション中にモデルを変更する。モデルの動作を変えない限り、ブロックやラインを移動できます。
コマンド sim(
を使用して、最上位モデルの SIL または PIL シミュレーションを実行できます。ソフトウェアでは、値 model
)'base'
に対して sim
コマンド オプション SrcWorkspace
がサポートされます。
PIL シミュレーションの場合、接続構成によってターゲット環境でコードをコンパイルおよび実行する方法を制御します。
Model ブロックでのシミュレーション
SIL または PIL シミュレーション用に Model ブロックを構成するには、次のようにします。
次のようにモデル (たとえば、
SILModelBlock
) を開きます。openExample('ecoder/SILPILVerificationExample', ... supportingFile='SILModelBlock.slx')
Model ブロック (たとえば、
Counter A
) を右クリックします。コンテキスト メニューで [ブロック パラメーター (ModelReference)] を選択します。これにより、[Function ブロック パラメーター] ダイアログ ボックスが開きます。[シミュレーション モード] ドロップダウン リストで、必要なモード (
[ソフトウェアインザループ (SIL)]
など) を選択します。[コード インターフェイス] ドロップダウン リストで、テストするコード (
[モデル参照]
など) を指定します。[OK] をクリックします。ソフトウェアでシミュレーション モードがブロック ラベルとして表示されます。
[最上位モデル]
を選択すると、ソフトウェアでブロック ラベル(SIL: Top)
が表示されます。SIL シミュレーションを構成している場合は、移植可能なワード サイズ オプションを指定します。その後、SIL モードと PIL モードをシームレスに切り替えることができます。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[移植可能なワード サイズを有効にする] チェック ボックスをオンにします。
[アプリ] タブで、[SIL/PIL マネージャー] をクリックします。
[モード] セクションで、[SIL/PIL シミュレーションのみ] を選択します。
[準備] セクションで、
[テスト対象システム]
を [SIL/PIL モードの Model ブロック] に設定します。[最上位モデルのモード] フィールドで、
[ノーマル]
または[アクセラレータ]
を選択します。必要に応じて、以下を構成します。
最上位モデルの実行プロファイルを構成することによる、Model ブロックのコード実行プロファイリング。
[実行] セクションで、次のようにします。
[終了時間] フィールドにシミュレーション時間を指定します。
最初のビルド後にコードをリビルドすることを回避する場合は、[高速リスタート] をクリックします。複数のシミュレーションでのコード変更の防止を参照してください。
[SIL/PIL を実行] をクリックします。
シミュレーションの終了時に、[結果] セクションで [データ インスペクター] をクリックしてシミュレーション結果を表示します。
メモ
Windows オペレーティング システムで、Windows ファイアウォールが SIL または PIL のシミュレーションをブロックする可能性があります。自動化されたワークフローの一部として SIL または PIL シミュレーションを実行する予定がある場合は、IT 部門に相談して、シミュレーションが Windows ファイアウォールによってブロックされないようにしてください。
PIL シミュレーションの場合、接続構成によってターゲット環境でコードをコンパイルおよび実行する方法を制御します。
Subsystem ブロックでのシミュレーション
次のいずれかのワークフローを使用できます。
Simulink Test™ ハーネスと SIL/PIL マネージャー — サブシステムを含むモデルがある場合、Simulink Test と SIL/PIL マネージャーを使用して、サブシステムから生成されたコードに対してユニット テストを実行できます。このワークフローは、親モデルから生成されたコードの一部として、生成されたサブシステム コードをテストします。ワークフローの詳細については、SIL/PIL マネージャーを使用したサブシステムのコードのユニット テストを参照してください。
このワークフローがサブシステムをサポートしていない場合は、代わりに SIL または PIL ブロック ワークフローを使用してください。
SIL ブロックまたは PIL ブロック — サブシステムから SILブロックまたは PIL ブロックを作成してから、テスト ベクトルまたはスティミュラス入力を供給する環境またはテスト ハーネス モデルでブロックを実行します。このワークフローは、サブシステムから新しいスタンドアロン コードを生成してテストします。詳細については、SIL ブロックまたは PIL ブロックのシミュレーションを参照してください。
PIL シミュレーションの場合、接続構成によってターゲット環境でコードをコンパイルおよび実行する方法を制御します。
SIL ブロックまたは PIL ブロックのシミュレーション
サブシステムから SIL ブロックまたは PIL ブロックを作成し、そのブロックを使用して、サブシステムから生成されたコードをテストするには、次のようにします。
[コンフィギュレーション パラメーター] 、 [コード生成] 、 [検証] 、 [詳細設定パラメーター] 、 [ブロックの作成] ドロップダウン リストから、
[SIL]
または[PIL]
を選択します。必要に応じて、コード実行プロファイリングを構成します。
[OK] をクリックします。
モデル ウィンドウで、シミュレーションするサブシステムを右クリックします。
[C/C++ コード] 、 [このサブシステムをビルド] を選択します。これにより、生成されたサブシステム コードに対して SIL ブロックまたは PIL ブロックを作成するサブシステム ビルド プロセスが開始されます。
テスト ベクトルまたはスティミュラス入力を供給する環境またはテスト ハーネス モデルに、生成されたブロックを追加します。
環境またはテスト ハーネス モデルを使用してシミュレーションを実行します。
メモ
Windows オペレーティング システムで、Windows ファイアウォールが SIL または PIL のシミュレーションをブロックする可能性があります。自動化されたワークフローの一部として SIL または PIL シミュレーションを実行する予定がある場合は、IT 部門に相談して、シミュレーションが Windows ファイアウォールによってブロックされないようにしてください。
次のいずれかを実行した場合は、SIL ブロックまたは PIL ブロックを作成できません。
CreateSILPILBlock
プロパティを無効にする。コード カバレッジ ツールを選択する。
[ブロックの作成] がグレー表示になります。
ハードウェア実行設定の構成
SIL シミュレーションの場合は、ハードウェア実行設定を構成して、開発用コンピューター用に生成されたコードをコンパイルできるようにする必要があります。これらの設定は、実際の製品ハードウェア用にモデルをビルドするときに使用するハードウェア実行設定とは異なる場合があります。次のいずれかの方法を使用します。
方法 | 詳細 |
---|---|
移植可能なワード サイズ | コードを再生成せずに SIL モードと PIL モードを切り替えます。開発用コンピューターでの SIL シミュレーションとターゲット プラットフォームでの量産展開には、同じ生成されたソース コード ファイルを使用します。 移植可能なワード サイズを使用するようにモデルを構成するには、次のように設定します。
|
移植可能なワード サイズを指定してモデルのコードを生成すると、コード ジェネレーターは #ifdef PORTABLE_WORDSIZES /* PORTABLE_WORDSIZES defined */ … #else /* PORTABLE_WORDSIZES not defined */ … #endif /* PORTABLE_WORDSIZES */ ターゲットのコードをビルドするために使用するテンプレート makefile には、 コードをビルドするためのテンプレート makefile とツールチェーンのアプローチについては、ホストベースのビルドの場合のみコンパイラに コードをビルドするためのテンプレート makefile とツールチェーンのアプローチについては、ツールチェーン (ToolchainInfo) またはテンプレート makefile のビルド プロセスの設定を参照してください。 | |
開発用コンピューターでコンパイルできないコードをターゲットが使用している場合を考えてみましょう。PIL モードから SIL モードに切り替えてモデルをシミュレーションしようとすると、コンパイル エラーが発生します。この問題を回避するには、ビルド情報オブジェクト
| |
次のいずれかの条件下では、SIL シミュレーションで実行される生成コードと製品ハードウェアで実行される生成コードとの間で数値結果が異なる場合があります。
| |
ハードウェアをテストする | この方法は、移植可能なワード サイズの制限を回避する場合にのみ使用してください。 以下のように設定します。
|
製品ハードウェア | この方法は、製品ハードウェアの設定が開発用コンピューターのアーキテクチャと一致する場合にのみ使用してください。 以下のように設定します。
|
テストと製品のターゲットの詳細については、のランタイム環境オプションの構成を参照してください。
コンポーネントの信号のログ
SIL および PIL コンポーネントの出力は、観測および他のシミュレーション モードの出力との比較に使用できます。内部信号を調べる場合は、最上位モデルまたは Model ブロックの SIL または PIL の内部信号のログを有効にすることができます。信号のログでは、以下が可能です。
SIL/PIL シミュレーション中に信号ログの出力を収集する (たとえば、
logsout
)。SIL/PIL コンポーネントの内部信号とルートレベル出力をログに記録する。
Simulink 信号ログ セレクターを使用して SIL/PIL 信号ログ設定を管理する。
シミュレーション データ インスペクターを使用して以下を行う:
ノーマル シミュレーション、SIL シミュレーション、および PIL シミュレーション中にストリーミングされた信号を観測する。
ノーマル シミュレーション、SIL シミュレーション、および PIL シミュレーションでログに記録された信号を比較する。
SIL または PIL シミュレーション中に、MATLAB ワークスペースへの信号のログおよびシミュレーション データ インスペクターへの信号のストリーミングを有効にするには、次のようにします。
監視する信号ごとに次のようにします。
Simulink エディターで、信号を選択します。
[SIL/PIL] タブで [信号の監視] をクリックします。ギャラリーから次のオプションを選択します。
選択した信号のログ
選択した信号をテストポイントにする
信号のログ
[言語] コンフィギュレーション パラメーターが
[C++]
で、[コード インターフェイスのパッケージ化] が[C++ クラス]
の場合、コード マッピング エディターで、信号、状態、および内部データ モデル要素カテゴリの [データの可視性] を[public]
に設定します。
次のように他の方法を使用して、SIL または PIL コンポーネントの内部信号を調べることができます。
信号を手動で最上位レベルにルーティングする。
次のようにグローバル データ ストアを使用して内部信号にアクセスする。
コンポーネント内で、Data Store Write ブロックを必要な信号に接続する。
コンポーネントの外側で、Data Store Read ブロックを使用して信号値にアクセスする。
MAT ファイルのログを使用する。次の点に注意してください。
MAT ファイルのログでは、信号のログはサポートされません。信号のログが有効になっている場合、
logsout
が生成されますが、MAT ファイルには保存されません。PIL の場合、ターゲット環境で MAT ファイルのログがサポートされている必要があります。
詳細については、以下を参照してください。
複数のシミュレーションでのコード変更の防止
以下を使用して複数の SIL または PIL シミュレーションを実行する場合は、Model ブロックの SIL/PIL または高速リスタートを使用する SIL/PIL ブロックを使用します。
さまざまなテスト ベクトル (パラメーター セットと入力データ)。
変更されない生成コード (つまり、最初のビルド後にどのシミュレーションでもコードの再生成やリビルドが行われない)。たとえば、初期値の変更によってトリガーされる可能性のあるインクリメンタルなコード生成を回避する場合などです。
Model ブロックの SIL/PIL の場合は、次のいずれかの方法を使用することもできます。
テスト ハーネス モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスで、[リビルド] を
[行わない]
に設定する。Model ブロックの [コード インターフェイス] パラメーターが[モデル参照]
の場合、参照モデル コードはリビルドされません。([コード インターフェイス] パラメーターが[最上位モデル]
の場合、[リビルド] 設定は無視されます。)保護モデルを作成し、ソース コードまたはバイナリ コードを生成する。次に、保護モデルをテスト ハーネス モデルに挿入する。この方法を使用すると、最上位モデル コード (スタンドアロン コード インターフェイスを使用) またはモデル参照コードを検証できます。
Model ブロックの SIL/PIL を実行する代替方法については、次の表に初期ビルド後のコード生成動作がまとめられています。
SIL および PIL アプローチ | 初期ビルド後のコード生成動作 | |
---|---|---|
Model ブロック | テスト ハーネス モデルの [リビルド] コンフィギュレーション パラメーターを [行わない] に設定。 |
|
Model ブロック (保護モデル) | 保護モデルのソース コード。 | 機能 2 を除いて同じ動作が観測されます。この場合、コンポーネント コードの makefile は実行されます。コンポーネント コードが再コンパイルおよびリンクされて、新しいオブジェクト コードが生成されます。 |
保護モデルのバイナリ コード。 | 機能 1 ~ 4 が観測されます。 |
詳細については、以下を参照してください。
テストの高速化
モデルに SIL/PIL ブロックまたは SIL/PIL モードの Model ブロックがある場合、以下によって SIL/PIL テストを高速化できます。
最上位モデルのシミュレーションをアクセラレータ モードで実行する。このモードにより、SIL モードまたは PIL モードではないモデル コンポーネントのシミュレーションが高速化されます。
高速リスタートをオンにする。最初のシミュレーションの後、モデルを再コンパイルせずにパラメーターを調整し、シミュレーションを再実行できます。SIL/PIL マネージャーには、[高速リスタート] ボタンが用意されています。
メモ
SIL シミュレーション モードおよび PIL シミュレーション モードは、モデルのシミュレーション時間を短縮するように設計されていません。モデルのシミュレーションを高速化する場合は、ラピッド アクセラレータ モードを使用します。詳細については、アクセラレーションとはを参照してください。
関数呼び出しでのシミュレーション
以下を行う場合は、Simulink Function ブロックを使用します。
外部コード (ドライバーやレガシ コードなど) の関数呼び出しを行うコードを生成する。
ノーマル シミュレーション、SIL シミュレーション、または PIL シミュレーションで外部コードのように動作するサブシステムを提供する。
AUTOSAR NVRAM Manager サービスの呼び出しの構成 (AUTOSAR Blockset)の例は、AUTOSAR ソフトウェア コンポーネントからの基本ソフトウェア (BSW) NVRAM Manager (NvM) サービス インターフェイスに対するクライアント呼び出しを構成する方法を示しています。シミュレーションでは、Simulink は、Simulink Function および事前構成された Function Caller ブロックを介して BSW NvM 呼び出しを実装します。最終的なシステムでは、関数呼び出しスタブを、AUTOSAR ランタイム環境 (RTE) で実行される外部 BSW 関数コードにリンクします。
詳細については、Simulink Function ブロックとコードの生成を参照してください。
参考
トピック
- SIL シミュレーションおよび PIL シミュレーション
- SIL アプローチまたは PIL アプローチの選択
- SIL シミュレーションと PIL シミュレーションを使用した生成コードのテスト
- SIL または PIL のシミュレーション中における生成コードのデバッグ
- View SIL and PIL Files in Code Generation Report
- SIL/PIL Manager Verification Workflow
- プログラムによるシミュレーションの実行
- Simulation Mode Override Behavior in Model Reference Hierarchy
- SIL and PIL Limitations
- サードパーティ ツールによるコード カバレッジの設定
- Create Execution-Time Profile for Generated Code