САПР VTR7 для проектирования академических ПЛИС
Академический САПР ПЛИС VTR7 (архив vtr-verilog-to-routing-master.zip) может быть скачан по адресу www.github.com/verilog-to-routing/vtr-verilog-to-routing. В настоящее время доступна версия 7.07 (рис. 1). САПР полностью общественный, может быть загружен и изменен любым человеком.
Мы же будем использовать официальную версию 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/ссылка утрачена/.
Для запуска 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++.
Для того чтобы подключить графику к программе 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 строит абстрактное синтаксическое дерево и перерабатывает его в плоский список.
Далее с помощью программного инструмента 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 в КЛБ не используются.
Для сравнения на рис. 7 изображен АЛМ в самых современных сериях ПЛИС Altera Stratix IV и Stratix 10. Для Stratix 10 АЛМ состоит из 8‑входового адаптивного LUT, имеющего семь режимов работы, пары сумматоров и четырех триггеров.
На рис. 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‑МОП-ключах.
На рис. 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 пользовательских входов/выходов.
На рис. 13 показано, как с помощью четырех умножителей с размерностью операндов 18×18 реализуется умножитель с размерностью 36×36. Анализ задействованных ресурсов ПЛИС при выполнении проекта микропроцессорного ядра or1200 при использовании САПР Quartus II v.9.0 и САПР VTR представлен в таблице.
Ресурсы ПЛИС |
ПЛИС 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) с открытым программным кодом.
- 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.
- 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.
- Luu J., Rose J., Anderson J. Towards Interconnect-Adaptive Packing for FPGAs/FPGA’14, February 26–28. Monterey, CA, USA. 2014.
- Строгонов А., Мотылев М., Давыдов С., Быстрицкий С., Цыбин С. Проектирование академических ПЛИС типа ППВМ с одноуровневой структурой межсоединений // Компоненты и технологии. 2011. № 6.