Логическая оптимизация — это процесс поиска эквивалентного представления указанной логической схемы при одном или нескольких указанных ограничениях. Этот процесс является частью логического синтеза, применяемого в цифровой электронике и проектировании интегральных схем .
Как правило, схема ограничена минимальной площадью чипа, соответствующей предопределенной задержке отклика. Целью логической оптимизации данной схемы является получение наименьшей логической схемы , которая оценивает те же значения, что и исходная. [1] Обычно меньшая схема с той же функцией дешевле, [2] занимает меньше места, потребляет меньше энергии , имеет меньшую задержку и сводит к минимуму риски неожиданных перекрестных помех , опасность задержки обработки сигнала и другие проблемы, присутствующие на наноуровне металлических структур на интегральной схеме .
В терминах булевой алгебры оптимизация сложного булева выражения представляет собой процесс нахождения более простого выражения, которое при оценке в конечном итоге даст те же результаты, что и исходное.
Проблема со сложной схемой (т. е. со многими элементами, такими как логические вентили ) заключается в том, что каждый элемент занимает физическое пространство и требует времени и денег на производство. Минимизация схемы может быть одной из форм логической оптимизации, используемой для уменьшения площади сложной логики в интегральных схемах .
С появлением логического синтеза одной из самых больших проблем, с которой столкнулась отрасль автоматизации электронного проектирования (EDA), стало нахождение наиболее простого схемного представления заданного описания проекта. [nb 1] В то время как двухуровневая логическая оптимизация уже давно существовала в форме алгоритма Куайна-Маккласки , за которым позже последовал эвристический логический минимизатор Espresso , быстрое улучшение плотности микросхем и широкое принятие языков описания оборудования для описания схем формализовали область логической оптимизации в том виде, в каком она существует сегодня, включая Logic Friday (графический интерфейс), Minilog и ESPRESSO-IISOJS (многозначная логика). [3]
Методы упрощения логических схем в равной степени применимы к минимизации булевых выражений.
Сегодня логическая оптимизация делится на различные категории:
Графические методы представляют требуемую логическую функцию диаграммой, представляющей логические переменные и значение функции. Манипулируя диаграммой или проверяя ее, можно устранить много утомительных вычислений. Графические методы минимизации для двухуровневой логики включают:
Для оптимизации схемы могут быть применены те же методы минимизации (упрощения) булевых выражений, которые перечислены ниже.
Для случая, когда булева функция задана схемой (то есть мы хотим найти эквивалентную схему минимально возможного размера), долгое время предполагалось, что задача минимизации неограниченной схемы является -полной по временной сложности , и этот результат был окончательно доказан в 2008 году [4] , но существуют эффективные эвристики, такие как карты Карно и алгоритм Куайна-Маккласки , которые облегчают этот процесс.
Методы минимизации булевых функций включают в себя:
Методы, которые находят оптимальные схемные представления булевых функций, часто называются в литературе точным синтезом . Из-за вычислительной сложности точный синтез поддается обработке только для небольших булевых функций. Недавние подходы сопоставляют задачу оптимизации с задачей выполнимости булевых функций . [5] [6] Это позволяет находить оптимальные схемные представления с помощью решателя SAT .
Эвристический метод использует установленные правила, которые решают практически полезное подмножество гораздо большего возможного набора проблем. Эвристический метод может не давать теоретически оптимального решения, но если он полезен, то обеспечит большую часть желаемой оптимизации с минимальными усилиями. Примером компьютерной системы, которая использует эвристические методы для логической оптимизации, является Espresso heuristic logic minimumr .
В то время как двухуровневое представление схем строго относится к уплощенному виду схемы в терминах SOP ( сумма-произведений ) — что больше применимо к реализации PLA проекта [ требуется разъяснение ] — многоуровневое представление является более общим видом схемы в терминах произвольно соединенных SOP, POS ( произведение-сумм ), факторизованной формы и т. д. Алгоритмы оптимизации логики обычно работают либо со структурным (SOP, факторизованная форма), либо с функциональным представлением ( бинарные диаграммы решений , алгебраические диаграммы решений ) схемы. В форме суммы-произведений (SOP) вентили И образуют наименьшую единицу и сшиваются вместе с помощью OR, тогда как в форме произведения-сумм (POS) все наоборот. Форма POS требует скобок для группировки терминов OR вместе под вентилями И, потому что OR имеет более низкий приоритет, чем AND. Обе формы — SOP и POS — прекрасно переводятся в логику схемы.
Если у нас есть две функции F 1 и F 2 :
Приведенное выше двухуровневое представление использует шесть терминов продукта и 24 транзистора в КМОП-представлении.
Функционально эквивалентное представление в многоуровневом представлении может быть:
Хотя количество уровней здесь равно 3, общее количество терминов произведения и литералов уменьшается [ квантифицировать ] из-за совместного использования термина B + C.
Аналогично мы различаем комбинационные схемы и последовательные схемы . Комбинационные схемы выдают свои выходы только на основе текущих входов. Они могут быть представлены булевыми отношениями . Некоторые примеры — приоритетные кодеры , двоичные декодеры , мультиплексоры , демультиплексоры .
Последовательные схемы производят свой выход на основе как текущих, так и прошлых входов, в зависимости от тактового сигнала, чтобы отличать предыдущие входы от текущих входов. Они могут быть представлены конечными автоматами. Некоторые примеры — триггеры и счетчики .
Хотя существует множество способов минимизировать схему, это пример, который минимизирует (или упрощает) булеву функцию. Булева функция, выполняемая схемой, напрямую связана с алгебраическим выражением, из которого реализована функция. [7] Рассмотрим схему, используемую для представления . Очевидно, что в этом утверждении используются два отрицания, две конъюнкции и дизъюнкция. Это означает, что для построения схемы понадобятся два инвертора , два вентиля И и вентиль ИЛИ .
Схема может быть упрощена (минимизирована) путем применения законов булевой алгебры или использования интуиции. Поскольку пример утверждает, что является истинным, когда является ложным, и наоборот, можно сделать вывод, что это просто означает . С точки зрения логических вентилей неравенство просто означает вентиль XOR (исключающее ИЛИ). Следовательно, . Тогда две схемы, показанные ниже, эквивалентны, что можно проверить с помощью таблицы истинности :
{{cite book}}
: |work=
проигнорировано ( помощь )