Simulink® Design Verifier™ поддерживает генерацию теста для кода, сгенерированного с Embedded Coder®. Simulink Design Verifier также поддерживает выявление ошибок, генерацию теста и свойство, доказывающее для S-функций что:
Legacy Code Tool генерирует с набором def.Options.supportCoverageAndDesignVerifier
к истине.
Разработчик S-функции генерирует с Enable support for Design Verifier, выбранным на вкладке Build Info диалогового окна S-Function Builder.
Функциональные компиляции slcovmex
, с опцией -sldv
передал функции при компиляции S-функции.
Для получения дополнительной информации о трех подходах займитесь S-функциями MEX C (Simulink).
Simulink Design Verifier не поддерживает S-функции или код C/C++, содержащий:
Непрерывные состояния. Simulink Design Verifier не анализирует такой код.
Функции пересечения нулем. Simulink Design Verifier игнорирует такой код во время анализа.
Константы, которые описывают объекты NaN или INF. Simulink Design Verifier рассматривает такой код как содержание ошибок переполнения с плавающей точкой. Несмотря на то, что анализ Simulink Design Verifier не может определить тип ошибки переполнения для таких случаев, анализ может определить, какие строки кода вводят несовместимость. Polyspace® может предоставить больше информации о том, почему ваш код содержит ошибки переполнения с плавающей точкой.
Необходимо указать, что элементы сигнала, вводящие порты S-функций, скомпилированных с slcovmex
, непрерывны. Используйте функцию SimStruct
ssSetInputPortRequiredContiguous
.
При выполнении свойства, доказывающего или анализа генерации тестов для моделей с активированными S-функциями или кода C/C++, сгенерированного с Embedded Coder, Simulink Design Verifier принимает, что код не содержит ошибок времени выполнения. В случае, где код содержит ошибки времени выполнения (деление на нуль, доступ к неинициализированным переменным, массив за пределы, и так далее), доказательство свойства или анализ генерации тестов могут привести к неправильным результатам. Код, что Polyspace оказывается свободным от ошибок времени выполнения, предоставляет правильные результаты в анализе Simulink Design Verifier.
Если Simulink Design Verifier не может определить размер массивов в вашем коде (например, для массивов, которые динамически выделяются с непостоянным размером), Simulink Design Verifier принимает верхнюю границу для массива. Гарантируйте, что данная верхняя граница является соответствующей.
Если вы не включаете поддержку Simulink Design Verifier S-функции, Simulink Design Verifier блокирует S-функцию. С включенной поддержкой S-функции Simulink Design Verifier анализировал содержимое S-функции, чтобы получить более подробную информацию. Иногда, Simulink Design Verifier внутренне блокирует S-функцию. Внутренние тупики могут быть результатом различных построений C/C++, таких как:
Вызовы библиотечных функций (библиотечная функция заменяется тупиком).
Комплексные операции указателя.
Броски к или от несовместимых или неизвестных типов указателей.
Модели, содержащие такие построения, маркированы Partially compatible.
Чтобы анализировать содержимое S-функции, информация о реализации S-функции, включая информацию, выведенную из исходного кода, хранится в общем объекте. Несмотря на то, что эта информация не непосредственно доступна пользователям, считайте отключение поддержкой Simulink Design Verifier S-функций в моделях, которые выпущены внешне, если S-функции содержат чувствительный исходный код.
Конфигурирование S-функции для генерации теста | Сгенерируйте тесты для сгенерированного кода Embedded Coder