В компьютерной инженерии логический синтез представляет собой процесс, посредством которого абстрактная спецификация желаемого поведения схемы схемы, обычно на уровне передачи регистров (RTL), превращается в проектную реализацию с точки зрения логических вентилей, обычно с помощью компьютерной программы, называемой инструментом синтеза. Общие примеры этого процесса включают синтез проектов, указанных на языках описания оборудования, включая VHDL и Verilog. Некоторые инструменты синтеза генерируют битовые потоки для программируемых логических устройств, таких как PAL или FPGA, в то время как другие нацелены на создание ASIC. Логический синтез - один из аспектов автоматизации проектирования электроники.
Корни логического синтеза можно проследить до обращения с логикой с помощью Джордж Буль (1815–1864), в том, что теперь называется булевой алгеброй. В 1938 году Клод Шеннон показал, что двузначная булева алгебра может описывать работу коммутационных схем. В первые дни логический дизайн включал манипулирование представлениями таблицы истинности как картами Карно. Минимизация логики на основе карт Карно руководствуется набором правил того, как записи в картах могут быть объединены. Дизайнер-человек обычно может работать только с картами Карно, содержащими от четырех до шести переменных.
Первым шагом к автоматизации логической минимизации было введение алгоритма Куайна – Маккласки, который можно было реализовать на компьютере. Этот точный метод минимизации представил понятие основных импликантов и минимальных затрат, которые стали бы краеугольным камнем двухуровневой минимизации. В настоящее время стандартным инструментом для этой операции стал гораздо более эффективный эвристический минимизатор логики Espresso. Другой областью ранних исследований была минимизация состояний и кодирование конечных автоматов (FSM), задача, которая была проклятием для дизайнеров. Приложения для логического синтеза лежат в первую очередь в проектировании цифровых компьютеров. Следовательно, IBM и Bell Labs сыграли ключевую роль в ранней автоматизации логического синтеза. Эволюция от компонентов дискретной логики к массивам программируемой логики (PLA) ускорила потребность в эффективной двухуровневой минимизации, поскольку минимизация членов в двухуровневом представлении уменьшает площадь в PLA.
Однако двухуровневые логические схемы имеют ограниченное значение в конструкции очень крупномасштабной интеграции (СБИС); в большинстве проектов используется несколько уровней логики. Фактически, почти любое представление схемы в RTL или Behavioral Description является многоуровневым представлением. Первой системой, которая использовалась для разработки многоуровневых схем, была LSS от IBM. Он использовал локальные преобразования для упрощения логики. Работа над LSS и Yorktown Silicon Compiler стимулировала быстрый прогресс исследований в области логического синтеза в 1980-х годах. Несколько университетов внесли свой вклад, сделав свои исследования доступными для общественности, в первую очередь SIS из Университета Калифорнии, Беркли, RASP из Калифорнийского университета, Лос-Анджелес и BOLD из Университета Колорадо, Боулдер. В течение десятилетия технология перекочевала на продукты коммерческого логического синтеза, предлагаемые компаниями, занимающимися автоматизацией электронного проектирования.
Логический дизайн - это этап стандартного цикла проектирования, на котором функциональный дизайн электронной схемы преобразуется в представление который захватывает логические операции, арифметические операции, поток управления и т. д. Обычным результатом этого шага является RTL-описание. За логическим проектированием обычно следует этап проектирования схем. В современной автоматизации проектирования электроники части логического проектирования могут быть автоматизированы с использованием инструментов высокоуровневого синтеза, основанных на поведенческом описании схемы.
Различные представления логических операцийЛогические операции обычно состоят из логических операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и И-НЕ и являются основными формами операций в электронной схеме. Арифметические операции обычно реализуются с использованием логических операторов.
С целью повышения продуктивности проектировщиков исследовательские усилия по синтезу схем, заданных на поведенческом уровне, привели к появлению коммерческих решений в 2004 году, которые используются для проектирования сложных ASIC и FPGA. Эти инструменты автоматически синтезируют схемы, указанные с использованием языков высокого уровня, таких как ANSI C / C ++ или SystemC, в спецификацию уровня передачи регистров (RTL), которая может использоваться в качестве входных данных для потока логического синтеза на уровне вентилей. При использовании высокоуровневого синтеза, также известного как синтез ESL, распределение работы по тактовым циклам и по структурным компонентам, таким как ALU с плавающей запятой, выполняется компилятором с использованием процедуры оптимизации, тогда как с помощью логического синтеза RTL (даже из поведенческих Verilog или VHDL, где поток выполнения может выполнять несколько операций чтения и записи в переменную за один такт), эти решения о распределении уже приняты.
Типичные практические реализации логической функции используют многоуровневую сеть логических элементов. Начиная с RTL-описания проекта, инструмент синтеза конструирует соответствующую многоуровневую логическую сеть.
. Затем эта сеть оптимизируется с использованием нескольких независимых от технологии методов до того, как будут выполнены технологически зависимые оптимизации. Типичная функция затрат при оптимизации, не зависящей от технологии, - это общий буквальный счет факторизованного представления логической функции (который довольно хорошо коррелирует с площадью схемы).
Наконец, технологически-зависимая оптимизация преобразует технологически-независимую схему в сеть ворот в данной технологии. Простые оценки затрат заменяются более конкретными оценками, основанными на реализации, во время и после картирования технологий. Отображение ограничено такими факторами, как доступные вентили (логические функции) в технологической библиотеке, размеры привода для каждого логического элемента, а также задержка, мощность и характеристики площади каждого логического элемента.
.