В этом примере показано, как скомпилировать S-функцию, чтобы быть совместимой с Simulink ® Design Verifier™ для генерации теста. SLDV поддерживает S-функции, которые:
Сгенерирован с помощью Legacy Code Tool, с def.Options.supportCoverageAndDesignVerifier
установлено на true
,
Сгенерирован с помощью SFunctionBuilder, с Включенной поддержкой Design Verifier, выбранной на вкладке Build Info диалогового окна SFunctionBuilder, или
Скомпилирован с функцией slcovmex, с опцией -sldv
прошел.
Рукописная функция S-Function находится в файле sldvex SF unction Handling SF cn.c, а исходный код пользователя для интерполяционной таблицы - в файле sldvex SF unction Handling Source.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.
Пример модели sldvexSFunctionHandlingExample содержит рукописную S-функцию, которая реализует алгоритм интерполяционной таблицы. Блок S-Function возвращает интерполированное значение в первом выходном порте и возвращает состояние интерполяции во втором выходном порту. Второй выходной порт возвращает значение -1
если происходит более низкое насыщение, 1
если происходит верхнее насыщение, и 0
в противном случае. Откройте модель sldvexSFunctionHandlingExample и сконфигурируйте опции анализа, включив поддержку 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);
The sldvruntest
функция проверяет, что тестовый набор достигает полного покрытия модели. The cvhtml
функция создает отчет о покрытии, который указывает 100% Условия и Decision Coverage достигается с сгенерированными тестовыми векторами.
[~, finalCov] = sldvruntest('sldvexSFunctionHandlingExample', fileNames.DataFile, [], true); cvhtml('Final Coverage', finalCov);
Чтобы завершить демонстрацию, закройте все модели.
close_system('sldvexSFunctionHandlingExample', 0);