Аппаратно-программное проектирование сложных функциональных блоков с использованием систем на кристалле

7

СИСТЕМЫ АВТОМАТИЗИРОВАННОГО

ПРОЕКТИРОВАНИЯ

УДК 681.3

АППАРАТНО-ПРОГРАММНОЕ ПРОЕКТИРОВАНИЕ СЛОЖНЫХ ФУНКЦИОНАЛЬНЫХ БЛОКОВ С ИСПОЛЬЗОВАНИЕМ СИСТЕМ НА КРИСТАЛЛЕ

И.А. Зубакин, Ш.С. Фахми, С.С. Шагаров

С увеличением возможностей технологии проектирования СБИС класса «система на кристалле» становится все более привлекательным и необходимым средством создание интегрированных САПР БИС/СБИС с программируемой структурой. В статье рассматриваются некоторые этапы проектирования (аппаратная и программная части проекта схемы) и верификации схемы в целом на примере разработки умножителя с использованием аппаратно-программных средств САПР на базе технологии «система на кристалле».

Ключевые слова: система на кристалле, уровень регистровых передач, сложный функциональный блок, программируемая логическая интегральная схема.

В настоящее время сложность систем на кристалле (СнК) и разновидности инженерных решений микропроцессорных систем на базе программируемых логические интегральных схем (ПЛИС) привели к бурному развитию методологии проектирования. Методология сопряженного проектирования - методология, которая позволяет архитекторам системы и инженерам верификации работать на более высоком уровне абстракции. Трудности проектирования СнК связаны как с необходимостью выполнять проекты в сжатые сроки, так и с постоянно возрастающей сложностью систем. По существующим оценкам средний объем современных проектов превышает сотни тысяч вентилей и имеет тенденцию постоянного роста, и в окончательной стоимости проекта все большую роль играют разработанные программные и аппаратные ресурсы. Возрастание сложности современных проектов как в части объемов аппаратного обеспечения (количество логических вентилей), так и в части объемов программного обеспечения (объем программного кода) делает проблему технологической, методической и методологической поддержки данного направления актуальной [1, 2].

СнК образуют динамический, быстро растущий сектор рынка. Интеграция все большего числа сложных функциональных блоков (СФ-блоков) в одном кристалле сопровождается сокращением площади плат при реализации проектов, повышением быстродействия систем и их надежности, уменьшением потребляемой мощности и стоимости. Возможность быстрой реконфигурации схем непосредственно в работающем устройстве открывает перспективы не только эффективной отработки прототипа проекта, но и создания принципиально новых структур с динамическим реконфигурирова-нием и многофункциональным использованием аппаратных и программных средств. Все перечисленные реалии и отсутствие материала по предметной области делает проблему методической поддержки сопряженного проектирования СнК востребованной и нуждающейся в популяризации.

Для сопровождения проектирования цифровых устройств обработки сигналов на основе перспективной технологии СнК различные производители предлагают интегрированные программные средства проектирования. В данной статье рассмотрена среда БавЮЫр, которая представляет программный пакет, обеспечивающий управление всем

Введение

Средства проектирования

процессом реализации устройств на основе технологии СнК. Среда БавЮЫр имеет характерные черты других подобных САПР, а потому ее возможности представляют интерес для анализа и исследования. На современном этапе наблюдается тенденция специализации средств автоматизированного проектирования электронных изделий, что является важнейшим условием эффективности разработки и ускорения выпуска продукции. Такой пример сочетания специализации, функциональности и открытости современных САПР демонстрирует указанная среда разработки.

Новизна СнК заключается в одновременной аппаратно-программной реализации на одном кристалле значительной (если не всей) функционально законченной части аппаратуры. Поэтому средства моделирования системного уровня как самой аппаратуры, так и кристаллов СнК одни и те же. За рубежом сейчас действуют сотни дизайн-центров при аппаратостроительных фирмах и масса отдельных дизайн-центров. В них соразработчиками элементной базы выступают разработчики аппаратуры. Они либо доводят проект до .е&Г файла, который передается разработчикам кристаллов, либо делают только системный проект до уровня регистровых передач (ЯТЬ-уровня) [3].

Кроме того, поскольку СнК - изделие не только очень сложное, но и дорогое при небольших объемах выпуска, ошибки проектирования должны быть исключены. Поэтому в новой методологии, кроме математического моделирования, необходим этап создания прототипа устройства на базе неких специальных аппаратно-программных платформ, которые сегодня так и называются - алгоритмически ориентированные платформы проектирования. Они содержат набор элементов: ПЛИС, процессорные ядра, память, определенную шинную архитектуру, интерфейсы и т.д., которые позволяют создать прототип схемы до ее воплощения в СБИС. А дальше разработчик решает, остановиться ему на уровне ПЛИС или производить специализированные СБИС на основе СнК [4].

В настоящее время СнК включает в свой состав несколько миллионов эквивалентных вентилей, разнообразные типы процессоров, в том числе и цифровой обработки сигнала, т.е. представляет собой большую сложную систему. Это обстоятельство заставляет при всей общности методологии проектирования уточнять ее на примере конкретной СнК, в качестве которой в данной статье выбрана реконфигурируемая СнК фирмы ТпБсепё (2уЬо§1с) [5, 6].

Целью данной статьи является описание маршрута сопряженного проектирования аппаратно-программных частей СФ-блоков на основе 32-разрядной СнК, входящей в состав лабораторного макета [7], и отобразить основные проектные процедуры верификации и отладки на примере цифрового устройства умножения целых чисел. Также в статье показано, что весь процесс проектирования проводится как начальный этап, а соверификация и сосимуляция - это последующие самостоятельные этапы. Хотя имеются разные трактовки сопряженного проектирования, но реально совместные процедуры выполняются в различных комбинациях на различных этапах проектирования [8].

Следует отметить, что идеология разработки устройств на основе технологии «реконфигурируемая СнК» отличается от проектирования устройств в многокристальном исполнении. Это связано с тем, что реконфигурируемые СнК представляют собой приборы системного уровня интеграции, т.е. сочетают на одном кристалле как разнородные аппаратные структуры (процессор, программируемая логика, оперативная память), так и архитектурные элементы их взаимодействия (адресные селекторы, конфигурируемая системная шина). Специфика разработки цифровых устройств на основе рекон-фигурируемой СнК заключается в интеграции с помощью САПР двух потоков проектирования:

- реализации аппаратной составляющей системы на основе конфигурируемой системной логики СБЬ (ячейки матрицы БРОЛ и средства соединений между ними);

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

Сопряженное проектирование - процесс параллельного проектирования аппаратных и программных средств, при котором оценивается целесообразность выбора аппаратной или программной реализации определенного фрагмента проекта. Этот процесс также позволяет проектировщикам увидеть, как система могла бы работать с данным разделением аппаратных средств ЭВМ и программного обеспечения [9].

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

Прототипирование аппаратно-программных частей проекта

В основу прототипирования положен простой принцип: необходимо создать поведенческую модель СФ-блока до начала детальной разработки аппаратной и программной частей проекта. При этом прототип должен представлять собой точную (до цикла) поведенческую модель всего СФ-блока, включая его аппаратную и программную части [10].

Рассмотрим цифровое устройство умножения целых чисел (рис. 1), включающее в себя три основных блока:

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

б) аппаратная часть проекта, реализованная на языке УИОЬ, для выполнения операции умножения и импортированная в САПР;

в) блок вывода результатов умножения на индикацию, реализуемый на элементах из библиотеки СФ-блоков.

Программная Аппаратная

Рис. 1. Цифровое устройство умножения целых чисел

Разработка аппаратной части проекта. Для разработки аппаратной конфигурации САПР БавЮЫр обеспечивает возможность интерактивного выбора составных фрагментов схемы и средств задания соединений между ними. Применение САПР предполагает эффективные, наглядные и контролируемые средства описания проекта, при этом наиболее распространенными являются графический и текстовый (рис. 2).

P4sW_HW (Target Device: TA7S20-60Q) (Evaluation License) - Triscend FastCt]jp

Constraint Tools View Help

Import Export ^ Generate

Bind

iL Device Link ^¡j ¿¡j Qjf

fci Dedicated Resources

Импортирование СФ-блоков

Cache

JML;, Clocks

J

DMA

JÎJIЪ/ ICU

MCU

jf ContiguraDle System Logic

Библиотека \ ^^ _

модулей

' 'jFind <Fmà target?

И> ;=

'-Jt Module Library

il>_J Basic Functions

0-_J Encryption Functions

I/O Pads <>I_J CSI Bus Interfaces <j-(_j| CSI Bus Bridges <i>t_J Peripherals Q"LJ| Deprecated <> _j Imported M2xl

CmdReg_A CmdReg_B

-K]

Output_A

M2xl A

Поле ПЛИС

У

Post-bind Resource Utilization

Ofl CSL Cells: 80/2048Ц 4 % j|| I/O Pins: 8/93|i

:.j.-l Commana Output

Рис. 2. Графические средства описания проекта

Средства описания проекта САПР FastChip включают как собственные средства (библиотечные элементы), так модули, создаваемые пользователем. Набор предлагаемых средой FastChip предопределенных элементов достаточно широк (около 150), постоянно расширяется, и его можно разделить на следующие группы:

- типовые параметризируемые элементы вычислительной техники (логические элементы, мультиплексоры, счетчики и т. д.), конкретные параметры которых (разрядность, коэффициент пересчета, начальное состояние) могут назначаться разработчиком;

- специализированные элементы взаимодействия микропроцессорной части реконфи-гурируемой СнК и матрицы программируемой логики (адресные селекторы, элементы системной шины, схемы синхронизации и ожидания);

- специфичные для реконфигурируемой СнК составляющие (буферные элементы, порты ввода-вывода);

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

Библиотечные модули, от простых (логические вентили, сумматоры, умножители, компараторы, счетчики, элементы памяти) до сложных (блок шифрования DES), пред-

ставляют собой готовые к использованию виртуальные элементы принципиальной схемы, являющиеся «блоками интеллектуальной собственности - IP». Такие параметризи-руемые конструкции в терминологии САПР FastChip называются «Soft Modules», что отражает возможность их легкой модификации разработчиком. Функции модуля выполняются аппаратно с помощью внутрикристальной программируемой логики. Следует отметить, что библиотечные модули не содержат никакой информации о своей компоновке внутри FPGA, следовательно, их быстродействие будет зависеть от конкретного варианта размещения, трассировки и загруженности кристалла.

После определения необходимых для решения задачи библиотечных модулей разработчик размещает выбранные блоки в рабочей области (проектном окне) экрана САПР и при необходимости определяет их символические имена. Далее проектировщик осуществляет настройку изменяемых параметров выбранных модулей, например, разрядность счетчика, начальное состояние регистров и т.д., путем установки конкретных числовых значений в полях конфигурации модуля. Среда FastChip оперативно отражает оценку затрат на реализацию (число требуемых логических ячеек, портов ввода-вывода, адресных селекторов) в зависимости от сложности проекта.

Синтез умножителя на языке VHDL. Наиболее универсальное решение в области синтеза принадлежит компании Synplicity (САПР Synplify), которое покрывает все связанные с этим аспектом области проектирования, а именно логический и физический синтез для ПЛИС любых производителей, макетирование специализированных устройств на ПЛИС, а также средства отладки прошивок на уровне исходного RTL описания и написанные на языке VHDL.

Операция умножения, независимо от способа реализации, требует использования n х (m - 1) полных одноразрядных сумматоров, где m - число разрядов сомножителей. Реализация умножения с использованием n -разрядных сумматоров порождает широкую номенклатуру параллельных умножителей, в том числе матричную и пирамидальную структуры и смешанные варианты [3]. Устройства этого класса способны выполнить умножение за один такт работы схемы. Подобными характеристиками обладают схемы, построенные на основе набора параллельных умножителей меньшей разрядности с последующим суммированием частичных произведений [3], однако вопросы, связанные с синтезом устройства умножения, не являются целью статьи, а реализация предлагается с использованием встроенной в САПР функции умножения.

Упрощенная программа реализации операции умножения: library IEEE;

use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity Mul2x1 is

port ( A, B : in std_logic_vector(7 downto 0);

PP : out std_logic_vector(15 downto 0)); end Mul2x1;

architecture AMult of Mul2x1 is signal sA, sB : unsigned (7 downto 0); signal sP : unsigned(15 downto 0); begin

sA <= unsigned(A); sB <= unsigned(B); sP <= sA * sB; PP <= std_logic_vector(sP); end AMult;

По описанию на уровне RTL с помощью программы логического синтеза формируется список цепей (gate level netlist), который учитывает задержки в библиотечных элементах (но, как правило, не учитывает временные задержки между соединениями) и используется для временной верификации проекта (timing verification). Полученную в результате RTL синтеза схему (рис. 3) необходимо импортировать в среду САПР для дальнейшей загрузки в ПЛИС (рис. 2).

Рис. 3. Схема, получаемая в результате синтеза RTL

Разработка программной части проекта. Программная часть содержит два программно доступных регистра: Command Registr 1 и 2, аппаратная часть включает два модуля (рис. 2): библиотечный модуль Output_A для вывода результата умножения на индикацию и импортированный модуль (в виде .edif файла) M2x1_A, выполняющий операцию умножения целых чисел. Далее выполняются две процедуры, необходимые для верификации проекта: подключение входов и выходов проекта к выводам СнК в редакторе I/O Editor и связывание модулей (Bind) (рис. 2).

Наличие процессора в составе СнК TA7S20-60 позволяет объединить в единый проект аппаратную и программную части. Для этого необходимо воспользоваться средствами программной компиляции, представленными фирмой-производителем САПР. В данном устройстве практически все функции выполнены аппаратно, поэтому код самой программы достаточно прост, и в него входит лишь инициализация программных регистров и записи в них значений.

Первоначально необходимо сгенерировать так называемый заголовочный файл (header-файл). Для этого нужно в панели инструментов в среде FastChip выбрать команду Generate, которая его создаст. Теперь в папке с проектом появился файл с расширением *.h, где * - название проекта.

После этого в папку с проектом нужно скопировать несколько файлов для осуществления компиляции и верификации программной части (main.c, init.s, main.elt и make) из каталога, представленного САПР: #include "HW_SW.h"

#define Reg_A 0x100ffffc /* size in byte(s) = 1, lane = LANEB0 */ #define Reg_B 0x100ffff8 /* size in byte(s) = 1, lane = LANEB0 */ volatile unsigned int *result1 = ( unsigned int * ) Reg_A; volatile unsigned int *result2 = ( unsigned int * ) Reg_B; void init (void) {} void IRQ_Handler (void) {} // функция задержки void wait(unsigned int cnt) { volatile unsigned int i; for (i = 0; i < cnt; i++) { volatile int ii; for(ii=0; ii < 1; ii++) {#ifdef __ARM__ __asm {mov r0, r0 mov r0, r0 mov r0, r0

mov r0, r0} #else asm(Mmov r0, r0");

asm(Mmov r0, r0"); asm("mov r0, r0"); asm("mov r0, r0");

#endif } } } void C_Entry

{ init (); int index=0; while (1){*result1 =0x02; *result2 =0x03; }} Следующий этап процесса разработки программной части - компиляция. Для этого в среде FastChip используется свободно распространяемый компилятор Unix-систем. Чтобы его использовать, надо зайти в эмулятор Unix, который запускается из папки «Triscend SDK 2.6», и в этой папке запустить ярлык «SDK Build Window», после чего появится командная строка. Здесь нужно перейти в каталог с проектом и дать команду make. Если все правильно, то компилятор выдаст сообщение, пример которого представлен на рис. 4.

Е

c:/Proj_Shakeeb/HW_SW

î make

arm-elf-gcc -mcpu=arm7tdmi -I../../../. ./include -I../../ ~l"G:/'. p/include" -ggdb -g2 -mapcs-32 -c -nsoft-float -mstrueture-size-] in.o nain.c

arm-elf-ld -o nain.elf init.o main.o -N -T nain.Id -Map main.nap arm-elf-objcopy —set-start 0x00190001919 -0 ihex main.elf main.hex

ÎflMHHHCTpaTop0US-9 c:/Proj_Shakeeb/HW_SW

Рис. 4. Пример сообщения компилятора

Проектирование и верификация схемы в целом

Концепция прототипирования не может быть реализована без интегрированной среды разработки, позволяющей:

- использовать существующие СФ-блоки независимо от языка или уровня абстракции их описания и разрабатывать новые СФ-блоки;

- собирать прототип из СФ-блоков;

- обеспечить взаимодействие встроенных коммуникационных блоков с прототипом;

- анализировать поведение всей системы.

Рис. 5. Схема умножения чисел

Кроме того, поскольку стандартным языком описания системных моделей выступает УНОЬ, крайне важно, чтобы среда прототипирования избавляла разработчиков от

необходимости вручную переписывать проект системы, а вопросы интегрирования и совместимости были реализуемы в выбранной САПР. В результате сборки всех частей проекта и импортирования .edif файла умножителя в среду САПР FastChip и выполнения процедуры компиляции программным способом были записаны два числа (2 и 3) и произведено их умножение аппаратно с помощью синтезируемой схемы умножителя (рис. 5). Результат выполнения операции выдается на 7-сегментный индикатор через устройство вывода (Output), являющееся элементом библиотеки используемой САПР.

Заключение

Появление наряду с СнК видеосистем на кристалле (ВСнК) не только расширило сферу применения прикладного телевидения (например, благодаря возможности создания телевизионной системы весом несколько граммов, получили распространение беспилотные летательные аппараты, стартующие с ладони), но и сменило метод проектирования прикладных систем, еще более срастив его с проектированием главных систем информатики - компьютеров. Если ранее местом соединений, задаваемых разработчиком, была печатная плата, то современные технологии направлены на реализацию максимально возможного, в пределе - всего многообразия соединений внутри одного кристалла. Это заставляет заново оценивать и пересматривать, дополнять сложившиеся методы проектирования новыми средствами быстрого физического прототипирования ВСнК на различных стадиях процесса проектирования. Такие возможности резко повышают значимость современных САПР и обязательно должны быть поддержаны на этапе подготовки специалистов, что и делается сейчас в рамках программы подготовки специалистов для высокотехнологичных отраслей промышленности.

Перспектива развития высокоуровневого проектирования состоит в том, что Verilog или VHDL способен обеспечить моделирование на системном уровне. Компания Cadence предоставляет все необходимые составляющие для виртуального прототипиро-вания и совместной верификации аппаратной и программной частей на основе виртуального прототипа, причем маршрут проектирования Cadence предусматривает автоматический переход с уровня транзакций к синтезируемым моделям напрямую из VHDL-кода.

На кафедре САПР СПбГЭТУ «ЛЭТИ» разработан макет на базе технологии «система на кристалле», включающий в свой состав 32-разрядный ARM процессор (семейства А7), память, ПЛИС и другие периферийные модули [3]. Макет позволяет осуществить физическое прототипирование систем с применением схем с программируемой логикой, а также выполнить верификацию как на функциональном, так и на вентильном уровнях.

Литература

1. Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах программируемой логики. - СПб: БХВ-Петербург, 2002.

2. Немудров В.Г., Мартин Г. Системы на кристалле. Проблемы проектирования и развития. - М.: Техносфера, 2004.

3. Березин В.В., Фахми Ш.С. Проектирование устройств обработки сигналов на основе технологии «система на кристалле». - СПб: СПбГЭТУ «ЛЭТИ», 2005.

4. Немудров В. Г. «Прогресс» в проектировании отечественных СБИС // Электроника: наука, технология, бизнес. - 2002. - № 6. - С. 5-9.

5. Березин В.В., Золотухо Р.Н., Фахми Ш. С. Отладка аппаратно-программного обеспечения реконфигурируемых систем на кристалле // Компоненты и технологии. -2003. - № 7. - C. 118-122.

6. Березин В.В., Фахми Ш.С. Аппаратно-программные средства для проектирования цифровых устройств. - СПб: СПбГЭТУ «ЛЭТИ», 2005.

7. Березин В.В. Золотухо Р.Н. 32-разрядная реконфигурируемая система на кристалле фирмы Triscend // Компоненты и технологии. - 2003. - №2. -С. 14-20.

8. Березин В.В. Методология автоматизированного проектирования с применением технологии «система на кристалле» (программная часть и системная интеграция) // Промышленные контроллеры и АСУ. - 2004. - № 12. - С. 38-40.

9. Березин В.В., Фахми Ш.С. Использование возможностей контроллера динамической памяти как составной части «системы на кристалле» // Неразрушающий контроль и диагностика окружающей среды, материалов и промышленных изделий: Межвузовский сборник СЗТУ. - 2004. - № 9. - С. 213-225.

10. Фахми Ш.С. Автоматизация проектирования БИС на базе «система на кристалле». - СПб: СПбГЭТУ «ЛЭТИ», 2006.

Зубакин Игорь Александрович - Санкт-Петербургский государственный электротехниче-

ский университет «ЛЭТИ», аспирант, zubakin_@mail.ru

Фахми Шакиб Субхиевич - Санкт-Петербургский государственный электротехниче-

ский университет «ЛЭТИ», кандидат технических наук, доцент, shakeebf@mail.ru

Шагаров Сергей Сергеевич - Санкт-Петербургский государственный электротехниче-

ский университет «ЛЭТИ», студент, shagarovss@mail.ru

УДК 004.421.2:519.178

ОПТИМИЗАЦИЯ АЛГОРИТМОВ ИДЕНТИФИКАЦИИ ГРАФОВОГО ИЗОМОРФИЗМА С.В. Москаленко, Ю.А. Гатчин

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

Ключевые слова: теория графов, распознавание графических образов, определение межграфового изоморфизма.

Введение

В последнее время растет объем обрабатываемой инженерной документации, в частности, приборостроительных и машиностроительных чертежей. Эта тенденция возникла в связи с активизацией использования электронной версии инженерной документации в САПР [1]. Довольно частой практикой для инженеров и проектировщиков является обращение к уже существующей документации, однако данный процесс всегда оказывается трудоемким, так как требует просмотра всей базы чертежей. Для упрощения поиска часто используется текстовая составляющая документа, когда происходит просмотр по ключевым словам. Такой подход весьма эффективен, но существуют трудности, связанные с получением этой текстовой информации (необходимо вмешательство человека), кроме того, набор ключевых слов не всегда точно может описать содержание чертежа. Поиск требуемого изображения в БД есть не что иное, как проблема сопоставления графических объектов, которая может быть решена путем вычисления степени соответствия входного объекта объекту в базе данных (БД) и сведена к процессу сопоставления графов. Для этого инженерная документация сначала приводится к представлению атрибутивных графов, где вершины графов отображают примитивы, полученные из исходных документов (линии, кривые) [2], а топологические связи