Анализ обнаружения ошибок конструкции Simulink ® Design Verifier™ определяет непреднамеренные последовательности операций чтения и записи в хранилище данных, которые происходят во время моделирования. Анализ обнаруживает следующие нарушения доступа к хранилищу данных:
Чтение перед записью
Запись после чтения
Запись после записи
Чтобы обнаружить нарушения доступа к хранилищу данных в модели, выполните следующие действия.
На вкладке Design Verifier в разделе Mode выберите Design Error Detection.
Щелкните Параметры обнаружения ошибок.
В диалоговом окне «Параметры конфигурации» на панели «Обнаружение ошибок конструкции» выберите «Нарушения доступа к хранилищу данных». Нажмите кнопку ОК.
Щелкните Обнаружить ошибки конструкции (Detect Design Errors).
После завершения анализа программа подсвечивает модель с результатами анализа, а в окне Сводка результатов (Results Summary) отображается сводка анализа.
В этом примере показано, как обнаружить нарушения доступа к хранилищу данных и просмотреть результаты анализа. sldvexDataStoreAccessViolations пример модели состоит из блоков памяти хранилища данных, которые определяют alpha и beta хранилища данных. В примерной модели Write Subsystem записывает данные в хранилище данных с помощью блоков записи хранилища данных и Read Subsystem считывает данные из хранилища данных с помощью блоков чтения хранилища данных.
Шаг 1: Открытие модели
В командной строке введите:
open_system('sldvexDataStoreAccessViolations');

Шаг 2: Настройка параметров анализа для обнаружения нарушений доступа к хранилищу данных
Модель предварительно сконфигурирована с параметром Нарушения доступа к хранилищу данных, равным On.
Шаг 3: Выполнение анализа обнаружения ошибок проекта
На вкладке «Проверка проекта» выберите «Обнаружение ошибок проекта». Simulink Design Verifier анализирует модель на наличие нарушений доступа к хранилищу данных. После завершения анализа в окне Сводка результатов (Results Summary) будет показано, что одна цель была сфальсифицирована.
Шаг 4: Анализ результатов анализа
Модель подсвечивается результатами анализа.
(1) Откройте окно Read Subsystem и нажмите Data Store Read1 блок, выделенный красным цветом. В окне Инспектор результатов (Results Inspector) отображается цель Чтение перед записью (Read-before-write), которая нарушает порядок доступа к хранилищу данных.

(2) Чтобы просмотреть тестовый случай, реплицирующий ошибку, щелкните Просмотр тестового случая. Откроется модель электрического жгута и блок Построитель сигналов, в котором отображается тестовый пример.
(3) Для моделирования тестового случая в диалоговом окне Signal Builder нажмите кнопку Start simulation. После завершения моделирования в окне Diagnostic Viewer появится следующее предупреждение:
The block 'sldvexDataStoreAccessViolations_harness/Test Unit (copied from sldvexDataStoreAccessViolations)/Read Subsystem/Data Store Read1' is reading from the data store 'sldvexDataStoreAccessViolations_harness/Test Unit (copied from sldvexDataStoreAccessViolations)/Data Store Memory1' before any blocks have written to this entire region of memory at time 0.0. For performance reasons, occurrences of this diagnostic for this memory at other simulation time steps will be suppressed.
Шаг 5: Исправление ошибки нарушения доступа к хранилищу данных
Цель чтения до записи приводит к ошибке, поскольку ни один блок не был записан в beta сохранение данных перед выполнением операции считывания.
Откройте окно Write Subsystem и дважды щелкните Write "alpha". В Write "alpha" подсистема, только alpha хранилище данных записывается с постоянным значением. Следовательно, нарушение доступа к хранилищу данных перед записью происходит для «бета» блока чтения хранилища данных.
Чтобы исправить ошибку, в Write "alpha" подсистема, добавьте Constant блокировать и записывать его значение в beta с помощью блока записи хранилища данных (выделен на рисунке ниже).

На вкладке «Проверка проекта» выберите «Обнаружение ошибок проекта». После завершения анализа программное обеспечение сообщает, что все цели действительны.
См. также