Предположения генерации контрольного кода

Генератор кода реализует предположения, которые зависят, например, на настройках аппаратной реализации для вашей модели. Важно проверять, что предположения допустимы для вашего целевого компьютера. Используйте функцию buildStandaloneCoderAssumptions, чтобы создать приложение, которое выполняет проверки предположения на вашем целевом компьютере.

Когда вы конфигурируете свою модель, попытайтесь задать аппаратную реализацию и настройки конфигурации сборки, которые совпадают с вашим целевым компьютером. Затем к предположениям генератора контрольного кода для вашего целевого компьютера используйте этот рабочий процесс:

  1. С набором GenerateReport к 'on', сборка (Ctrl+B) ваша модель.

  2. Чтобы просмотреть список предположений генератора кода, что можно проверять, откройте отчет генерации кода и щелкните по ссылке Coder Assumptions.

    Для получения дополнительной информации см. Список Предположений Кодера.

  3. Запустите buildStandaloneCoderAssumptions, который использует сгенерированный код в папке сборки, чтобы создать приложение, которое осуществляет проверки предположения генерации кода.

  4. Загрузите приложение на целевой компьютер или целевое окружение, и затем запустите приложение.

  5. В то время как выполнение приложения, используйте отладчик, чтобы просмотреть результаты проверки, которые находятся в структуре данных.

Предположения генератора контрольного кода для компьютера разработчика

Если целевой компьютер является, например, вашим компьютером Windows®development, можно использовать Microsoft® Visual Studio®, чтобы запустить и отладить приложение:

  1. Чтобы открыть модель, в Командном окне, вводят rtwdemo_sil_topmodel.

  2. На Configuration Parameters> панель Hardware Implementation, задайте настройки, чтобы совпадать с целевым компьютером. Например, для 64-битного компьютера Windows задают эти настройки:

    • Device vendorIntel

    • Device typex86-64 (Windows 64)

  3. На Configuration Parameters> Code Generation> панель Verification, снимите флажок Enable portable word sizes.

  4. Создайте модель (Ctrl+B).

  5. Чтобы просмотреть список предположений генератора кода, выберите Code> C/C++ Code> Code Generation Report> Open Model Report и щелкните по ссылке Coder Assumptions.

  6. Из Командного окна, в рабочей папке, выполнении:

    buildStandaloneCoderAssumptions('rtwdemo_sil_topmodel_ert_rtw')
    В папке сборки функция создает подпапку coderassumptions\standalone, которая содержит целевое приложение, rtwdemo_sil_topmodel_ca.

  7. Открытый Microsoft Visual Studio и выбирает File> Open> Project/Solution

  8. Используя диалоговое окно Open Project, перейдите к подпапке coderassumptions\standalone и выберите rtwdemo_sil_topmodel_ca. Затем нажмите Open.

  9. Выберите File> Open> File. Используя диалоговое окно Open File, выберите coderassumptions\standalone\rtwdemo_sil_topmodel_ca.c

  10. В операторе return вставьте точку останова.

  11. Выберите Debug> Start Debugging.

  12. Чтобы проверить предположения генератора кода, используйте окно Watch, чтобы осмотреть структуру данных Results:

    1. В коде rtwdemo_sil_topmodel_ca.c щелкните правой кнопкой по Results.

    2. Из контекстного меню выберите Add Watch.

Переменные в структуре данных содержат:

  • Проверяйте результаты (TestResults)

  • Истины целевого компьютера (ActualValues)

  • Предположения генератора кода (ExpectedValues)

Например, если предположение генератора кода для bitsPerChar точно, вы видите значение CA_PASS в переменной status.

Список предположений кодера

Раздел содержимого отчета генерации кода имеет ссылку на страницу Coder Assumptions. Страница предоставляет список:

  • Предположения генерации кода, что можно проверять

  • Ожидаемые результаты для проверок предположения

Эта таблица описывает метки, которые вы видите в списке.

КатегорияМеткаПредположение можно проверять
Настройка Языка C/C++ для Целевого компьютера или Компьютера разработчика

BitPerChar

Количество битов на char (ProdBitPerChar)

BitPerShort

Количество битов на short (ProdBitPerShort)

BitPerInt

Количество битов на int (ProdBitPerInt)

BitPerLong

Количество битов на long (ProdBitPerLong)

BitPerFloat

Размер float (Только если PurelyIntegerCode является 'off'),

BitPerDouble

Размер double (Только если PurelyIntegerCode является ‘off’),

BitPerPointer

Количество битов на pointer (ProdBitPerPointer)

BitPerSizeT

Количество битов на size_t (ProdBitPerSizeT)

BitPerPtrDiffT

Количество битов на ptrdiff_t (ProdBitPerPtrDiffT)

Endianess

Порядок байтов (ProdEndianess)

Shift right for signed integer is arithmetic shift

Поведение знакового бита (ProdShiftRightIntArith)

Signed integer division rounds to

Округление поведения для целочисленного деления (ProdIntDivRoundTo)

Стандарт Языка C/C++

Initial value of a global integer variable is zero

Нулевая инициализация памяти (ZeroExternalMemoryAtStartup и ZeroInternalMemoryAtStartup)

Числа с плавающей запятой

Flush-to-zero computed subnormal values (FTZ)

Обработка номера поднормали сброса к нулю

Flush-to-zero incoming subnormal values (DAZ)

Обработка номера поднормали Denormals-are-zero

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

Похожие темы