exponenta event banner

Ограничения и соображения по поддержке S-функций и кода C/C + +

Включение S-функций в Simulink Design Verifier

Simulink ® Design Verifier™ поддерживает создание тестовых примеров для кода, созданного с помощью Embedded Coder ®. Simulink Design Verifier также поддерживает обнаружение ошибок, создание тестовых примеров и проверку свойств для S-функций, которые:

  • Инструмент устаревшего кода создает с помощью def.Options.supportCoverageAndDesignVerifier значение равно true.

  • S-Function Builder создает с включенной поддержкой Design Verifier, выбранной на вкладке Build Info диалогового окна S-Function Builder.

  • Функция slcovmex компилирует, с опцией -sldv передается функции при компиляции S-функции.

Дополнительные сведения о трех подходах см. в разделе О C MEX S-функциях.

Ограничения поддержки S-функций и кода C/C + +

  • Simulink Design Verifier не поддерживает S-функции или код C/C + +, содержащий:

    • Непрерывные состояния. Simulink Design Verifier не анализирует такой код.

    • Функции пересечения нуля. Simulink Design Verifier игнорирует такой код во время анализа.

    • Константы, описывающие объекты INF или NaN. Simulink Design Verifier рассматривает такой код как содержащий ошибки переполнения с плавающей запятой. Хотя анализ Simulink Design Verifier не может определить тип ошибки переполнения для таких случаев, анализ может определить, какие строки кода вносят несовместимость. Polyspace ® может предоставить дополнительную информацию о том, почему код содержит ошибки переполнения с плавающей запятой.

  • Необходимо указать, что сигнальные элементы, входящие в порты S-Functions, скомпилированы с slcovmex являются смежными. Используйте SimStruct функция ssSetInputPortRequiredContiguous.

Simulink Design Verifier поддерживает следующие ошибки проектирования для S-функций и кода C/C + +:

  • Неработоспособная логика, включая активную логику.

  • Массив вне границ. Это включает указатель вне границ в случае C/C + +.

  • Деление на ноль.

Обрабатывать летучие переменные как обычные переменные

Программа Simulink Design Verifier позволяет использовать в качестве обычных переменных вариант, при котором энергозависимые переменные блокируются или обрабатываются. При выборе параметра Ignore the volatile qualifier летучие элементы будут обрабатываться так же, как и нелетучие элементы. Отмена выбора параметра Ignore the volatile qualifier вернет к предыдущему поведению ограничения доступа к изменчивым элементам.

Рекомендации по включению S-функций и кода C/C + + в Simulink Design Verifier

  • При выполнении проверки свойств или анализа генерации тестов для моделей с включенными S-функциями или кодом C/C + +, созданными с помощью встроенного кодера, 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 + +, таких как:

    • Вызовы библиотечных функций (функция библиотеки заменяется заглушкой).

    • Сложные операции с указателями.

    • Приводит к несовместимым или неизвестным типам указателей или из них.

    Модели, содержащие такие конструкции, помечены как частично совместимые.

Защита исходного кода

Для анализа содержимого S-функции в совместно используемом объекте хранится информация о реализации S-функции, включая информацию, полученную из исходного кода. Хотя эта информация не доступна непосредственно пользователям, рекомендуется отключить поддержку Simulink Design Verifier для S-функций в моделях, которые выпускаются извне, если S-функции содержат чувствительный исходный код.

См. также

|