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

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

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.

Поддержите ограничения для кода 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.

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

  • Мертвая логика включая активную логику.

  • Массив за пределы. Это включает указатель за пределы в случае C/C++.

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

Обработайте энергозависимые переменные как нормальные переменные

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

Факторы для Включения 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-функции содержат чувствительный исходный код.

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

|