Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

再利用可能なサブシステムの累積カバレッジの取得

この例では、再利用可能なサブシステムまたは再利用可能な Stateflow™ チャートをもつモデルの累積カバレッジ結果を作成および表示する方法を説明します。

Simulink® Coverage™ は、まったく同じに構成された次のものについて、複数のインスタンスの累積カバレッジを提供します。

  • サブシステム

  • チャートやライブラリにリンクされたサブチャートなどの Stateflow オブジェクト

累積カバレッジを取得するには、プログラムによって個別のカバレッジ結果を加算するか、[実行] ボタンを使用してモデルを複数回シミュレートします。個々のカバレッジ結果を追加することで、モデルおよびテスト ハーネス全体の複数のインスタンスの累積カバレッジ結果を取得できます。累積カバレッジの詳細については、累積カバレッジ データを参照してください。

モデル例を開く

slvnvdemo_cv_mutual_exclusion モデルを開きます。

modelName = "slvnvdemo_cv_mutual_exclusion";
open_system(modelName);

slvnvdemo_cv_mutual_exclusion モデルには、再利用可能なサブシステムの 2 つのインスタンス Subsystem 1 および Subsystem 2 があります。

判定カバレッジの解析

モデルの Simulink.SimulationInput オブジェクトを作成します。

simIn = Simulink.SimulationInput(modelName);

判定カバレッジ解析を有効にします。

simIn = setModelParameter(simIn,"CovEnable","on");
simIn = setModelParameter(simIn,"CovMetricStructuralLevel","Decision");

CovScope パラメーターを使用してシステム全体のカバレッジを有効にします。

simIn = setModelParameter(simIn,"CovScope","EntireSystem");

CovSaveSingleToWorkspaceVar パラメーターを有効にし、カバレッジ データ オブジェクトの名前を covData に設定します。

simIn = setModelParameter(simIn,"CovSaveSingleToWorkspaceVar","on");
simIn = setModelParameter(simIn,"CovSaveName","covData");

sim への入力として covInput を使用してモデルをシミュレートします。シミュレーション出力オブジェクトでは、CovSaveName パラメーターと同じ名前をもつプロパティにカバレッジ データが含まれます。この例では、covData を使用します。

simOut = sim(simIn);
covData = simOut.covData;

サブシステム カバレッジ結果の抽出および表示

cvdata.extract メソッドを使用して Subsystem 1 のカバレッジ データを抽出します。次に、cvhtml を使用して Subsystem 1 の HTML レポートを作成します。

covDataSubsys1 = extract(covData,modelName+"/Subsystem 1");
cvhtml("subsystem1",covDataSubsys1);

レポートには、Subsystem 1 の判定カバレッジが 50% であることが示されます。enable logical valuetrue 条件が達成されていません。

Subsystem 2 のカバレッジ データの抽出および表示

covDataSubsys2 = extract(covData,modelName+"/Subsystem 2");
cvhtml("subsystem1",covDataSubsys2);

レポートには、Subsystem 2 の判定カバレッジが 50% であることが示されます。enable logical valuefalse 条件が達成されていません。

集計されたサブシステム カバレッジ レポートの生成

+ 演算子を使用して、2 つのシミュレーションのカバレッジ結果を結合します。

cumulativeCovData = covDataSubsys1 + covDataSubsys2;

% Create an HTML report for the cumulative decision coverage of |Subsystem
% 1| and |Subsystem 2|.

cvhtml('combinedData',cumulativeCovData);

2 つの異なる判定結果がサブシステムの別々のインスタンスで達成されていますが、集計されたレポートでは 2 つのシミュレーションからのデータが結合され、100% の判定カバレッジがレポートされます。

extract を使用する前に、これらの結果を元のカバレッジ データと比較します。

cvhtml('originalSystem',covData);

システム解析のカバレッジ レポートでは Subsystem 1Subsystem 2 が独立して表示されるため、システムに対して 50% の判定カバレッジがレポートされ、合計 4 つの判定結果のうち 2 つが達成されています。システム全体を解析した場合、カバレッジ レポートでは同一のシステムまたは Stateflow チャートの複数のインスタンスを調べません。同一のサブシステムのカバレッジ データを結合する場合は、手動で行う必要があります。

あるいは、Simulink Test™ を使用してユニットレベルのカバレッジ データをシステム レベルに集計できます。ユニットレベルのカバレッジ データの最上位モデル カバレッジへの集計を参照してください。

参考

| | |

関連するトピック