Обнаружение нарушений доступа к хранилищу данных

Simulink® Design Verifier™ поиска ошибок проектирования анализ идентифицирует непреднамеренные последовательности чтения и записи хранилища данных, которые происходят во время симуляции. Анализ обнаруживает следующие нарушения доступа к хранилищу данных:

  • Чтение-перед-записать

  • Запись после чтения

  • Запись-после-запись

Чтобы обнаружить нарушения доступа к хранилищу данных в вашей модели:

  1. На вкладке Design Verifier, в разделе Mode, выберите Design Error Detection.

  2. Нажмите Error Detection Settings.

  3. В диалоговом окне Параметры конфигурации на панели Design Error Detection выберите Нарушения доступа к хранилищу данных. Нажмите OK.

  4. Нажмите Detect Design Errors.

После завершения анализа программное обеспечение подсвечивает модель с результатами анализа, а в окне Сводка результатов (Results Summary) отображаются сводные данные анализа.

Обнаружение нарушений доступа к хранилищу данных в модели

В этом примере показано, как обнаружить нарушения доступа к хранилищу данных и просмотреть результаты анализа. The sldvexDataStoreAccessViolations модель примера состоит из блоков памяти хранилища данных, которые определяют alpha и beta хранилища данных. В модели примера Write Subsystem записывает данные в хранилище данных с помощью блоков Data Store Write и Read Subsystem считывает данные из хранилища данных с помощью блоков Data Store Read.

Шаг 1: Откройте модель

В командной строке введите:

open_system('sldvexDataStoreAccessViolations');

Шаг 2. Настройте опции анализа, чтобы обнаружить нарушения доступа к хранилищу данных

Модель предварительно сконфигурирована с нарушениями доступа к хранилищу Данных, набору параметров для On.

Шаг 3: Выполните Поиск ошибок проектирования анализ

На вкладке Design Verifier нажмите Detect Ошибки Проектирования. Simulink Design Verifier анализирует модель на нарушения доступа к хранилищу данных. После завершения анализа в окне Сводных данных результатов отображается, что одна цель была сфальсифицирована.

Шаг 4: Обзор результатов анализа

Модель подсвечивается результатами анализа.

(1) Откройте Read Subsystem и нажмите Data Store Read1 блок, выделенный красным цветом. В окне Results Inspector отображается цель Read-before-write, которая нарушает порядок доступа к хранилищу данных.

(2) Чтобы просмотреть контрольный пример, который наследует ошибку, нажмите View тест. Откроется модели тестовой обвязки и блок Signal Builder, который отображает тест.

(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 хранилище данных перед выполнением операции read.

Откройте Write Subsystem и дважды кликните Write "alpha". В Write "alpha" подсистема, только alpha хранилище данных записывается с постоянным значением. Следовательно, нарушение доступа к хранилищу данных перед чтением и записью происходит для блока «бета» Data Store Read.

Чтобы исправить ошибку, в Write "alpha" подсистема, добавление Constant блокируйте и записывайте его значение в beta хранилище данных с помощью блока Data Store Write (выделено на рисунке ниже).

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

См. также

Похожие темы