В этом примере показано, как создать отчет о покрытии модели путем моделирования модели тестового кабеля с помощью блока «Входы редактора сигналов». Можно смоделировать один тестовый случай или контрпример, выбрав активный сценарий в диалоговом окне «Редактор сигналов». Дополнительные сведения см. в разделе Моделирование модели кабелей с помощью блока входов редактора сигналов.
Для моделирования всех тестовых случаев и измерения их комбинированного покрытия модели используйте cvsim или parsim команда.
В этом примере модель электрического жгута генерируется путем выбора редактора сигналов в качестве источника электрического жгута. Сценарии редактора сигналов состоят из источников сигналов, связанных с тестовыми случаями или контрпримерами. Затем для создания комбинированного отчета о покрытии модели следует смоделировать все сценарии с помощью cvsim или parsim функция.
Создание модели кабельных трасс для sldvdemo_cruise_control с помощью sldvharnessopts варианты. Установите 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';

Проанализируйте модель с помощью sldvrun функции и sldvoptions.
sldvrun('sldvdemo_cruise_control', opts); save_system('sldvdemo_cruise_control_harness');
Checking compatibility for test generation: model 'sldvdemo_cruise_control'
Compiling model...done
Building model representation...done
'sldvdemo_cruise_control' is compatible for test generation with Simulink Design Verifier.
Generating tests using model representation from 27-Jan-2021 09:44:07...
........................
Completed normally.
Generating output files:
Harness model:
/tmp/BR2021ad_1584584_202060/publish_examples4/tp686bd2dc/ex99648832/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_harness.slx
Results generation completed.
Data file:
/tmp/BR2021ad_1584584_202060/publish_examples4/tp686bd2dc/ex99648832/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_sldvdata.mat

После того как анализ создаст модель кабельных трасс, используйте этот код, который использует cvtest и cvsim для создания сводного отчета об охвате модели.
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 для создания сводного отчета о покрытии модели.
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);
[27-Jan-2021 09:44:28] Checking for availability of parallel pool... Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 12). [27-Jan-2021 09:45:12] Starting Simulink on parallel workers... [27-Jan-2021 09:46:08] Configuring simulation cache folder on parallel workers... [27-Jan-2021 09:46:09] Loading model on parallel workers... [27-Jan-2021 09:46:40] Running simulations... [27-Jan-2021 09:46:55] Completed 1 of 3 simulation runs [27-Jan-2021 09:46:55] Completed 2 of 3 simulation runs [27-Jan-2021 09:46:55] Completed 3 of 3 simulation runs [27-Jan-2021 09:46:55] Cleaning up parallel workers...
Отчет о покрытии указывает, что 100% покрытие достигается путем моделирования всех тестовых случаев для sldvdemo_cruise_control_model.

% To complete this example, close the models. close_system('sldvdemo_cruise_control_harness', 0); close_system('sldvdemo_cruise_control', 0);