«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

Проектирование цифровых систем на языках описания аппаратуры/Лекция 15

Материал из Wiki
Перейти к: навигация, поиск
Лекции ПЦСЯОА

Лекции

Практические

Доп. материалы

Заголовок
Автоматический синтез логических схем по VHDL описаниям.
Автор
Ланкевич Ю.Ю.
Нижний колонтитул
Проектирование цифровых систем на языках описания аппаратуры/Лекция 15
Дополнительный нижний колонтитул
Ланкевич Ю.Ю., 02:36, 21 ноября 2020


Слайд:Высокоуровневый и логический синтез

Процесс синтеза схемы по VHDL-описаниям обычно разбивается на четыре крупных этапа.

Последние три этапа объединяются под названием “логический синтез”. Кроме того, этап “Увеличение быстродействия” в научной литературе обычно не выделяется, так как включается в этап “Технологическое отображение”.

Ниже приведены этапы синтеза в LeonardoSpectrum

Этап Название этапа в LeonardoSpectrum Представление логической схемы
Высокоуровневый синтез Elaborate RTL-описание
Технологически независимая оптимизация Pre-optimize RTL-описание
Технологическое отображение Optimize Структурное описание
Увеличение быстродействия Timing optimization Структурное описание

RTL-описание (Register Transfer Logic) логической схемы представляет собой смешанное функционально-структурное описание. Элементы памяти (триггеры) представляются в виде структурного описания (элементы и их соединения), комбинационная логика представляется в виде логических выражений (уравнений). Если применить терминологию языка VHDL, то можно сказать, что комбинационная логика представляется операторами назначения сигналов (стиль data flow), элементы памяти представляются операторами создания экземпляров компонентов. RTL-описание является текстовым описанием и может быть сохранено в формате VHDL.

Высокоуровневый синтез осуществляется компилятивным способом – каждый оператор языка VHDL заменяется соответствующей логической подсхемой (компилятом). Например, арифметический оператор сложения заменяется сумматором, арифметический оператор умножения – схемой умножения (умножителем), операторы сравнения – компараторами и т.д. Операторы цикла “разворачиваются”, каждая итерация цикла заменяется соответствующей подсхемой, соответствующей совокупности операторов в теле цикла. Исходное VHDL-описание в результате “покрывается” логическими RTL-описаниями операторов – соответствующие операторам компиляты представляются на уровне регистровых передач (RTL-уровне).

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

Технологическое отображение позволяет реализовать оптимизированное RTL-представление логической схемой из элементов целевой библиотеки. В LeonardoSpectrum синтез структур FPGA, CPLD ведется четырьмя алгоритмами, после чего результирующие логические схемы сравниваются и выбирается лучшая схема. Для заказных СБИС синтез ведется одним алгоритмом. Для структур FPGA сложность схемы подсчитывается в числе конфигурируемых ячеек CLB, поэтому при установке критерия оптимизации Area минимизируется число ячеек CLB. Увеличение быстродействия осуществляется после того, как схема построена из элементов целевой библиотеки. Этап перестройки логической схемы с целью увеличения быстродействия отделен от этапа технологического отображения, так как обычно увеличение быстродействия схемы чаще всего влечет увеличение ее сложности. В LeonardoSpectrum имеется возможность управлять различными параметрами, характеризующими задержку схемы. Основным параметром, характеризующим задержку схемы, является задержка на критических путях (цепях), т. е. путях с наибольшей задержкой.

В LeonardoSpectrum имеется возможность увидеть на экране монитора графическое изображение как RTL-описания, так и результирующей логической схемы. Заметим, что в графическом изображении RTL-описания используются графические изображения параметрически генерируемых модулей (компилятов), которыми заменяются операторы высокоуровневого алгоритмического VHDL-описания. Графическое изображение результирующей логической схемы состоит из связанных между собой элементов целевой библиотеки синтеза.

Реализация операторов относится к этапу высокоуровневого синтеза. Проектировщик может управлять заменой операторов компилятами по критериям сложности и быстродействия. Имеются следующие режимы замены операторов.

Установка режима Smallest позволяет заменять все операторы подсхемами наименьшей сложности, установка режима Small позволяет заменять операторы подсхемами небольшой сложности, при этом есть надежда, что задержка этих подсхем будет меньше, чем при режиме Smallest.

Режим Fastest ориентирован на реализацию компилятов наиболее “быстрыми” подсхемами. Режим Fast ориентирован на реализацию компилятов “быстрыми” схемами, при этом предполагается, что сложность этих подсхем будет меньше, чем при режиме Fastest.

Естественно, когда говорится о подсхемах, соответствующих компилятам, то имеются в виду соответствующие RTL-описания.

Установка соответствующего режима касается одновременно всех операторов исходного VHDL-описания.

Извлечение макроописаний. В некоторых VHDL-описаниях могут быть фрагменты, соответствующие вполне определенным типовым подсхемам, таким, как дешифраторы, счетчики, блоки памяти (ПЗУ, ОЗУ). На этапе высокоуровневого синтеза такие описания могут быть распознаны и заменены соответствующими RTL-описаниями. Если режим извлечения (Extract) не установлен, то данные макроблоки не распознаются, а соответствующие “мелкие” операторы, входящие в макроблоки, заменяются по общим правилам. Ясно, что в этом случае могут быть получены другие RTL-описания, а от вида RTL-описания зависит и результат синтеза.

Обработка иерархических описаний. Иерархия VHDL-описания проекта цифровой системы – это способ “борьбы” со сложностью проектов и размерностью решаемых задач. Требования практики приводят к необходимости решения задач все большей и большей размерности, поэтому число уровней иерархии в структурном описании может быть большим – десяток и более.

Иерархия структурного описания в языке VHDL может быть графически изображена в LeonardoSpectrum в виде дерева. В качестве вершин дерева выступают entity и компоненты. На более низком уровне описания компоненты описываются, естественно, в виде entity. Заметим, что графическое представление данного дерева осуществляется в браузере проекта (Design Browser) в библиотеке Work. Там же пользователь может увидеть деревья, представляющие целевую библиотеку синтеза, библиотеку примитивов синтезатора LeonardoSpectrum и библиотеку использованных компилятов (параметрически сгенерированных модулей).

На результирующей логической схеме иерархия описания на самом нижнем уровне задает условные границы между элементами, каждая подсхема – это совокупность взаимосвязанных элементов. Иерархия на следующем, более высоком уровне иерархии заключается в том, что некоторые выделенные подсхемы объединяются в один модуль (компонент), т.е. проводится условная граница между подсхемами. На следующем уровне иерархии выде-ляются новые подсхемы, устанавливаются новые границы и т.д.

Самый простой способ обработки иерархического проекта – синтез согласно иерархии описания. Соответствующий режим именуется в LeonardoSpectrum как “Preserve”. Недостатком такого способа синтеза является большая сложность, так как оптимизация ведется только в рамках каждого блока описания. Достоинством является то, что структура результирующей схемы отражает структуру (иерархию) исходного описания, что может быть полезно для других целей (диагностика, размещение на платах и т.д.).

Противоположностью режима “Preserve” является режим “Flatten” , позволяющий устранить иерархию проекта и реализовать схему как один блок. Достоинством такого режима является меньшая сложность проекта, недостатком – “размытость” границ между подсхемами, что приводит к тому, что трудно выделить подсхему, соответствующую некоторому блоку исходного описания. Элементы, входящие в подсхему, реализующую некоторый блок исходного описания, “размазываются” по всей схеме.

Имеется еще режим Auto при работе с иерархическими проектами. Этот режим позволяет пользователю управлять размерностью выделяемого блока для оптимизации. Выделение блока соответствующей размерности устанавливается с помощью параметра Auto Dissolve Limit – этот параметр задает число “растворяемых” элементов, включаемых в один блок при установке режима Auto обработки иерархии.

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

Оптимизация. На практике нужны не просто логические схемы, обеспечивающие нужное поведение, эквивалентное поведению исходного VHDL-описания проектируемой цифровой системы, а схемы, оптимизированные по тем или иным критериям. Задача получения оптимальной по сложности схемы даже в классе комбинационных логических схем, математическими моделями которых являются системы булевых функций, является NP-полной комбинаторной задачей. Речь о точных решениях не идет, на практике используются приближенные алгоритмы, позволяющие решать задачи большой размерности.

Алгоритмы оптимизации не описаны в пользовательской документации синтезатора LeonardoSpectrum, сообщается лишь о следующих приемах оптимизации.

Диаграммы двоичного выбора (BDD). Данный оптимизационный прием заключается в оптимизации многоуровневого представления булевой функции на основе разложения Шеннона.

Факторизация – выделение одинаковых сомножителей в элементарных конъюнкциях.

Реструктуризация схемы. Это изменение иерархии описания. Выполнение этого приема связано с переходом к функциональным описаниям, для чего используется экстракция.

Экстракция (извлечение) функциональных описаний элементов и подсхем из структурных описаний. Это соответствует понятию remapping – процедуре, обратной mapping (технологическому отображению).

Глобальная оптимизация ведется и возможна лишь для схем небольшой размерности, для схем большой размерности осуществляется блочная оптимизация.

При оптимизации может быть разрешен режим boundary optimization – “граничной” оптимизации, примерами которой являются упрощение схемы путем распространения констант, удаления инверторов, идущих друг за другом и т. д. и режим “common logic” совместного использования общих подсхем.

Слайд:Кодирование данных при синтезе

Тип данных bit заменяется типом std_logic, тип данных bit_vector заменяется типом std_logic_vector, при этом направление диапазона (возрастающий диапазон to, убывающий диапазон downto) не изменяется.

Если VHDL-код содержит типы std_logic, std_logic_vector, то данные типы не меняются при синтезе, а интерфейс схемы не изменяется после синтеза.

Данные типа integer заменяются данными типа std_logic_vector убывающего диапазона, т.е. число представляются массивом бит (двоичным кодом), старший разряд двоичной записи числа идет первым. Если тип integer декларирован для ограниченного диапазона и максимальное (по абсолютному значению) число в декларированном диапазоне равно k, то результирующий тип содержит w = ]log2 k[ бит (разрядов). Для отрицательных чисел добавляется еще один (первый) разряд для задания знака числа. Например, если тип my_int1, являющийся подтипом типа integer, декларирован следующим образом

Слайд:Синтезируемые и несинтезируемые операторы и конструкции