主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

SILシミュレーションおよび公益诉讼シミュレーション

SILシミュレーションおよび 皮尔シミュレーションとは

嵌入式编码器®を使用して,モデルのソフトウェアインザループ(SIL)シミュレーションおよびプロセッサインザループ(公益诉讼)シミュレーションを実行できます。これらのシミュレーションでは,最上位モデルまたはモデルの一部のソースコードを生成します。银シミュレーションでは、生成されたコードを開発用コンピューターでコンパイルおよび実行します。PIL シミュレーションでは、開発用コンピューターでソース コードをクロスコンパイルし、ターゲット プロセッサまたは同等の命令セット シミュレーターでオブジェクト コードをダウンロードして実行します。

SILシミュレーションおよび 皮尔シミュレーションでは、以下を実行できます。

  • モデルおよび生成されたコードが数値的に等価であるかどうかをテストする。

  • コードカバレッジを確認する。

  • コード実行プロファイリングを実行する。

SILおよび公益诉讼を使用する理由

SILおよび公益诉讼により,テストを早期に実行し,欠陥を修正できます。たとえば,ノーマルモードでシステムコンポーネントをモデル化し,テストできます。その後,コンパイルされた生成コードを実行するSILシミュレーションまたは公益诉讼シミュレーションでテストスイートを再利用できます。数値的な等価性をチェックするには,ノーマルシミュレーションとSILシミュレーションまたは公益诉讼シミュレーションの結果を比較します。金宝app动态仿真模块®環境に個別のインフラストラクチャでの生成コードのテストを任せる必要はありません。

以下の表に,SILおよび公益诉讼を使用できる状況を説明します。

状況 使用
生成 (またはレガシ) コードの数値出力を検証するノーマル モードのシミュレーション用に開発されたテスト ベクトルを再利用して、モデルと生成コード間の数値的等価性をテストします。SIL/PIL经理验证工作流程および测试两个模拟的等效性(金宝app仿真软件测试)を参照してください。 SILおよび公益诉讼

生成コードのメトリクスを収集します。

SILおよび公益诉讼

IEC认证工具包のライセンスが必要)

生成された C/C++コードについて、ISO 26262-6、IEC 61508-3、IEC 62304、EN 50128、および EN 50657機能安全規格で定義されたソフトウェア安全ライフサイクル全体の要件に従って、検証と妥当性確認のアクティビティを実行します。IEC认证工具包モデルベースデザインワークフローにおけるSILおよび公益诉讼の検証アクティビティの詳細については,工件浏览器の参考工作流嵌入式C / c++应用程序(Certkitec_ecoder_workflow.docx/pdf)アーティファクトを参照してください。

SILおよび公益诉讼

做资格工具包のライセンスが必要)

做- 178 cおよび做- 333安全規格の関連目標を満たすために統合プロセスの出力をテストします。詳細については,集成过程输出的测试(做资格工具包)を参照してください。この情報は,工件浏览器(做资格工具包)の- 178 c(基于模型的设计流程做qualkitdo_do178_workflow.pdf)アーティファクトでも確認できます。

SILおよび公益诉讼
ターゲットハードウェアがない場合,公益诉讼の便利な代替手段になります。

ターゲットハードウェアがある場合,評価ボードまたは命令セットシミュレーターなどで以下を実行します。

  • ターゲット固有コード(コード置換の最適化など)およびレガシコードの動作を確認する。コード置換とはおよび什么是代码替换定制?を参照してください。

  • コードの実行速度とメモリフットプリントを最適化する。この表内の,実行プロファイリングメトリクスとスタックプロファイリングメトリクスに関する情報を参照してください。

  • コンパイラ設定や最適化の影響(ANSI®Cオーバーフロー動作からの乖離など)を調査する。

ノーマルシミュレーション手法では,限られたメモリリソースやターゲット固有に最適化されたコードの動作など,ハードウェアによって課される制限および要件が考慮されません。


特定のターゲットでの 皮尔シミュレーションの実行の詳細については、カスタムターゲットのサンプルを参照してください。

公益诉讼

メモ

SILシミュレーション モードおよび 皮尔シミュレーション モードは、モデルのシミュレーション時間を短縮するように設計されていません。モデルのシミュレーションを高速化する場合は、ラピッド アクセラレータ モードを使用します。詳細については、アクセラレーションとはを参照してください。

SILシミュレーションおよび公益诉讼シミュレーションの仕組み

SILシミュレーションまたは公益诉讼シミュレーションでは,最上位モデルまたはモデルの一部についてコードが生成されます。SILでは,このコードは開発用コンピューター用にコンパイルされ,実行されます。公益诉讼では、コードがターゲット ハードウェア用にクロスコンパイルされ、ターゲット プロセッサで実行されます。

通信チャネルを通じて,金宝app仿真软件は,シミュレーションのサンプル間隔ごとにスティミュラス信号をコンピューターまたはターゲットプロセッサのコードに送信します。

  • 最上位モデルの場合,金宝app仿真软件はベースワークスペースまたはモデルワークスペースからのスティミュラス信号を使用します。

  • SILモードまたは公益诉讼モードでシミュレーションするモデルの一部のみを指定した場合,モデルの一部は模型内金宝appに残り,モデルのこの部分についてコードは生成されません。通常,モデルのこの部分は,ハードウェアで実行されているソフトウェア向けにテストベクトルを提供するよう構成します。モデルのこの部分は,アルゴリズムの他の部分またはアルゴリズムが動作する環境を表すことができます。

コンピューターまたはターゲットプロセッサが仿真金宝app软件から信号を受信すると,プロセッサで1つのサンプルステップに対してSILアルゴリズムまたは公益诉讼アルゴリズムが実行されます。SILアルゴリズムまたは公益诉讼アルゴリズムは,このステップ中に計算された出力信号を,通信チャネルを通じて仿真软金宝app件に返します。シミュレーションの1サンプルサイクルが完了すると,仿真软金宝app件は次のサンプル間隔に進みます。プロセスは繰り返し実行され,シミュレーションが進行します。SILシミュレーションおよび公益诉讼シミュレーションはリアルタイムで実行されません。各サンプル期間に、Simulink およびオブジェクト コードが I/O データを交換します。

SILシミュレーションと公益诉讼シミュレーションの比較

SILシミュレーションまたは公益诉讼シミュレーションのタイプ SILシミュレーションの動作 公益诉讼シミュレーションの動作

次で指定:

  • 最上位モデルのシミュレーションモード

  • 模型ブロックの[シミュレーションモード]パラメーター

  • 開発用コンピューターで生成されたソースコードの動作をテストする。コードは開発用コンピューター(ターゲットとは異なるコンパイラおよび異なるプロセッサアーキテクチャ)向けにコンパイルされるため,シミュレーションではターゲットハードウェア用にコンパイルされたコードはテストされません。

  • 生成された量産コードは,MATLAB®プロセスに関係なく,個別のプロセスとして開発用コンピューターでコンパイルおよび実行される。

  • 実行はホスト/ホストおよび非リアルタイムで行われる。

  • 製品に配布する予定のオブジェクト コードを実際のターゲット ハードウェアまたは命令セット シミュレーターのいずれかでテストする。

  • 開発用コンピューターで,生成された量産コードがターゲット用にクロスコンパイルされる。オブジェクトコードはターゲットプロセッサまたは命令セットシミュレーターにダウンロードされて実行されます。

  • 実行はホスト/ターゲットおよび非リアルタイムで行われる。

サブシステムから作成された SILブロックまたは 皮尔ブロックを使用する。
  • シミュレーションでは,コンパイルされたオブジェクトコードがs函数を通じて実行される。s函数は,開発用コンピューターでスタンドアロンアプリケーションとして実行されているオブジェクトコードと通信します。SILブロックの実行は,MATLABプロセスに依存しません。

  • 実行はホスト/ホストおよび非リアルタイムで行われる。

  • シミュレーションでは,クロスコンパイルされたオブジェクトコードが開発用コンピューターでs函数を通じて実行さる。s函数は,ターゲットプロセッサまたは命令セットシミュレーターでスタンドアロンアプリケーションとして実行されているオブジェクトコードと通信します。

  • 実行はホスト/ターゲットおよび非リアルタイムで行われる。

SILおよび 皮尔のコード インターフェイス

最上位モデルなど、実行するときにスタンドアロン コードを作成するか、単一の配布可能なコンポーネントのサブシステムのビルドを右クリックします。スタンドアロン コードをコンパイルして、スタンドアロンの実行可能ファイルにリンクすることも、他のコードと統合することもできます。スタンドアロン コードのインターフェイスの詳細については、モデルのエントリポイント関数に対する Cコード生成の構成を参照してください。

参照モデルの階層構造のコードを生成すると、最上位モデルのスタンドアロン実行可能ファイルと、各参照モデルの "モデル参照ターゲット"と呼ばれるライブラリモジュールが生成されます。コードが実行されると,スタンドアロンの実行可能ファイルは適用可能なモデル参照ターゲットを呼び出し,参照モデルの出力を計算します。詳細については,モデル参照ターゲットのビルドを参照してください。

生成されたコードをレガシコードと統合するには,スタンドアロンコードインターフェイスがドキュメント化されるため,スタンドアロンコードを使用します。

メモ

SILシミュレーションおよび公益诉讼シミュレーションでは,カスタムコードインターフェイスは直接サポートされません。レガシコードツール,S函数生成器,手書きのコードなどを使用してこれらのインターフェイスを仿金宝app真软件にs函数として組み込むことができます。その後,SILシミュレーションおよび公益诉讼シミュレーションを使用してカスタムコードを検証できます。

次の表に,SILシミュレーションおよび公益诉讼シミュレーションで生成されるインターフェイスを示します。

银/公益诉讼シミュレーション コードインターフェイス
最上位モデル

银/公益诉讼シミュレーションでは,スタンドアロンのコードインターフェイスが生成されます。コードが存在する場合,シミュレーションではモデルのスタンアロンコードが呼び出されます。コードが存在しない場合,スタンドアロンコードが生成されます。

模型ブロック

[コードインターフェイス]ブロックパラメーターを(最上位モデル]に設定すると,银/公益诉讼シミュレーションでは,スタンアロンのコードインターフェイスが生成されます。モデルのスタンドアロンコードが存在する場合は,そのコードが呼び出されます。存在しない場合は,slbuild ('模型')コマンドを使用してスタンドアロンコードが生成されます。

[コードインターフェイス]ブロックパラメーターを[モデル参照)に設定すると,银/公益诉讼シミュレーションでは,モデル参照コードインターフェイスが生成されます。模型ブロックのモデル参照ターゲットが存在する場合は,そのターゲットが呼び出されます。存在しない場合は,slbuild ('模型”、“ModelReferenceCoderTargetOnly”)コマンドを使用してモデル参照ターゲットが生成されます。

SILブロックまたは 皮尔ブロック ブロックは,スタンドアロンのコードインターフェイスを使用します。

スケジューリングに関する考慮事項

項目 情報
代数ループ

SILシミュレーションおよび公益诉讼シミュレーションで発生するが,ノーマルモードのシミュレーションでは発生しない代数ループがあります。

  • コード生成の最適化の[1つの出力/更新関数)では、出力と更新関数の組み合わせにより直達が導入されるため、代数ループが導入される可能性があります。

    [1つの出力/更新関数)(代数ループの発生の最小化)([子系统パラメーター]ダイアログボックスおよび[コンフィギュレーション パラメーター][モデル参照)ペイン内)と互換性がありません。(代数ループの発生の最小化)を使用すると、コード生成では生成コードを出力と更新関数との間で分割して直達を回避することで、代数ループを除去できます。

  • バーチャル サブシステムのコードを生成すると、コード生成ではサブシステムが 原子的として扱われ、それに従ってコードが生成されます。結果のコードによって、代数ループの適用などでモデルの実行動作が変化し、シミュレーションの動作が不整合になる可能性があります。

    モデルのシミュレーションと実行動作の整合性を確保するためには、バーチャル システムを 原子的サブシステムとして宣言します。

詳細については、以下を参照してください。

フィードバック ループのエクスポートされた関数

モデルに函数调用子系统があり,コンテキストに依存する入力(フィードバック信号など)のあるサブシステムをエクスポートすると,生成されたコードでのSIL /公益诉讼シミュレーションの結果とモデルのノーマルモードシミュレーションの結果が異なる場合があります。银/公益诉讼シミュレーションとノーマルモードのシミュレーションの結果を同一にするための1つの方法は,モデルで函数调用反馈锁存器ブロックを使用することです。コンテキストに依存する入力をコンテキストに依存しない入力にすることができます。

コンフィギュレーションパラメーターの[コンテキスト依存の入力)を次のいずれかに設定すると、嵌入式编码器でエクスポートされた 函数调用子系统のコンテキスト依存入力が確認された場合に、警告が生成されます。

  • 警告としてすべて有効

  • ローカル設定を利用

  • すべて無効

詳細については、以下を参照してください。

インポートデータと関数定義

インポートデータ

SILシミュレーションおよび公益诉讼シミュレーションでは,インポートデータ定義をもつストレージクラスを指定する信号,パラメーターおよびデータストアを使用できます。シミュレーションでは,以下に関連付けられたインポートデータのストレージが定義されます。

  • コンポーネントのルートレベルにある信号(I / O境界上)。

  • ベースワークスペースまたはデータディクショナリのパラメーター。モデルワークスペースのパラメーターの場合は,次のようになります。

    • 最上位モデルの SIL/PILおよび SIL/PILブロック シミュレーションではストレージが定義される。

    • 模型ブロックのSIL /公益诉讼シミュレーションではストレージが定義されない。ストレージを定義し,MATLABの値と一致する初期値を指定しなければなりません。

  • グローバルなデータストア。

SILシミュレーションおよび公益诉讼シミュレーションでは,他のインポートデータのストレージは定義されません。たとえば,シミュレーションでは,次の関連付けられたインポートデータのストレージは定義されません。

  • 内部信号(I / O境界上にない)

  • ローカル データ ストア

これらの場合は,テスト対象のコンポーネントによって含まれるカスタムコードまたは公益诉讼rtw.pil.RtIOStreamApplicationFrameworkAPIを通じてストレージを定義します。

可调参数与SIL/PILも参照してください。

GetSetカスタムストレージクラス

SILシミュレーションおよび 皮尔シミュレーションは、GetSetカスタムストレージクラスをサポートします。银/PIL テスト ハーネスでは、シミュレーション中に使用される関数收到のC定義が提供されます。詳細については,通过使用存储类GetSet的函数访问数据を参照してください。

タイプ其他のカスタムストレージクラス

[タイプ]其他に設定されているカスタムストレージクラスでSILおよび公益诉讼のサポートを有効にするには,カスタムストレージクラスのカスタム属性クラスを作成し,真正的に設定された布尔プロパティ金宝app支撑体にカスタム属性クラスを関連付けます。

classdef CSCOtherAttributes
             

カスタム属性の詳細については、通过编写TLC代码进一步定制生成的代码およびストレージクラスのTLCコードの記述によるデータ表現の詳細な制御を参照してください。

SILまたは公益诉讼アプリケーションインターフェイスを作成するために,コードジェネレーターは,関連付けられたカスタムTLCファイルで関数DataAccessClassAccessを呼び出し,必要な情報を取得します。コードジェネレーターは,ビルド フォルダーのビルド アーティファクトに抽出された情報を格納します。

グループ化されていないカスタム ストレージ クラスの場合は、次のようになります。

  • コードジェネレーターは,定义声明布局内容地址、またはの値を取る请求引数を指定してDataAccessを呼び出します。

  • コード ジェネレーターは、次のいずれに該当する場合、DataAccess(记录,“定义”,“”,“”)で返される文字列を使用してSILアプリケーションまたは公益诉讼アプリケーションで変数を定義します。

    • 信号またはパラメーターに进口データスコープがある。

    • モデルでモデル参照コードインターフェイスが使用されている。

    • モデルで最上位モデルコードインターフェイスが使用され,EnableDataOwnershipで,カスタムストレージクラスの老板属性が空でなく,現在のモデルの名前と等しくない。

  • コードジェネレーターは,次に該当する場合,数据访问(记录“declare”、“”、“”)から返される文字列を使用してSILまたは公益诉讼アプリケーションで変数を定義します。

    • モデルで最上位モデル コード インターフェイスが使用されている。

    • 信号またはパラメーターで出口ストレージ クラスが使用されている。

    • EnableDataOwnershipであるか,EnableDataOwnershipで,カスタムストレージクラスの老板属性が空またはモデル名と等しい。

    • コードのパッケージ化が設定されているため,変数は模型. hまたは模型. hでインクルードされるヘッダーファイルで宣言されません。

グループ化されているカスタムストレージクラスの場合は,次のようになります。

  • コードジェネレーターは,布局地址、またはの値を取る要求引数を指定したDataAccessを呼び出します。

  • コードジェネレーターは,groupTypeDeclDefnの値を取る要求引数を指定したClassAccessを呼び出します。

  • 次のいずれかに該当する場合は、グループ化されたタイプ (结构体)定義とグループ化された変数の走读生宣言を指定しなければなりません。

    • 信号またはパラメーターに进口データスコープがある。

    • モデルでモデル参照コードインターフェイスが使用されている。

    • モデルで最上位モデルコードインターフェイスが使用され,EnableDataOwnershipで,カスタムストレージクラスの老板属性が空でなく,現在のモデルの名前と等しくない。

    カスタムストレージクラスに関連付けられたヘッダーファイルで,HeaderFile属性、または模型. hファイルを通じてインクルードするカスタム コードを使用して、定義と宣言を指定します。SILまたは 皮尔アプリケーションで変数を定義するために、コード ジェネレーターはClassAccess(记录,“groupTypeDeclDefn”)から返される文字列を使用します。

  • 静的初期化では、データ スコープが出口の場合に生成される順序とは異なる结构体要素の順序を前提とすることができます。コードジェネレーターはClassAccess(记录,“groupTypeDeclDefn”)のクエリを実行するときに,カスタムストレージクラスのデータ初期化属性を値没有一个で一時的にオーバーライドします。

SILアプリケーションまたは公益诉讼アプリケーションがアドレスでコード内の変数にアクセスできるかどうかを判断するために,コードジェネレーターはDataAccess(记录,"布局","","")から返される要素を使用します。開発用コンピューターとターゲットハードウェア間で入力ポートまたは出力ポート,調整可能なパラメーター,あるいはグローバルデータストアメモリ値を転送するアプリケーション内の機能を作成するために,コードジェネレーターは次からの出力を使用します。

  • 最初に返される要素が标量向量row-mat、またはcol matの場合は数据访问(记录,“地址”,idx,reim)

  • 最初に返される要素が其他の場合はdatataccess (record, "contents", idx, reim)(または数据访问(记录,“设置”,idx,reim))。

コードジェネレーターは,row-matおよびcol matの場合,行列はそれぞれ行優先の形式で格納されると仮定します。この仮定は,モデルの残りの部分の配列レイアウトには依存しません。コードジェネレーターは,カスタムストレージクラスで実装されたストレージの配列レイアウトがモデルの残りの部分と異なる場合、カスタム ストレージ ファイルに関連付けられている TLC ファイルによって必要な変換が実行されると仮定します。

タイプが其他のカスタム ストレージ クラスと関連付けられているカスタム 薄层色谱ファイルを作成して、(要求されたコード フラグメントを返すのに加え) 他の関数を実行できます。たとえば、カスタム ファイルに直接書き込むか、ベース ワークスペースの状態を変更する MATLAB関数を呼び出します。DataAccessまたはClassAccessが呼び出されたときにこれらの関数を必ずしも実行するわけではない場合は、薄层色谱関数LibIsAccessingCustomDataForSILPIL(记录)を使用して,ターゲットコードの生成と,SILアプリケーションまたは公益诉讼アプリケーションの作成用のコードフラグメントの要求を区別します。次に例を示します。

…%case“contents”%if!LibIsAccessingCustomDataForSILPIL(记录)%matlab函数WithSideEffects()%endif%返回LibDefaultCustomStorageContents(记录、idx、reim)。。。

カスタムストレージクラスのその他の制限も参照してください。

AUTOSARランタイム環境

最上位モデルと模型ブロックSIL /公益诉讼およびSIL /公益诉讼ブロックのシミュレーションを使用して,AUTOSARソフトウェアコンポーネントのモデルベースのテストを実行できます。ソフトウェアによって,AUTOSARソフトウェアコンポーネントの生成コードと基本のコンポーネント固有のAUTOSARランタイム環境(RTE)がリンクされてテストアプリケーションが作成されます。このアプリケーションでは,AUTOSARソフトウェアコンポーネントによって実行されたAUTOSAR APIの呼び出しがテストされます。

参照モデルを含む最上位のAUTOSARソフトウェアコンポーネントの場合は,最上位モデルまたは模型ブロック([コードインターフェイス](最上位モデル]に設定されている)のSILシミュレーションまたは公益诉讼シミュレーションを実行できます。シミュレーションで,ソフトウェアにより次が行われます。

  • 参照モデルのコンパイル前に、AUTOSAR RTEヘッダー ファイルが生成される。

  • 参照モデルのコンパイル用の RTEインクルード パスが提供される。

最上位の AUTOSAR SWC内の参照モデルに対して模型ブロック([コードインターフェイス][モデル参照)に設定されている)のSILシミュレーションまたは公益诉讼シミュレーションを実行することもできます。この場合は,シミュレーションを実行する前に,親コンポーネントを作成してRTFヘッダーファイルを生成しなければなりません。親コンポーネントを作成しないと,SILシミュレーションまたは公益诉讼シミュレーションが失敗します。

関連するトピック