Конфигурирование S-функции для генерации теста

В этом примере показано, как скомпилировать S-функцию, чтобы быть совместимым с Simulink® Design Verifier™ для генерации теста. SLDV поддерживает S-функции, которые являются:

  • Сгенерированный с Legacy Code Tool, с def.Options.supportCoverageAndDesignVerifier установите на true,

  • Сгенерированный с SFunctionBuilder, с Включают поддержку выбранного On Верификатора Проекта вкладки Build Info диалогового окна SFunctionBuilder, или

  • Скомпилированный с функцией slcovmex, с опцией -sldv переданный.

Скомпилируйте S-функцию, чтобы быть совместимыми с Simulink® Design Verifier™

Рукописная S-функция найдена в файле sldvexSFunctionHandlingSFcn.c, и пользовательский исходный код для интерполяционной таблицы найден в файле sldvexSFunctionHandlingSource.c. Вызовите функцию slcovmex, чтобы скомпилировать S-функцию C-MEX и сделать его совместимым с SLDV.

slcovmex('-sldv', ...
        '-output', 'sldvexSFunctionHandlingSFcn',...
        ['-I', fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src')], ...
        fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src', 'sldvexSFunctionHandlingSource.c'),...
        fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src', 'sldvexSFunctionHandlingSFcn.c') ...
        );
mex -I/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/sldv/sldvdemos/src /tmp/BR2020ad_1302590_239645/publish_examples1/tp47a1a61d_d431_416e_8486_d1f288cc95b4/tp823bd7c1_5656_4ff4_acac_19bdf4301197.c /tmp/BR2020ad_1302590_239645/publish_examples1/tp47a1a61d_d431_416e_8486_d1f288cc95b4/tpbeb71fba_255f_4389_872c_b33368462fd5.c -L/mathworks/devel/bat/BR2020ad/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/sldv/sldvdemos/src /mathworks/devel/bat/BR2020ad/build/matlab/toolbox/sldv/sldvdemos/src/sldvexSFunctionHandlingSource.c /tmp/BR2020ad_1302590_239645/publish_examples1/tp47a1a61d_d431_416e_8486_d1f288cc95b4/sldvexSFunctionHandlingSFcn.c /tmp/BR2020ad_1302590_239645/publish_examples1/tp47a1a61d_d431_416e_8486_d1f288cc95b4/tpcced4e1d_1ad7_48c7_9d68_e2caa95fcbd1.c /tmp/BR2020ad_1302590_239645/publish_examples1/tp47a1a61d_d431_416e_8486_d1f288cc95b4/tp93fbf994_7f20_49f5_84bb_3759fdb9ea75.c -L/mathworks/devel/bat/BR2020ad/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.

Создание тестового набора

Модель в качестве примера sldvexSFunctionHandlingExample пример содержит рукописную S-функцию, которая реализует алгоритм интерполяционной таблицы. Блок s-function возвращает интерполированное значение в первом выходном порту и возвращает состояние интерполяции во втором выходном порту. Второй выходной порт возвращает значение -1 если более низкое насыщение происходит, 1 если верхнее насыщение происходит, и 0 в противном случае. Откройте sldvexSFunctionHandlingExample модель и сконфигурируйте аналитические опции путем включения поддержки S-функции генерации тестов. При выполнении анализа Simulink® Design Verifier™ возвращает тестовый набор, который удовлетворяет всем целям покрытия.

open_system('sldvexSFunctionHandlingExample');

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'Condition';
opts.SaveHarnessModel = 'off';
opts.SaveReport = 'off';
opts.SFcnSupport = 'on';
opts.MaxProcessTime = 2*opts.MaxProcessTime;

[status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts);
Checking compatibility for test generation: model 'sldvexSFunctionHandlingExample'
Compiling model...done
Building model representation...done

'sldvexSFunctionHandlingExample' is compatible for test generation with Simulink Design Verifier.

Generating tests using model representation from 30-Jan-2020 01:04:20...
.............

Completed normally.

Generating output files:

Results generation completed.

    Data file:
    /tmp/BR2020ad_1302590_239645/publish_examples1/tpd90b4db7/ex16001120/sldv_output/sldvexSFunctionHandlingExample/sldvexSFunctionHandlingExample_sldvdata.mat

Проверка полного обзора

sldvruntest функция проверяет, что тестовый набор достигает полного покрытия модели. cvhtml функция представляет отчет покрытия, который указывает, что 100%-е покрытие Условия достигается со сгенерированными тестовыми векторами.

[~, finalCov] = sldvruntest('sldvexSFunctionHandlingExample', fileNames.DataFile, [], true);
cvhtml('Final Coverage', finalCov);

Очистка

Чтобы завершить пример, закройте модель.

close_system('sldvexSFunctionHandlingExample', 0);