Шаблоны модели, которые могут привести к отказам верификации кода

Избыточные шаблоны моделирования

Модели с избыточными шаблонами моделирования не проходят верификацию кода. При генерации кода Simulink® Coder™ устраняет избыточную функциональность блока. Если это исключение приводит к структурному изменению сгенерированного кода, проверка прекращается. Для примера:

  • Переключайте блоки с входами от тех же локальных сигналов. The switch 3 блок устраняется в сгенерированном коде. Блоки Switch switch 1 и switch 2 не устранены, поскольку они соединяются с корневыми входными портами. Simulink Code Inspector™ сообщает, что не удалось проверить.

  • Блок чтения хранилища данных, соединенный с блоком записи хранилища данных. Оба Data Store Read и Data Store Write1 блоки устраняются в сгенерированном коде. Simulink Code Inspector сообщает о состоянии предупреждения.

  • Minmax блокирует с входами от тех же локальных сигналов. Блок сравнивает два эквивалентных значения, получая if оператор с пустым телом в сгенерированном коде. Simulink Code Inspector сообщает, что не удалось проверить.

Блоки с постоянными нефинитными выходами

Если ваша модель содержит блоки с постоянными не конечными выходами, модель может не пройти верификацию кода. Результат: Не удалось проверить.

В этом примере Math Function блок фиксируется в бесконечности. Хотя Simulink Coder генерирует код для модели, верификация кода прекращает работать.

Подсистемы действий с выходом, не соединенным с блоками слияния

Если ваша модель содержит подсистемы действий, и выходы не соединены с одним блоком слияния, модель может не выполнить верификацию кода. Результат: Не удалось проверить.

В этом примере существуют две подсистемы действий, каждая с выходом, соединенным с блоком усиления. Не удалось выполнить проверку кода.

Чтобы пройти верификацию кода, рассмотрите подключение выхода всех подсистем действий к одному блоку слияния, как показано ниже. Simulink Code Inspector может затем проверить модель.

Мультипортовые Блоки switch с входом от того же локального сигнала

Ваша модель может не верификация кода, если она содержит мультипортовый блок switch с обоими:

  • Более одного входы от того же локального сигнала.

  • Выход на локальный сигнал.

Сгенерированный код может иметь операторы обращения с падением выражений случая. Результат: Не удалось проверить.

В этом примере Multiport Switch блочные входные порты 1 и 3 соединяются с одним и тем же локальным сигналом. Не удалось выполнить проверку кода.

Модели, запускающие оптимизацию кода, чтобы избежать копий данных

Модели с Assignment, Selector или двухпортовыми блоками Multiport Switch могут инициировать оптимизацию, которая изменяет выбор индекса, чтобы избежать копий данных в сгенерированном коде. В этом примере OneBased Мультипортовый Блок switch имеет два входных порта. The Gain5 блок умножает сигнал на входной порт 2:

Во время генерации кода оптимизация перемещает Gain5 чтобы избежать копий данных в сгенерированном коде:

Не удалось выполнить проверку кода.

Моделируйте опорный блок с оконечным выходом

Если ваша модель удовлетворяет каждому из следующих условий, модель может не пройти верификацию кода:

  • Модель содержит блок модели-ссылки.

  • Блок модель-ссылка имеет один выходной порт, который отключен.

  • Управление прототипом функции используется в блоке модели-ссылки, в результате чего порт возврата определяется как оконечный порт.

Похожие темы