Анализ результатов для анализа мертвой логики

Этот пример демонстрирует, как изолировать потенциальные причины мертвой логики с помощью sldvexCommonCausesOfDeadLogic модель. Обнаружение мертвой логики находит недостижимые цели в модели, которые заставляют элемент модели оставаться неактивным.

Рабочий процесс

sldvexCommonCausesOfDeadLogic модель демонстрирует некоторые общие шаблоны, которые часто приводят к мертвой логике в модели. Эти шесть подсистем в модели представляют различный шаблон. Эти подсистемы:

  1. Условное выполнение подсистемы

  2. Замыкание накоротко логического оператора блокируется во время анализа

  3. Значения параметров, обработанные как onstants

  4. Соединенные библиотекой блоки

  5. Восходящие блоки

  6. Ограничения на диапазоны сигнала

Разделите 1: запустите анализ мертвой логики

Выполните эти шаги, чтобы запустить анализ мертвой логики:

1: Откройте модель sldvexCommonCausesOfDeadLogic.

open_system('sldvexCommonCausesOfDeadLogic');

2: В панели Приложений откройте Верификатор Проекта.

3: На вкладке Design Verifier нажмите Error Detection Settings.

4: В диалоговом окне Configuration Parameters выберите (частичную) Мертвую логику.

5: Во вкладке Design Verifier Нажмите Detect Design Errors.

Разделите 2: анализируйте и рассмотрите результаты

Программное обеспечение анализирует модель для мертвой логики и отображает результаты в окне Results Summary. Результаты показывают, что 19 из этих 44 целей являются мертвой логикой.

Разделите 3: подсветите результаты анализа в блоках Subsystem

Этот раздел объясняет общие шаблоны, которые приводят к мертвой логике в sldvexCommonCausesOfDeadLogic модель. В окне Results Summary нажмите на результаты анализа Highlight на модели. Подсистемы с мертвой логикой подсвечены в красном. Эти подсистемы:

  1. ConditionallyExecuteInputs

  2. ShortCircuiting

  3. Параметры

  4. Библиотека

  5. CascadingDeadLogic

  6. ConditionGreaterThan0

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

1. Условное выполнение подсистемы

Если ваша модель включает Переключатель или Многопортовые блоки switch, и условный входной параметр выполнения ветви устанавливается на On, условное выполнение может часто вызывать неожиданную мертвую логику. Откройте подсистему ConditionallyExecuteInputs и кликните по блоку AND, подсвеченному в красном. Окно Results обобщает мертвую логику.

В этой подсистеме параметр выполнения ветви входа Conditional устанавливается на On. Блок AND Logical Operator условно выполняется, который вызывает мертвую логику для подсистемы.

2. Замыкание накоротко блока логического оператора во время анализа

Simulink Design Verifier обрабатывает логические блоки, как будто они закорачивают при анализе для мертвой логики. Откройте подсистему ShortCircuiting и кликните по блоку AND, подсвеченному в красном. Окно Results обобщает мертвую логику.

В этой модели, если In3 является ложным, программное обеспечение игнорирует третий вход из-за замыкания накоротко. Это предлагается в качестве потенциального объяснения мертвой логики в окне Results.

3. Значения параметров, обработанные как константы

Если ваша модель содержит параметры, Simulink Design Verifier обрабатывает значения как константы по умолчанию, которые могут вызвать мертвую логику в модели. В этих случаях полагайте, что конфигурирование этих параметров настраивается во время анализа. Откройте подсистему ShortCircuiting и кликните по блоку switch, подсвеченному в красном. Окно Results обобщает мертвую логику.

Здесь, все параметры обнуляются. Это вызывает мертвую логику для блока Less Than.

Предложение

Можно использовать Нож Модели, чтобы найти параметры, которые могли оказать влияние на конкретный блок путем выполнения этих шагов:

a. Создайте объект SLSlicerAPI.ParameterDependence, использующего Нож Модели.

slicerObj = slslicer('sldvexCommonCausesOfDeadLogic');
pd = slicerObj.parameterDependence;

b. Найдите параметры, влияющие на блок продукта.

params = parametersAffectingBlock(pd, 'sldvexCommonCausesOfDeadLogic/Parameters/Product');

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

c. Выполните очистку, чтобы выйти из состояния компиляции модели.

slicerObj.terminate;

4. Соединенные библиотекой блоки

Подсистема библиотеки ProtectedDivide имеет защиту для деления на нуль. Библиотечные блоки могут быть записаны с защитными условиями, которые избыточны в некоторых местоположениях, где они используются. В некоторых случаях это может вызвать мертвую логику. Откройте Библиотечный блок и кликните по подсистеме ProtectedDivide, подсвеченной в красном. В этом случае входные параметры к подсистеме библиотеки ProtectedDivide никогда не могут испытывать деление на нуль. Это заставляет логику защиты быть мертвой. Блок Equal показывает мертвую логику. Окно Results обобщает мертвую логику.

Рассмотрите выравнивание по ширине мертвой логики, которая является результатом тех библиотечных блоков.

5. Восходящие блоки

Когда конкретный блок имеет мертвую логику, это часто приводит к каскадному эффекту, который заставляет нисходящие блоки также иметь мертвую логику. Откройте подсистему CascadingDeadLogic и кликните по блоку Less Than, подсвеченному в красном. Окно Results обобщает мертвую логику.

Мертвая логика в блоке Less Than вызывает мертвую логику в соответствующих нисходящих блоках. Поэтому часто полезно рассмотреть восходящую мертвую логику прежде, чем рассмотреть любую нисходящую мертвую логику.

6. Ограничения на диапазоны сигнала

Inport блоки корневого уровня с минимальными и максимальными значениями как ограничения и блоки Условия испытания в генерации тестов могут вызвать мертвую логику. Например, рассмотрите блок switch ConditionGreaterThan0, где второй Inport блок имеет минимальную и максимальную область значений 1 и 100, соответственно. Это заставляет блок switch в этой подсистеме иметь мертвую логику, потому что ограниченная область значений означает, что сигнал всегда будет больше 0.

Разделите 4: просмотрите аналитический отчет

В окне сводных данных Результатов нажмите HTML, чтобы просмотреть отчет детального анализа. Отчет обобщает все результаты мертвой логики в модели.

Чтобы выполнить исчерпывающий анализ для мертвой логики, в Окне Параметров конфигурации в панели Поиска ошибок проектирования, выбирают Run исчерпывающий анализ. Программное обеспечение хранит результаты детального анализа в DeadLogic field в файлах данных Simulink Design Verifier. Можно использовать файл данных, чтобы далее анализировать результаты.

Похожие темы