Этот пример демонстрирует, как изолировать потенциальные причины мертвой логики с помощью sldvexCommonCausesOfDeadLogic
модель. Обнаружение мертвой логики находит недостижимые цели в модели, которые заставляют элемент модели оставаться неактивным.
sldvexCommonCausesOfDeadLogic
модель демонстрирует некоторые общие шаблоны, которые часто приводят к мертвой логике в модели. Эти шесть подсистем в модели представляют различный шаблон. Эти подсистемы:
Условное выполнение подсистемы
Замыкание накоротко логического оператора блокируется во время анализа
Значения параметров, обработанные как onstants
Соединенные библиотекой блоки
Восходящие блоки
Ограничения на диапазоны сигнала
Выполните эти шаги, чтобы запустить анализ мертвой логики:
1: Откройте модель sldvexCommonCausesOfDeadLogic
.
open_system('sldvexCommonCausesOfDeadLogic');
2: В панели Приложений откройте Верификатор Проекта.
3: На вкладке Design Verifier нажмите Error Detection Settings.
4: В диалоговом окне Configuration Parameters выберите (частичную) Мертвую логику.
5: Во вкладке Design Verifier Нажмите Detect Design Errors.
Программное обеспечение анализирует модель для мертвой логики и отображает результаты в окне Results Summary. Результаты показывают, что 19 из этих 44 целей являются мертвой логикой.
Этот раздел объясняет общие шаблоны, которые приводят к мертвой логике в sldvexCommonCausesOfDeadLogic
модель. В окне Results Summary нажмите на результаты анализа Highlight на модели. Подсистемы с мертвой логикой подсвечены в красном. Эти подсистемы:
ConditionallyExecuteInputs
ShortCircuiting
Параметры
Библиотека
CascadingDeadLogic
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.
4. Соединенные библиотекой блоки
Подсистема библиотеки ProtectedDivide имеет защиту для деления на нуль. Библиотечные блоки могут быть записаны с защитными условиями, которые избыточны в некоторых местоположениях, где они используются. В некоторых случаях это может вызвать мертвую логику. Откройте Библиотечный блок и кликните по подсистеме ProtectedDivide, подсвеченной в красном. В этом случае входные параметры к подсистеме библиотеки ProtectedDivide никогда не могут испытывать деление на нуль. Это заставляет логику защиты быть мертвой. Блок Equal показывает мертвую логику. Окно Results обобщает мертвую логику.
Рассмотрите выравнивание по ширине мертвой логики, которая является результатом тех библиотечных блоков.
5. Восходящие блоки
Когда конкретный блок имеет мертвую логику, это часто приводит к каскадному эффекту, который заставляет нисходящие блоки также иметь мертвую логику. Откройте подсистему CascadingDeadLogic и кликните по блоку Less Than, подсвеченному в красном. Окно Results обобщает мертвую логику.
Мертвая логика в блоке Less Than вызывает мертвую логику в соответствующих нисходящих блоках. Поэтому часто полезно рассмотреть восходящую мертвую логику прежде, чем рассмотреть любую нисходящую мертвую логику.
6. Ограничения на диапазоны сигнала
Корневой уровень блоки Inport с минимальными и максимальными значениями как ограничения и блоки Условия испытания в генерации тестов может вызвать мертвую логику. Например, рассмотрите блок switch ConditionGreaterThan0, где второй блок Inport имеет минимальную и максимальную область значений 1 и 100, соответственно. Это заставляет блок switch в этой подсистеме иметь мертвую логику, потому что ограниченная область значений означает, что сигнал всегда будет больше 0.
В окне сводных данных Результатов нажмите HTML, чтобы просмотреть отчет детального анализа. Отчет обобщает все результаты мертвой логики в модели.
Чтобы выполнить исчерпывающий анализ для мертвой логики, в Окне Параметров конфигурации в панели Поиска ошибок проектирования, выбирают Run исчерпывающий анализ. Программное обеспечение хранит результаты детального анализа в DeadLogic field
в файлах данных Simulink Design Verifier. Можно использовать файл данных, чтобы далее анализировать результаты.