Поддержите ограничения и факторы для кода C/C++ и S-функций

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

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).

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

  • 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++ в Simulink Design Verifier

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

Смотрите также

|