Simulink® Design Verifier™ поддерживает генерацию теста для кода, сгенерированного с Embedded Coder®. Simulink Design Verifier также поддерживает выявление ошибок, генерацию теста и свойство, доказывающее для S-функций что:
Legacy Code Tool генерирует с def.Options.supportCoverageAndDesignVerifier
установите на истину.
Разработчик S-функции генерирует с выбранным On Enable support for Design Verifier вкладки Build Info диалогового окна S-Function Builder.
Функция slcovmex
компиляции, с опцией -sldv
переданный функции при компиляции S-функции.
Для получения дополнительной информации о трех подходах займитесь S-функциями MEX C.
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
.
Simulink Design Verifier поддерживает следующие ошибки проектирования для кода C/C++ и S-функции:
Мертвая логика включая активную логику.
Массив за пределы. Это включает указатель за пределы в случае C/C++.
Деление на нуль.
При выполнении свойства, доказывающего или анализа генерации тестов для моделей с активированными 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