このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Signal Editor の Inputs ブロックを使用したハーネス モデルのシミュレート
この例では、Signal Editor の Inputs ブロックを使用してテスト ハーネス モデルをシミュレートすることにより、モデル カバレッジ レポートを生成する方法を説明します。Signal Editor ダイアログ ボックスでアクティブなシナリオを選択することにより、単一のテスト ケースまたは反例をシミュレートできます。詳細については、Signal Editor の Inputs ブロックを使用したハーネス モデルのシミュレートを参照してください。
すべてのテスト ケースをシミュレートし、それらを 1 つにまとめたモデル カバレッジを測定するには、cvsim
または parsim
コマンドを使用します。
この例では、Signal Editor をハーネス ソースとして選択することにより、ハーネス モデルを生成します。Signal Editor のシナリオは、テスト ケースまたは反例に関連付けられている信号ソースで構成されます。そのため、1 つにまとめたモデル カバレッジ レポートを生成するには、関数 cvsim
または parsim
を使用して、すべてのシナリオをシミュレートします。
1.モデルを開いてハーネス オプションを構成
sldvharnessopts
オプションを使用して、sldvdemo_cruise_control
モデルのハーネス モデルを作成します。HarnessSource
オプションを Signal Editor
に設定します。
model = 'sldvdemo_cruise_control'; open_system(model); opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.SaveHarnessModel = 'on'; opts.HarnessSource = 'Signal Editor'; opts.HarnessModelFileName = 'sldvdemo_cruise_control_harness'; opts.SaveReport = 'off';
2.テスト ケースの生成
関数 sldvrun
および sldvoptions
を使用してモデルを解析します。
sldvrun('sldvdemo_cruise_control', opts); save_system('sldvdemo_cruise_control_harness');
28-Jan-2025 14:45:20 Checking compatibility for test generation: model 'sldvdemo_cruise_control' Compiling model...done Building model representation...done 28-Jan-2025 14:45:26 'sldvdemo_cruise_control' is compatible for test generation with Simulink Design Verifier. Generating tests using model representation from 28-Jan-2025 14:45:26... ........................ 28-Jan-2025 14:46:23 Completed normally. Generating output files: Harness model: C:\Users\user\OneDrive - MathWorks\Documents\MATLAB\ExampleManager\user.BdocJan.j2834914\sldv-ex99648832\sldv_output\sldvdemo_cruise_control\sldvdemo_cruise_control_harness.slx 28-Jan-2025 14:46:28 Results generation completed. Data file: C:\Users\user\OneDrive - MathWorks\Documents\MATLAB\ExampleManager\user.BdocJan.j2834914\sldv-ex99648832\sldv_output\sldvdemo_cruise_control\sldvdemo_cruise_control_sldvdata.mat
3.1 つにまとめたモデル カバレッジ レポートの生成
Simulink Design Verifier は、Signal Editor のハーネスを複数のシミュレーション モードで自動的に構成します。生成されたテスト ケースをシミュレートし、Test Unit のカバレッジを収集するには、[シミュレーション] ツールストリップ メニューの [すべて実行 (カバレッジ)] ボタンをクリックします。
あるいは、解析によってハーネス モデルが生成されたら、関数 cvtest
および cvsim
を使用する次のコードを使用して、1 つにまとめたモデル カバレッジ レポートを生成できます。
signalEditorBlock = 'sldvdemo_cruise_control_harness/Inputs'; numOfScenarios = str2double(get_param(signalEditorBlock,'NumberOfScenarios')); harnessModel = 'sldvdemo_cruise_control_harness'; test = cvtest(harnessModel); test.modelRefSettings.enable = 'On'; test.modelRefSettings.excludeTopModel = 1; covData = []; for id = 1:numOfScenarios set_param(signalEditorBlock,'ActiveScenario',id); aCovData = cvsim(harnessModel); if isempty(covData) covData = aCovData; else covData = covData + aCovData; end end save_system('sldvdemo_cruise_control_harness'); cvhtml('Coverage_Harness',covData);
オプションで、関数 parsim
を使用する次のコードを使用して、1 つにまとめたモデル カバレッジ レポートを生成することもできます。
signalEditorBlock = 'sldvdemo_cruise_control_harness/Inputs'; numOfScenarios = str2double(get_param(signalEditorBlock,'NumberOfScenarios')); harnessModel = 'sldvdemo_cruise_control_harness'; simIn = Simulink.SimulationInput.empty(0,numOfScenarios); for id = 1:numOfScenarios simIn(id) = Simulink.SimulationInput(harnessModel); simIn(id) = simIn(id).setBlockParameter(signalEditorBlock,'ActiveScenario', id); simIn(id) = simIn(id).setModelParameter('CovEnable', 'on'); simIn(id) = simIn(id).setModelParameter('CovSaveSingleToWorkspaceVar', 'on'); end simOut = parsim(simIn); cvhtml('Coverage_Harness',simOut.covdata);
[28-Jan-2025 14:46:35] Checking for availability of parallel pool... Starting parallel pool (parpool) using the 'Processes' profile ... 28-Jan-2025 14:47:48: Job Running. Waiting for parallel pool workers to connect ... Connected to parallel pool with 8 workers. [28-Jan-2025 14:48:07] Starting Simulink on parallel workers... [28-Jan-2025 14:48:44] Configuring simulation cache folder on parallel workers... [28-Jan-2025 14:48:45] Loading model on parallel workers... [28-Jan-2025 14:50:25] Running simulations... [28-Jan-2025 14:51:00] Completed 1 of 3 simulation runs [28-Jan-2025 14:51:00] Received simulation output (size: 7.48 KB) for run 1 from parallel worker. [28-Jan-2025 14:51:00] Completed 2 of 3 simulation runs [28-Jan-2025 14:51:00] Received simulation output (size: 13.48 KB) for run 2 from parallel worker. [28-Jan-2025 14:51:00] Completed 3 of 3 simulation runs [28-Jan-2025 14:51:00] Received simulation output (size: 13.48 KB) for run 3 from parallel worker. [28-Jan-2025 14:51:00] Cleaning up parallel workers...
カバレッジ レポートには、sldvdemo_cruise_control_model
のすべてのテスト ケースをシミュレートすることにより、100% のカバレッジが達成されたことが示されます。
5.クリーン アップ
% To complete this example, close the models. close_system('sldvdemo_cruise_control_harness', 0); close_system('sldvdemo_cruise_control', 0);