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

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

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

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

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

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

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

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

  3. В диалоговом окне Configuration Parameters, в панели Design Error Detection, избранных нарушениях прав доступа Хранилища данных. Нажмите OK.

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

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

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

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

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

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

open_system('sldvexDataStoreAccessViolations');

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

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

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

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

Шаг 4: рассмотрите результаты анализа

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

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

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

(3) Чтобы симулировать тест, в блоке Signal Builder, нажимают симуляцию Start. После того, как симуляция завершается, окно 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: зафиксируйте ошибку нарушения прав доступа хранилища данных

Цель чтения перед записью заканчивается по ошибке, потому что никакой блок не был записан в "бета" хранилище данных, прежде чем операция чтения выполнится.

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

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

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

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

Похожие темы