В компьютерной инженерии логический синтез — это процесс, посредством которого абстрактная спецификация желаемого поведения схемы , обычно на уровне передачи регистров (RTL), превращается в реализацию проекта в терминах логических вентилей , обычно с помощью компьютерной программы , называемой инструментом синтеза . Обычные примеры этого процесса включают синтез проектов, указанных на языках описания оборудования , включая VHDL и Verilog . [1] Некоторые инструменты синтеза генерируют потоки битов для программируемых логических устройств, таких как PAL или FPGA , в то время как другие нацелены на создание ASIC . Логический синтез — это один из шагов в проектировании схемы в автоматизации электронного проектирования , другие — это размещение и маршрутизация , а также верификация и валидация .
Корни логического синтеза можно проследить до трактовки логики Джорджем Булем (1815–1864) в том, что сейчас называется булевой алгеброй . В 1938 году Клод Шеннон показал, что двузначная булева алгебра может описывать работу коммутационных схем. На раннем этапе логическое проектирование включало манипулирование представлениями таблиц истинности в виде карт Карно . Минимизация логики на основе карт Карно руководствуется набором правил о том, как можно комбинировать записи в картах. Человек-проектировщик обычно может работать только с картами Карно, содержащими от четырех до шести переменных.
Первым шагом к автоматизации минимизации логики стало введение алгоритма Куайна-Маккласки , который можно было реализовать на компьютере. Этот точный метод минимизации представил понятие простых импликант и минимальных стоимостных покрытий, которые стали краеугольным камнем двухуровневой минимизации . В настоящее время гораздо более эффективный эвристический логический минимизатор Espresso стал стандартным инструментом для этой операции. [ требуется обновление ] Еще одной областью ранних исследований была минимизация состояний и кодирование конечных автоматов (FSM), задача, которая была проклятием проектировщиков. Приложения для логического синтеза лежали в основном в проектировании цифровых компьютеров. Таким образом, IBM и Bell Labs сыграли ключевую роль в ранней автоматизации логического синтеза. Эволюция от дискретных логических компонентов к программируемым логическим матрицам (PLA) ускорила необходимость эффективной двухуровневой минимизации, поскольку минимизация членов в двухуровневом представлении уменьшает площадь в PLA.
Двухуровневые логические схемы имеют ограниченное значение в сверхбольшой интеграции (VLSI) дизайне; большинство проектов используют несколько уровней логики. Почти любое представление схемы в RTL или Behavioural Description является многоуровневым представлением. Ранней системой, которая использовалась для проектирования многоуровневых схем, была LSS от IBM. Она использовала локальные преобразования для упрощения логики. Работа над LSS и Yorktown Silicon Compiler стимулировала быстрый прогресс исследований в области логического синтеза в 1980-х годах. Несколько университетов внесли свой вклад, сделав свои исследования доступными для общественности, в частности SIS из Калифорнийского университета в Беркли , RASP из Калифорнийского университета в Лос-Анджелесе и BOLD из Колорадского университета в Боулдере . В течение десятилетия технология перешла на коммерческие продукты логического синтеза, предлагаемые компаниями по автоматизации электронного проектирования.
Ведущими разработчиками и поставщиками пакетов программного обеспечения для логического синтеза являются Synopsys , Cadence и Siemens . Их инструментами синтеза являются Synopsys Design Compiler, Cadence First Encounter и Siemens Precision RTL.
Логическое проектирование — это шаг в стандартном цикле проектирования, на котором функциональный проект электронной схемы преобразуется в представление, которое охватывает логические операции , арифметические операции , поток управления и т. д. Обычным результатом этого шага является описание RTL . За логическим проектированием обычно следует шаг проектирования схемы . В современной автоматизации электронного проектирования части логического проектирования могут быть автоматизированы с использованием высокоуровневых инструментов синтеза, основанных на поведенческом описании схемы. [2]
Логические операции обычно состоят из булевых операций AND, OR, XOR и NAND и являются наиболее базовыми формами операций в электронной схеме. Арифметические операции обычно реализуются с использованием логических операторов.
С целью повышения производительности труда проектировщиков исследовательские усилия по синтезу схем, указанных на поведенческом уровне, привели к появлению коммерческих решений в 2004 году [3] , которые используются для проектирования сложных ASIC и FPGA. Эти инструменты автоматически синтезируют схемы, указанные с использованием языков высокого уровня, таких как ANSI C/C++ или SystemC, в спецификацию уровня передачи регистров (RTL), которая может использоваться в качестве входных данных для потока логического синтеза на уровне вентилей. [3] При использовании высокоуровневого синтеза, также известного как синтез ESL, распределение работы по тактам и по структурным компонентам, таким как АЛУ с плавающей точкой, выполняется компилятором с использованием процедуры оптимизации, тогда как при логическом синтезе RTL (даже из поведенческого Verilog или VHDL, где поток выполнения может выполнять несколько чтений и записей в переменную в течение такта) эти решения о распределении уже приняты.
Типичные практические реализации логической функции используют многоуровневую сеть логических элементов. Начиная с описания RTL проекта, инструмент синтеза создает соответствующую многоуровневую булеву сеть .
Далее эта сеть оптимизируется с использованием нескольких технологически-независимых методов, прежде чем будут выполнены технологически-зависимые оптимизации. Типичная функция стоимости во время технологически-независимых оптимизаций — это общее количество литералов факторизованного представления логической функции (что довольно хорошо коррелирует с площадью схемы).
Наконец, зависящая от технологии оптимизация преобразует независимую от технологии схему в сеть вентилей в данной технологии. Простые оценки затрат заменяются более конкретными оценками, основанными на реализации, во время и после отображения технологии. Отображение ограничивается такими факторами, как доступные вентили (логические функции) в библиотеке технологий, размеры приводов для каждого вентиля, а также характеристики задержки, мощности и площади каждого вентиля.