САПР VTR7 для проектирования академических ПЛИС

PDF версия
В статье предлагается рассмотреть программные инструменты САПР VTR [1–3] (Verilog to Routing) с открытым кодом, разработанные в университете Торонто (Канада, Торонто, www.eecg.utoronto.ca/vpr) для проектирования академических ПЛИС типа FPGA с одноуровневой структурой трассировочных ресурсов, когда кластеры из конфигурируемых логических блоков (КЛБ) окружены с четырех сторон межсоединениями горизонтальных и вертикальных трассировочных каналов, равномерно распределенных по всей площади кристалла.

Академический САПР ПЛИС VTR7 (архив vtr-verilog-to-routing-master.zip) может быть скачан по адресу www.github.com/verilog-to-routing/vtr-verilog-to-routing. В настоящее время доступна версия 7.07 (рис. 1). САПР полностью общественный, может быть загружен и изменен любым человеком.

Страница на сайте www.github.com, посвященная САПР ПЛИС VTR7

Рис. 1. Страница на сайте www.github.com, посвященная САПР ПЛИС VTR7

Мы же будем использовать официальную версию 7. По ссылке www.github.com/verilog-to-routing/vtr-verilog-to-routing/wiki осуществим переход на сайт университета Торонто www.eecg.utoronto.ca/vtr/terms.html.

Далее необходимо установить ОС Linux Mint 17.3 Rosa — Cinnamon (64‑bit) KDE Edition по ссылке www.linuxmint.com/start/rosa /ссылка утрачена/ (рис. 2). Возможно использовать и другие разновидности ОС Linux, например Ubuntu (64 bit). Для запуска в ОС Windows ОС Linux Mint 17.3 Rosa нужно скачать образ LinuxMint‑17.3‑mate‑64bit.iso и настроить виртуальную машину. В качестве виртуальной машины будем использовать Oracle VM VirtualBox. Ссылка для скачивания виртуальной машины www.download.virtualbox.org/virtualbox/5.0.14/VirtualBox-5.0.14-105127-Win.exe/ссылка утрачена/.

Виртуальная машина Oracle VM VirtualBox версия 5.04 для запуска ОС Linux Mint 17.3 Rosa — Cinnamon (64 bit)

Рис. 2. Виртуальная машина Oracle VM VirtualBox версия 5.04 для запуска ОС Linux Mint 17.3 Rosa — Cinnamon (64 bit)

Для запуска VTR7 в среде Windows можно также прибегнуть к свободно распространяемой UNIX-подобной среде Cygwin, которая обеспечивает тесную интеграцию Windows-приложений, данных и ресурсов с приложениями, данными и ресурсами UNIX-подобной среды. Процесс инсталляции следует начать на сайте www.cygwin.com и загрузить программу setup-x86_64.exe (64‑bit installation).

Заходим в каталог VTR7 (рис. 3), где установлен САПР VTR7, и командой Make получаем необходимые exe-файлы. В папках abc_with_bb_support, ODIN_II, VPR должны появиться скомпилированные exe-файлы. Если по каким-то причинам не установлены следующие пакеты: g++, ctags, Libx11‑dev, Libxft-dev, bison, flex, — нужно с помощью следующих команд либо обновить, либо доустановить требуемые пакеты:

  • sudo apt-get install g++;
  • sudo apt-get install ctags;
  • sudo apt-get Libx11‑dev;
  • sudo apt-get Libxft-dev;
  • sudo apt-get bison;
  • sudo apt-get flex;
  • sudo apt-get install g++.
Структура каталогов САПР VTR7

Рис. 3. Структура каталогов САПР VTR7

Для того чтобы подключить графику к программе VPR, надо отредактировать make-файл. В строке ENABLE_GRAPHICS = false необходимо переменную false заменить на true.

Рассмотрим типовой маршрут проектирования гетерогенных академических ПЛИС, который предполагает использование следующих программных инструментов: ODIN-II, ABC и VPR (рис. 4). ODIN-II (под лицензией MIT) и ABC (University of California, Berkeley) являются открытыми программными продуктами. ODIN-II конвертирует схемное описание сложнофункционального устройства (бенчмарк, тестовая схема на языке Verilog HDL) в специальный файл в blif (Berkeley Logic Interchange Format) формате, в котором выделяет логические вентили для описания логики устройства и «черные ящики» для гетерогенных блоков, таких как умножители, блоки памяти и т. д. Синтаксический анализатор ODIN-II разработан на основе программных средств bison (лексический анализатор) и flex (синтаксический анализатор). По Verilog-коду синтаксический анализатор ODIN-II строит абстрактное синтаксическое дерево и перерабатывает его в плоский список.

Маршрут проектирования академических ПЛИС в САПР VTR7

Рис. 4. Маршрут проектирования академических ПЛИС в САПР VTR7

Далее с помощью программного инструмента ABC проводится логическая оптимизация схемы с использованием специального стиля описания, независимого от технологии проектирования БИС, и ее размещение в логические блоки академической ПЛИС (привязка к библиотеке, или технологический мэппинг). Выходным также является файл в .blif-формате, в котором выделяются LUT-таблицы, D‑триггеры логических блоков и гетерогенные блоки.

Для работы программ ODIN-II и VPR требуется конфигурационный файл для описания архитектуры ПЛИС. Будем использовать архитектурный файл (пример 1) для описания ПЛИС (файл k6_frac_N10_mem32K_40nm.xml находится в папке vtr_flow/arch/timing). Предполагается, что ПЛИС будет изготовлена по 40‑нм технологическому КМОП-процессу с типовыми задержками в межсоединениях, вентилях и ключах. Флагманский архитектурный файл позволяет получать академические ПЛИС, близкие по техническим характеристикам (задержки в КЛБ, в маршрутизаторах и трассировочных каналах, в умножителях и блоках памяти) к ПЛИС Altera серии Stratix IV GX (EP4SGX230DF29C2X).

Конфигурационный логический блок (кластер) состоит из 10 адаптивных логических элементов (N=10) (рис. 5). Логический элемент (ЛЭ) имеет 6‑входовую таблицу перекодировок (fracturable 6‑входовая LUTs или изменяемый, адаптивный LUT). Адаптивный LUT может быть сконфигурирован как чисто 6‑входовый LUT или как два 5‑входовых с пятью общими входами (рис. 6). LUT КЛБ академической ПЛИС, по аналогии с ПЛИС Altera, — это адаптивный логический модуль (АЛМ), но только у него два режима конфигурации, а не семь, как у Stratix IV. Какие-либо цепи переноса на выходах LUT в КЛБ не используются.

КЛБ академической ПЛИС, состоящий из десяти адаптивных логических элементов, с локальными трассировочными ресурсами (а) и структура адаптивного логического элемента (б)

Рис. 5. КЛБ академической ПЛИС, состоящий из десяти адаптивных логических элементов, с локальными трассировочными ресурсами (а) и структура адаптивного логического элемента (б)

Режимы конфигурации LUT с фрагментами кода архитектурного файла

Рис. 6. Режимы конфигурации LUT с фрагментами кода архитектурного файла:
а) 6 входовый LUT;
б) два 5 входовых LUT с тремя общими входами

Для сравнения на рис. 7 изображен АЛМ в самых современных сериях ПЛИС Altera Stratix IV и Stratix 10. Для Stratix 10 АЛМ состоит из 8‑входового адаптивного LUT, имеющего семь режимов работы, пары сумматоров и четырех триггеров.

Инновации в структуре АЛМ ПЛИС

Рис. 7. Инновации в структуре АЛМ ПЛИС:
а) Altera Stratix IV;
б) Stratix 10;
в) режимы конфигурации LUT Stratix IV

На рис. 5 показана внутрикластерная коммутация с использованием коммутатора 60×60 (полная коммутация, 60 входных линий и 60 выходных, 40 внешних входов и 20 линий обратной связи). Полная коммутация позволяет любой вход любого ЛЭ в КЛБ подсоединить к любому произвольному входу ЛЭ КЛБ или выходу. Все входы и все выходы в таком КЛБ являются логически эквивалентными и функционально идентичными. При полной коммутации можно получить лучшие показатели площадь/быстродействие, при этом достигается максимальная гибкость при коммутации связей внутри КЛБ.

Коммутатор размерностью 60×60 можно представить как 60 мультиплексоров «60 в 1» с использованием ключей на n‑МОП-транзисторах. На каждый вход ЛЭ коммутируется до 60 входных линий. Для сравнения: коммутатор АЛМ ПЛИС Sratix IV (72×88) использует 52 входные линии и 20 линий обратной связи, имеет 88 выходных линий, является разряженным на 50%, то есть коммутируется не 60 линий на каждый вход ЛЭ, как в академических ПЛИС, а 36 линий в одну. Считается, что коммутатор 72×88 по занимаемой площади на кристалле и задержкам распространения сигналов больше, чем коммутатор 60×60, но с учетом разреженности можно добиться примерно равных результатов. Оба коммутатора имеют примерно равное число точек коммутации — 3168 и 3600.

В ПЛИС Sratix IV задержки по входам LUT имеют разные значения, а в САПР VTR принято, что задержки по входам LUT одинаковые.

Блоки памяти имеют объем по 32 кбит. Ширина шины данных изменяется от 1 до 64 разрядов. По протяженности модуль памяти занимает 6 КЛБ. Умножители с размером операндов 36×36, два 18×18, каждый из которых может быть сконфигурирован как два 9×9. По протяженности умножитель занимает 4 КЛБ.

Коэффициент объединения по входу/выходу для соединительных блоков fc_in = 0,15, Fc_out = 0,1. Длина сегментации межсоединений в трассировочных каналах L = 4, то есть межсоединение проходит непрерывно 4 КЛБ.

Максимальная ширина трассировочного канала, заложенная в академическую ПЛИС, составляет 300 межсоединений, что хорошо согласуется с современными индустриальными ПЛИС и обеспечивает высокую маршрутизируемость.

Конфигурационный файл состоит из двух частей: непосредственно для программы ODIN-II (помечен <!— ODIN II specific config —> и <!— ODIN II specific config ends —>) и для программы VPR (более подробно можно посмотреть в работе [4]), в которой содержится информация о требуемых размерах кристалла ПЛИС; о сопротивлении и минимальных геометрических размерах n‑ и p‑МОП-ключей; о емкостях входных буферов мультиплексорных структур соединительных блоков, задержках сигналов через эти буферы и мультиплексоры; о типах маршрутизаторов; о соединительных блоках; о сегментации межсоединений в каналах, о типе межсоединений (двунаправленные или однонаправленные) и их сопротивлениях и емкостях; о ширине трассировочного канала ядра и периферийного канала между ядром и блоками ввода/вывода и др.

В качестве примера рассмотрим проект синтезированного микропроцессорного ядра or1200 на языке Verilog. Получить дополнительную информацию можно по ссылке www.ru.knowledgr.com/06057739/OpenRISC1200 /ссылка утрачена/, а сам проект скачать по ссылке www.github.com/openrisc/or1200, где представлен иерархический проект (or1200‑master.zip). Файл верхнего уровня иерархии or1200_cpu.v. Официальное внедрение проекта сохраняется за разработчиками в OpenCores.org.

Микропроцессор OR1200 основан на 32‑битной архитектуре набора команд (ISA) ORBIS32. Центральный процессор также содержит MАС-блок, чтобы лучше поддерживать ЦОС-приложения.

Для запуска САПР VTR воспользуемся скрипт-файлом run_vtr_flow.pl, который находится в папке vtr_flow/scripts. Предположим, нам необходимо разместить в базис ПЛИС с архитектурным файлом k6_n10.xml синтезируемое процессорное ядро or1200, представленное в виде единственного verilog-файла.

Требуемый файл or1200.v (так называемый плоский файл, не иерархический, проект представлен единственным файлом) находится в папке vtr_flow/benchmarks/Verilog (VPR Benchmark). Он представляет собой адаптацию оригинального проекта or1200_cpu.v для задач размещения и трассировки в САПР VTR. Для реализации оригинального проекта or1200_cpu.v без какой-либо переделки в САПР Quartus II потребуется значительно большее число вводов/выводов ПЛИС. Предварительно два файла or1200.v и k6_n10.xml необходимо поместить в папку scripts. Для запуска скрипта в командной строке набираем:

./ run_vtr_flow.pl or1200.v k6_n10.xml

В папке scripts будет автоматически создана папка temp со следующими файлами: odin.out (пример 2), abc.out (пример 3), or1200.pre-vpr.blif (пример 4), vpr.out (пример 5), vpr_stdout.log (пример 6) и др.Ниже приведены фрагменты этих файлов. Для работы программы логического синтеза ODIN II требуется конфигурационный файл odin_config.xml, который создается в автоматическом режиме из архитектурного файла k6_n10.xml. Программа ODIN-II определила, что для реализации проекта дополнительно понадобится два блока двухпортовой памяти и один умножитель с размерностью операндов 36×36.

Выходным файлом программы ODIN-II является файл or1200.odin.blif. Непосредственно он недоступен. Далее с помощью программы ABC будет проведена оптимизация. Выходным файлом является файл с именем or1200.abc.blif, который также недоступен. В процессе работы скрипта будет создан файл or1200.pre-vpr.blif (пример 4), необходимый программе VPR. Выходные файлы работы программы VPR — это vpr.out (пример 5) и vpr_stdout.log (пример 6).

Анализируя полученные файлы vpr.out и vpr_stdout.log, можно сделать выводы, что для реализации проекта была сгенерирована архитектура ПЛИС с 18 умножителями с размерностью операндов 36×36, из них задействован только один, поскольку процессорное ядро or1200 содержит 1 MAC-блок, 12 блоков двухпортовой памяти, из которых задействовано только два, а также 475 КЛБ, из которых задействовано 257. Для реализации комбинационной логики требуется 1267 6‑входовых LUT и 691 триггер. В трассировочных ресурсах используется маршрутизатор типа Wilton с однонаправленными межсоединениями. Оптимальная ширина трассировочного канала — 74 межсоединения.

Максимальная тактовая частота работы процессорного ядра в базисе академической ПЛИС составляет f_max: 74,9708 МГц.

На рис. 8а показано первичное размещение микропроцессорного ядра or1200 в базис академической ПЛИС (до оптимизации), а на рис. 8б — после этапа размещения и трассировки. На рис. 9 представлен фрагмент ПЛИС с трассировочными ресурсами. Подключение входов/выходов КЛБ к трассировочным каналам осуществляется с четырех сторон. Трассировочные каналы сегментируются маршрутизаторами (матрица переключателей) типа Wilton с коэффициентом разветвления Fs = 3. Сегментированная трассировочная структура реализуется c помощью однонаправленных межсоединений (unidirectional). В нашем случае имеем 74 межсоединения, равномерно распределенных по всей площади кристалла. На рис. 10 дана детализация трассировочных ресурсов. Показаны маршрутизаторы типа Wilton в трассировочных каналах, соединительные блоки для подключения КЛБ к каналам. Используются только мультиплексорные структуры на n‑МОП-ключах.

Первичное размещение микропроцессорного ядра or1200 в ПЛИС

Рис. 8. Первичное размещение микропроцессорного ядра or1200 в ПЛИС:
а) до оптимизации;
б) после этапа размещения и трассировки

Фрагмент ПЛИС с трассировочными ресурсами

Рис. 9. Фрагмент ПЛИС с трассировочными ресурсами

Детализация трассировочных ресурсов ПЛИС

Рис. 10. Детализация трассировочных ресурсов ПЛИС

На рис. 11 представлен проект микропроцессорного ядра or1200 на RTL-уровне в САПР Quartus II v.9.0 в составе более сложного проекта or1200_top. На рис. 12 показано размещение проекта микропроцессорного ядра or1200 (or1200_cpu.v) в ПЛИС Altera Stratix III EP3SL340F1760C2 с использованием САПР Quartus II v.9.0. ПЛИС EP3SL340F1760C2 выбрана из соображений, что для реализации проекта or1200_cpu.v требуется 1026 пользовательских входов/выводов. Для ПЛИС же Stratix IV EP4SGX230 доступно максимально 888 пользовательских входов/выходов.

Представление проекта микропроцессорного ядра or1200 на RTL-уровне в САПР Quartus II v.9.0 в составе более сложного проекта or1200_top

Рис. 11. Представление проекта микропроцессорного ядра or1200 на RTL-уровне в САПР Quartus II v.9.0 в составе более сложного проекта or1200_top

Размещение проекта микропроцессорного ядра or1200 в ПЛИС Altera Stratix III EP3SL340F1760C2

Рис. 12. Размещение проекта микропроцессорного ядра or1200 в ПЛИС Altera Stratix III EP3SL340F1760C2

На рис. 13 показано, как с помощью четырех умножителей с размерностью операндов 18×18 реализуется умножитель с размерностью 36×36. Анализ задействованных ресурсов ПЛИС при выполнении проекта микропроцессорного ядра or1200 при использовании САПР Quartus II v.9.0 и САПР VTR представлен в таблице.

Четыре умножителя с размерностью операндов 18×18 и дерево сумматоров для реализации умножителя 36×36

Рис. 13. Четыре умножителя с размерностью операндов 18×18 и дерево сумматоров для реализации умножителя 36×36

Таблица. Анализ задействованных ресурсов ПЛИС при реализации проекта микропроцессорного ядра or1200 при использовании САПР Quartus II v.9.0 и САПР VTR7

Ресурсы ПЛИС

ПЛИС Altera Stratix III EP3SL340F1760C2 (or1200_cpu.v)

Академическая ПЛИС (or1200.v)

Технология, проектные нормы

КМОП, 65 нм

КМОП, 40 нм

Конфигурируемых блоков, шт.

170 АЛМ

257 КЛБ

Адаптивных LUT для реализации комбинационных функций, шт.

2300 (из них 462 6-LUT)

1267 6-LUT

Триггеров для реализации последовательностной логики, шт.

841

691

Аппаратные ЦОС-блоки, встроенные в базис ПЛИС, шт.

1 умножитель 36×36 (4 умножителя 18×18)

1 умножитель 36×36

Блоки памяти, бит

2 блока типа M9K в режиме Simple Dual Port (2048)

2 (2048)

Входов/выходов

1026 (банков ввода/вывода 24)

779

Максимальная частота в наихудшем случае, Fmax, МГц

143,86 (временная модель Slow 1200 мВ, 85 °С)

74,97

 

Выводы

Разработчики САПР VTR7 из университета Торонто достигли значительных успехов в области создания новых архитектур академических ПЛИС, которые по своим техническим характеристикам приблизились к индустриальным ПЛИС. При этом для разработки САПР VTR7 использовались программные инструменты ODIN-II (MIT) и ABC (University of California, Berkeley) с открытым программным кодом.

Литература
  1. Luu J., Goeders J., Wainberg M., Somerville A., Yu Th., Nasartschuk К., Nasr M., Wang S., Liu T., Ahmed N., Kent K. B., Anderson J., Rose J., Betz V. VTR 7.0: Next Generation Architecture and CAD System for FPGAs // ACM Transactions on Recon-figurable Technology and Systems. June 2014. Vol. 7. No. 2, Article 6.
  2. Luu J., Anderson J., Rose J. Architecture Description and Packing for Logic Blocks with Hierarchy, Modes and Complex Interconnect/FPGA’11, February 27 – March 1. Monterey, California, USA. 2011.
  3. Luu J., Rose J., Anderson J. Towards Interconnect-Adaptive Packing for FPGAs/FPGA’14, February 26–28. Monterey, CA, USA. 2014.
  4. Строгонов А., Мотылев М., Давыдов С., Быстрицкий С., Цыбин С. Проектирование академических ПЛИС типа ППВМ с одноуровневой структурой межсоединений // Компоненты и технологии. 2011. № 6.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *