exponenta event banner

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

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

  • Сгенерировано с помощью инструмента «Устаревший код», с def.Options.supportCoverageAndDesignVerifier установить в значение true,

  • Сгенерировано с помощью SFunterBuilder, при этом на вкладке «Сведения о построении» диалогового окна SFunterBuilder выбрана опция «Включить поддержку программы Design Verifier», или

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

Скомпилировать S-функцию для совместимости с Simulink ® Design Verifier™

Рукописная функция S-Function находится в файле sldvexSFuncterHandlingSFcn.c, а исходный код пользователя для таблицы подстановки - в файле sldvexSFundingHandlingSource.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/BR2021ad/build/matlab/toolbox/sldv/sldvdemos/src /tmp/BR2021ad_1584584_202060/publish_examples0/tp8f51121e_f04d_490a_bcb4_952f498744f6/tp57accc3f_03e9_4d00_92f2_fcef79da1edd.c /tmp/BR2021ad_1584584_202060/publish_examples0/tp8f51121e_f04d_490a_bcb4_952f498744f6/tpc6bcde43_6ef3_4386_8ec6_4e751d4d46a6.c -L/mathworks/devel/bat/BR2021ad/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/sldv/sldvdemos/src /mathworks/devel/bat/BR2021ad/build/matlab/toolbox/sldv/sldvdemos/src/sldvexSFunctionHandlingSource.c /tmp/BR2021ad_1584584_202060/publish_examples0/tp8f51121e_f04d_490a_bcb4_952f498744f6/sldvexSFunctionHandlingSFcn.c /tmp/BR2021ad_1584584_202060/publish_examples0/tp8f51121e_f04d_490a_bcb4_952f498744f6/tp70656e5d_882b_462b_b516_5e349c2639ad.c /tmp/BR2021ad_1584584_202060/publish_examples0/tp8f51121e_f04d_490a_bcb4_952f498744f6/tp080af00e_5b96_4e0c_a549_4dcaccc9f497.c -L/mathworks/devel/bat/BR2021ad/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.

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

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

open_system('sldvexSFunctionHandlingExample');

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'ConditionDecision';
opts.SaveHarnessModel = 'off';
opts.SaveReport = 'off';
opts.SFcnSupport = 'on';

[status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts, true);

Проверка полного покрытия

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

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

Очистить

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

close_system('sldvexSFunctionHandlingExample', 0);