Проектирование академических ПЛИС типа ППВМ с одноуровневой структурой межсоединений
Основные функциональные части ПЛИС (рис. 1) — это логический блок (ЛБ), соединительные блоки (C-блоки) и коммутатор-маршрутизатор (S-блок). В академических ПЛИС для обеспечения программируемой коммутации существует две технологии соединений: multi-driver и single-driver, которые распространяются как на соединительные блоки, так и на коммутаторы-маршрутизаторы. Маршрутизатор с использованием двунаправленных межсоединений и двунаправленных ключей, реализованных на буферах с третьим состоянием, получил название multi-driver (при этом также возможно использование n-МОП ключей), а на основе однонаправленных межсоединений и мультиплексорных структур — single-driver switch block.
В настоящее время считают, что применение однонаправленных межсоединений в совокупности с мультиплексорными структурами в маршрутизаторах наиболее перспективно, так как это позволяет получать существенный выигрыш по сравнению с технологией multi-driver по быстродействию (в этом случае задержка распространения сигнала в трассировочных ресурсах ПЛИС уменьшается на 9%) и по площади кристалла (экономия площади кристалла — до 25%). Технология соединений single-driver, известная как DirectDrive, широко используется в современных сериях ПЛИС серий Stratix. Технология single-driver также распространяется на входные мультиплексоры и демультиплексоры в соединительных блоках (рис. 1).
Рассмотрим типовой маршрут проектирования гетерогенных академических ПЛИС, который предполагает использование следующих программных инструментов: ODIN, ABC, T-Vpack и VPR. ODIN конвертирует схемное описание некоторого сложно-функционального устройства (benchmark, тестовая схема на языке Verilog HDL) в специальный файл в формате .blif, в котором выделяет логические вентили для описания логики устройства и «черные ящики» для гетерогенных блоков.
Далее с помощью инструмента ABC (существуют и другие программные инструменты минимизации булевых функций в базис ПЛИС типа ППВМ с использованием 4-входовой LUT и D-триггера логического блока, такие как SIS и FlowMap) проводится логическая оптимизация схемы на основе специального стиля описания, независимого от технологии проектирования БИС, и ее размещение в логические блоки академической ПЛИС. Выходным также является файл в формате .blif, в котором выделяются LUT, D-триггеры логических блоков и гетерогенные блоки (листинг 1).
# Benchmark “iir1” written by ABC … .latch n279 hetero_REGISTER_61_1838_out re iir1_clk_i_0 0 .latch n284 hetero_REGISTER_61_1839_out re iir1_clk_i_0 0 .latch n289 hetero_REGISTER_61_1840_out re iir1_clk_i_0 0 .latch n294 hetero_REGISTER_61_1841_out re iir1_clk_i_0 0 .latch n299 hetero_REGISTER_61_1842_out re iir1_clk_i_0 0 .latch n304 hetero_REGISTER_61_1843_out re iir1_clk_i_0 0 … .names iir1_dat_i_4 iir1_rst_i_0 hetero_REGISTER_61_1906_out n1533 n999 00-1 0 -000 0 .names iir1_dat_i_5 iir1_rst_i_0 hetero_REGISTER_61_1907_out n1533 n1004 00-1 0 -000 0 .names iir1_dat_i_6 iir1_rst_i_0 hetero_REGISTER_61_1908_out n1533 n1009 00-1 0 -000 0 .names iir1_dat_i_7 iir1_rst_i_0 hetero_REGISTER_61_1909_out n1533 n1014 00-1 0 -000 0 .end .model mult_36 .inputs a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 .outputs c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 .blackbox .end Листинг 1. Выходной файл инструмента ABC в формате .blif |
Инструмент T-Vpack перепаковывает файл в .blif-формате (LUT и D-триггеры) в кластеры логических блоков (типовой размер кластера — 2–12 ЛБ; число входов LUT — 2–7; длина межсоединений — 1–8), которые аналогичны кластерам в ПЛИС FLEX8, 10K или кластерам ПЛИС Virtex, и формирует выходной файл в .net-формате для VPR (листинг 2). VPR размещает кластеры логических блоков и гетерогенные блоки по кристаллу ПЛИС и организует глобальные и локальные трассировочные ресурсы для меж- и внутрикластерной связи логических блоков наиболее оптимальным образом, с учетом требований, например, к минимальной ширине трассировочного канала, быстродействию, экономии площади кристалла и др. (рис. 2). Для размещения функциональных блоков на кристалле ПЛИС применяется алгоритм «имитации отжига». Процесс «имитации отжига» может быть представлен на основе четырех ключевых компонентов: состояния текущего решения, набора перемещений из одного состояния в другое, целевой функции стоимости для оценки каждого состояния и «схемы охлаждения», определяющей, как можно перейти от начального поиска к локальной оптимизации. Разводка электрических связей между кластерами осуществляется с учетом задержек распространения сигналов в трассировочных ресурсах ПЛИС.
.clb hetero_REGISTER_38_960_out pinlist: hetero_H_SKEL_14_101_4 iir1_valid_0 n1324 n1325 hetero_H_SKEL_14_102_4 hetero_H_SKEL_14_102_5 hetero_REGISTER_38_961_out hetero_H_SKEL_14_102_6 hetero_REGISTER_38_962_out hetero_H_SKEL_14_102_7 hetero_REGISTER_38_963_out hetero_H_SKEL_14_102_8 hetero_REGISTER_38_964_out hetero_H_SKEL_14_102_9 hetero_REGISTER_38_965_out open open open open open open open hetero_REGISTER_38_960_out n1414 n1416 n1420 n1422 n1426 n1428 n1432 n1434 n1438 iir1_clk_i_0 subblock: hetero_REGISTER_38_960_out 0 1 2 3 22 32 subblock: n1414 4 5 ble_0 6 23 open subblock: n1416 4 5 ble_0 6 24 open subblock: n1420 7 8 ble_1 open 25 open subblock: n1422 7 8 ble_2 open 26 open subblock: n1426 9 10 ble_3 open 27 open subblock: n1428 9 10 ble_4 open 28 open subblock: n1432 11 12 ble_5 open 29 open subblock: n1434 11 12 ble_6 open 30 open subblock: n1438 13 14 ble_7 open 31 open Листинг 2. Выходной файл инструмента T-Vpack в формате .net |
Для работы этих программ в среде Windows необходимо использовать свободно распространяемую UNIX-подобную среду Cygwin. Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды. Процесс инсталляции необходимо начать на сайте [2] и загрузить программу setup.exe, далее с помощью этой программы нужно скачать следующие приложения: GCC, GDB, X Windows [3] и др. Более подробную информацию можно получить на сайте [4].
Ниже показано использование инструментов T-Vpack и VPR для размещения и трассировки тестовой схемы БИХ-фильтра y[n] = b10×x[n]+b11×x[n–1]+b12×x[n–2]+a11×y[n–1]+a12×y[n–2] [5] в базис гетерогенных (со встроенными блоками перемножителей 36×36) ПЛИС типа ППВМ с одноуровневой структурой межсоединений.
Пример использования программных инструментов:
…/T-VPACK_HET/t-vpack.exe iir1.map4.latren.blif iir1.map4.latren.net -inputs_per_cluster 22 -cluster_size 10 -lut_size 4 …/VPR_HET/vpr.exe iir1.map4.latren.net k4-n10.xml place.out route.out |
Информация об архитектуре ПЛИС содержится в файле k4-n10.xml (листинг 3). В этом файле находится информация: о требуемых размерах кристалла; о сопротивлении и минимальных геометрических размерах n- и p-МОП-ключей; о емкостях входных буферов мультиплексорных структур соединительных блоков, задержках сигналов через эти буферы и мультиплексоры; о типах маршрутизаторов; о соединительных блоках; о сегментации межсоединений в каналах, о типе межсоединений (двунаправленные или однонаправленные) и их сопротивлении и емкости; о ширине трассировочного канала ядра и периферийного канала между ядром и блоками ввода/вывода и др.
<architecture> <layout auto=“1.000000” /> — <device> <sizing R_minW_nmos=“5726.870117” R_minW_pmos=“15491.700195” ipin_mux_trans_size=“1.000000” /> <timing C_ipin_cblock=“1.191000e-14” T_ipin_cblock=“1.482000e-10” /> <area grid_logic_tile_area=“30000.000000” /> < ! Спецификация на трассировочные каналы> <Задается ширина периферийного трассировочного канала относительно самого широко канала ядра и устанавливается равномерное распределение межсоединений в канале> — <chan_width_distr> <io width=“1.000000” /> <x distr=“uniform” peak=“1.000000” /> <y distr=“uniform” peak=“1.000000” /> </chan_width_distr> <switch_block type=“wilton” fs=“3” /> </device> < ! Пример спецификации ключа для однонаправленных межсоединений > < Задается тип ключа, его имя, сопротивление, входные и выходные емкости, внутренняя задержка ключа, геометрический размер мультиплексора и буфера восстановления уровня в условных единицах площади, привязанных к минимальной ширине (канала) транзистора для получения минимальной площади > — <switchlist> <switch type=“mux” name=“0” R=“94.841003” Cin=“1.537000e-14” Cout=“2.194000e-13” Tdel=“6.562000e-11” mux_trans_size=“10.000000” buf_size=“1” /> </switchlist> < ! Пример спецификации на однонаправленные сегментированные межсоединения > < ! Задаются частота сегментации межсоединения в канале, длина сегмента (сколько кластеров проходит межсоединение без сегментации), направление передачи сигнала (однонаправленное или двунаправленное межсоединение), сопротивление и емкость межсоединения, схема депопуляции (удаление) маршрутизаторов на заданную длину сегмента (1 – есть, 0 – нет маршрутизатора), схема депопуляции подключений межсоединений к входам кластера с помощью соединительных блоков на заданную длину сегмента>
— <segmentlist> Листинг 3. Фрагмент xml-файла с описанием архитектуры ПЛИС |
На рис. 3 показана гетерогенная архитектура ПЛИС типа ППВМ с одноуровневой структурой межсоединений размером 10×10 кластеров и встроенными блоками перемножителей 36×36 (9 шт.) в VPR5.0. Каждый кластер состоит из 10 ЛБ, а каждый блок — из 4-входовой LUT и триггера. По периферии кристалла располагаются блоки ввода/вывода. В базисе ПЛИС размещена тестовая схема БИХ-фильтра. Задействованные блоки перемножителей для реализации БИХ-фильтра отображены оранжевым цветом. Трассировочные ресурсы ПЛИС не подвергаются оптимизации. На рис. 4 представлены электрические связи между функциональными блоками ПЛИС (4-входовая LUT, размер кластера — 10 ЛБ).
На рис. 5 приведена архитектура ПЛИС после оптимизации (размещение и трассировка). Зеленым цветом показан выделенный кластер из ЛБ (блок 89 n1071 c координатами (6,8)). Синим цветом — функциональные блоки (1 перемножитель, 3 кластера и 5 блоков ввода/вывода), которые связаны с коэффициентом объединения по входу FCin (показывается число межсоединений в трассировочном канале, которые могут быть подключены к входу функционального блока; значение задается в долях от W) выделенного кластера; красным цветом — блоки, которые связаны с коэффициентом разветвления по выходу FCout выделенного кластера (1 перемножитель, 7 кластеров). На рис. 6 представлена ПЛИС с общими трассировочными ресурсами после размещения и трассировки связей между блоками.
На рис. 7 показаны общие трассировочные ресурсы, которые заложены в структуру программируемых межсоединений. Выделенный кластер — ярко-зеленого цвета. В темно-зеленый цвет окрашены направления коммутации межсоединений в маршрутизаторах. Синим цветом (синие линии и квадраты) — подключение трассировочных ресурсов к входам кластера с помощью соединительных блоков (мультиплексоров). Соединительные блоки подключают входы кластера к трассировочным каналам. Выходы кластера по методологии соединений single-driver switch block напрямую подключаются к мультиплексорам маршрутизаторов. Для соединительных блоков задается коэффициент объединения по входу FCin = 0,25. Для кластеров ядра ПЛИС выходы логических блоков подключаются к 13 мультиплексорам маршрутизаторов, которые находятся слева (7 мультиплексоров) и справа (6 мультиплексоров) от выделенного кластера, с коэффициентом разветвления по выходу FCout = 1 (рис. 7).
Красным цветом (красные линии и квадраты) показаны выходы кластера, межсоединения, связанные с коэффициентом разветвления по выходу с выделенным кластером, и избыточные (неиспользуемые) трассировочные ресурсы.
На рис. 8 представлены только те трассировочные ресурсы, которые необходимы для реализации БИХ-фильтра в базисе гетерогенной ПЛИС. Синие линии (соединительные блоки и канальные трассировочные ресурсы) связаны с коэффициентом объединения по входу (синие крестики), а красные линии и красные квадраты (выходы кластера) — с коэффициентом разветвления по выходу. Черным цветом показаны входы/выходы кластеров, не связанные с выделенным кластером, этим же цветом обозначены канальные трассировочные ресурсы и различные межсоединения (в маршрутизаторах и соединительных блоках), относящиеся к задаче размещения БИХ-фильтра в базис ПЛИС.
Горизонтальный и вертикальный трассировочные каналы состоят из 26 однонаправленных межсоединений, то есть ширина канала W = 26 (рис. 9). Канал разделяет коммутатор-маршрутизатор типа wilton с коэффициентом разветвления FS = 3, такой коммутатор обладает лучшей разводимостью (большее число путей маршрутизации в пределах заданного направления) и позволяет организовать длинные межсоединения. VPR 5.0 дает возможность использовать 3 типа маршрутизаторов: subset, wilton, universal.
Треугольники (серые и черные) по периферии маршрутизатора показывают направление передачи сигналов по межсоединениям. Серые треугольники по периферии маршрутизатора указывают на то, что пара разнонаправленных межсоединений проходит через маршрутизатор непрерывно (без использования ключей в горизонтальном или вертикальном направлениях). В рассматриваемом примере межсоединения в каналах непрерывно проходят через 2 кластера, в этом случае L = 2.
Желтой черточкой и черной стрелкой показаны места сегментации пары разнонаправленных межсоединений на периферии маршрутизатора. В позиции желтых черточек осуществляется подключение выходов соседних кластеров и выходов гетерогенных блоков (перемножителей). Цифрами обозначена разрядность мультиплексоров. Например, число 13 — это мультиплексор 13 в 1 (рис. 9).
Рассмотрим вертикальный трассировочный канал и левый верхний маршрутизатор от блока 89, находящиеся в ядре кристалла (рис. 9а). С каждой стороны маршрутизатора имеется 13 входящих межсоединений, из них 7 входящих непрерывных (серые треугольники, обращенные острием в маршрутизатор) и 6 входящих сегментированных межсоединений (черные треугольники, обращенные острием в маршрутизатор), и 13 исходящих межсоединений: 7 исходящих непрерывных (серые треугольники, обращенные острием от маршрутизатора) и 6 исходящих сегментированных (желтые черточки).
Все входящие межсоединения в маршрутизатор имеют коэффициент разветвления FS = 3. В левом нижнем маршрутизаторе ситуация меняется на противоположную (рис. 9б). С каждой стороны маршрутизатора имеется 13 входящих межсоединений, из них 6 входящих непрерывных и 7 входящих сегментированных межсоединений, и 13 исходящих межсоединений: 6 исходящих непрерывных и 7 исходящих сегментированных. Таким образом, в первом случае с каждой стороны по 6, а во втором — по 7 мультиплексоров по методологии single-driver.
Рассмотрим коммутаторы-маршрутиза-торы, расположенные на периферийных трассировочных каналах ПЛИС. На рис. 10а показан коммутатор-маршрутизатор, который находится в центре периферийного вертикального трассировочного канала. Слева — кластеры логических блоков, а справа — блоки ввода/вывода. К 13 мульти-плексорам небольшой разрядности (4 и 5) с левой стороны маршрутизатора подключаются выходы кластеров и блоков ввода/вывода. На рис. 10б показан коммутатор-маршрутизатор в углах пересечения горизонтального и вертикального периферийных трассировочных каналов.
Заключение
Ведущие мировые дизайн-центры (более 200) и учебные образовательные центры (более 1000) широко используют программные инструменты T-Vpack и VPR как для проектирования, так и для исследования новых архитектур ПЛИС типа ППВМ.
В настоящее время разработчики не только коммерческих, но и академических ПЛИС пришли к выводу о целесообразности использования однонаправленных сегментированных межсоединений различной длины в трассировочных каналах и мультиплексорных структур в соединительных блоках и коммутаторах-маршрутизаторах, что позволяет получать существенный выигрыш по быстродействию и площади кристалла. n
Литература
- http://www.eecg.utoronto.ca/vpr
- http://www.cygwin.com
- http://cygwin.com/xfree
- http://www.intuit.ru/department/security/issec/5/
- http://opencores.org
- Betz V., Campbell T., Fang W. M., Jamieson P., Kuon K. I., Luu J., Marquardt A., Rose J., Ye A. VPR and T-VPack User’s Manual. Summer 2008. VPR 5.0 Full Release, July 29, 2009.
- Lewis D., Betz V., Jefferson D., Lee A., Lane C., Leventis P., Marquardt S., McClintock C., Pedersen B., Powell G., Reddy S., Wysocki C., Cliff R., Rose J. The Stratix Routing and Logic Architecture // FPGA’03, Feb. 23–25, 2003. Monterey, California, USA.
- Luu J., Kuon I., Jamieson P., Campbell T., Ye A., Fang W. M., Rose J. VPR 5.0: FPGA CAD and architecture exploration tools with single-driver routing, heterogeneity and process scaling // FPGA, 2009. Feb. 22–24, 2008. Monterey, California, USA.
- Brown S., Francis R., Rose J., Vranesic Z. Field-Programmable Gate Arrays. Kluwer Academic Publishers, 1992.
- Wilton S. Architectures and Algorithms for Field-Programmable Gate Arrays with Embedded Memories. Ph. D. Dissertation. University of Toronto, 1997. (http://www.ece.ubc.ca/~stevew/publications.html).
- Chang Y. W., Wong D. F., Wong C. K. Universal Switch Modules for FPGA Design. ACM Trans. on Design Automation of Electronic Systems. Jan. 1996.
- Lemieux G., Lee E., Tom M., Yu A. Direction and Single-Driver Wires in FPGA Interconnect // International Conference on Field-Programmable Technology, 2004.
- http://ru.wikipedia.org/wiki/Cygwin