Simulink® Design Verifier™ поддерживает генерацию тестов для кода, сгенерированного Embedded Coder®. Simulink Design Verifier также поддерживает выявление ошибок, генерацию тестов и проверку свойств для S-функций, которые:
Legacy Code Tool генерирует, с def.Options.supportCoverageAndDesignVerifier
установите значение true.
S-Function Builder генерирует, с Enable support for Design Verifier, выбранными на вкладке Build Info диалогового окна S-Function Builder.
Функция slcovmex
компилирует, с опцией -sldv
передается в функцию при компиляции S-функции.
Для получения дополнительной информации о трех подходах смотрите О C MEX S-Functions.
Simulink Design Verifier не поддерживает S-функции или код C/C + +, содержащий:
Непрерывные состояния. Simulink Design Verifier не анализирует такой код.
Функции пересечения нулем. Simulink Design Verifier игнорирует такой код во время анализа.
Константы, которые описывают объекты INF или NaN. Simulink Design Verifier рассматривает такой код как содержащий ошибки переполнения с плавающей точкой. Несмотря на то, что анализ Simulink Design Verifier не может определить тип ошибки переполнения для таких случаев, анализ может определить, какие строки кода вводят несовместимость. Polyspace® может предоставить дополнительные сведения о том, почему код содержит ошибки переполнения с плавающей точкой.
Вы должны задать, что элементы сигнала, входящие в порты S-функций, скомпилированы с slcovmex
являются смежными. Используйте SimStruct
функция ssSetInportPortRequiredContiguous.
Simulink Design Verifier поддерживает следующие ошибки проектирования для кода S-Function и C/C + +:
Мертвая логика, включая активную логику.
Массив вне границ. Это включает указатель вне границ в случае C/C + +.
Деление на нули.
Simulink Design Verifier позволяет упрямить или обработать опцию для переменных с изменяющимися состояниями как нормальные. При выборе параметра Ignore the volatile qualifier летучие элементы будут обрабатываться так же, как и энергонезависимые элементы. Отмена выбора Ignore the volatile qualifier вернется к предыдущему поведению упругого доступа к летучим элементам.
При выполнении проверки свойств или анализа генерации тестов для моделей с активированным кодом S-Functions или 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 Сгенерированного кода