Система CATAPULT С SYNTHESIS: C++ в FPGA

    Первоисточник

    Компания Mentor Graphics - признанный лидер на рынке средств автоматизированного проектирования электронных систем на базе современных ПЛИС, поэтому информация о ее последних разработках должна заинтересовать специалистов, работающих в этой области. Предлагаемая публикация, рассказывающая об одной из новинок Mentor Graphics - системе Catapult С Synthesis, открывает серию статей, посвященных инструментам, ориентированным на разработку современных систем на кристалле и систем на программируемом кристалле.

    Разрыв в степени интеграции и быстродействии между заказными интегральными схемами и интегральными схемами, реализованными на базе современных FPGA, стремительно сокращается. Появление FPGA, содержащих встроенные процессорные ядра, блоки памяти, специализированные арифметические и DSP-блоки, делает их использование для проектирования сложных систем все более привлекательным. При этом сохраняются такие преимущества ПЛИС, как возможность перепрограммирования и существенно более короткий цикл проектирования. Однако с увеличением степени интеграции и быстродействия возрастают и требования к средствам проектирования FPGA. Многие технологии, подходы, ранее свойственные только маршрутам проектирования заказных схем, становятся обязательными при разработке FPGA. Одна из таких технологий - высокоуровневый синтез.

    Традиционно проектирование аппаратных систем цифровой обработки сигналов начинается с верификации алгоритмов и общей архитектуры системы с помощью модели, реализованной на одном из языков высокого уровня. Как правило, используются язык "т" системы MATLAB или обычный C/C++. После того, как алгоритмы и архитектура на системном уровне отлажены, описание на языке высокого уровня вручную переводят в RTL-описание, пригодное для последующего синтеза. В процессе такого перевода решаются задачи выбора элементной базы, микроархитектуры проекта и собственно написания RTL-кода. Верификация RTL-описания проводится с помощью систем логического моделирования. Процесс носит итерационный характер и требует значительных временных затрат. Другие недостатки традиционного подхода - ограниченные возможности анализа альтернативных вариантов реализации, необходимость вручную проводить модификацию RTL-описания при внесении изменений в исходную спецификацию, а также жесткая привязка к выбранной микроархитектуре и технологии реализации, например к библиотеке конкретного семейства FPGA.

    В отличие от традиционного подхода, использование системы Catapult С Synthesis позволяет автоматически синтезировать RTL-описание из исходного описания алгоритмов на C/C++. Если моделирование архитектуры на системном уровне выполнялось с помощью MATLAB, то необходимо перевести его в C/C++. Эта операция не требует больших усилий, поскольку языки "т" и C/C++ очень близки по своей структуре. Преимущества такого подхода в следующем:

    - устраняется разрыв между алгоритмическим уровнем описания системы (MATLAB, C/C++) и RTL-описанием, поскольку язык C/C++, как правило, хорошо знаком как системным инженерам, так и специалистам, работающим с RTL-описанием (VHDL и/или Verilog);

    - основная нагрузка по отладке и верификации проекта переносится на более высокий уровень абстракции, а на этап синтеза поступает проект, уже практически полностью отлаженный на системном уровне. Поскольку верификация модели на C/C++ выполняется на несколько порядков быстрее, чем RTL-модели, сроки проектирования могут быть кардинально сокращены;

    - анализ альтернативных вариантов реализации алгоритмов на C/C++ и внесение возможных изменений выполняется быстро и эффективно;

    - описание проекта на C/C++ не привязано к выбору микроархитектуры и конкретной технологии реализации. Это преимущество является ключевым, поскольку позволяет полностью абстрагироваться от особенностей реализации, не перегружая исходное описание дополнительными операторами настройки на конкретную элементную базу. В зависимости от потребностей текущей разработки одно и то же описание может быть использовано как для реализации проекта на базе FPGA различных типов, так и в виде ASIC. Настройка и оптимизация RTL-описания под конкретную элементную базу осуществляется средствами системы Catapult С Synthesis в процессе синтеза RTL-кода из описания на языке C/C++.

    Процесс синтеза включает следующие процедуры:

    - задание интерфейсов и настроек для процедуры синтеза. Для задания интерфейсов можно использовать встроенные объекты, реализующие стандартные протоколы ввода/вывода, либо создать собственные с помощью программы Catapult С Library Builder. Настройки включают выбор способа представления внутренних данных (регистры, память, стек и т.д.), задание структурных параметров, определяющих, надо ли создавать конвейеры, распараллеливать циклы и т.д. На этом этапе в алгоритм фактически вводится начальная привязка ко времени;

    - выделение в исходном C/C++ описании отдельных команд, их оптимизация и распределение по тактам. Окончательное введение понятия времени в описание устройства. Данная операция проводится полностью автоматически, на основе введенных ранее параметров;

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

    - анализ алгоритма и выбранной микроархитектуры (настроек). Для анализа используется иерархическая диаграмма Ганта, позволяющая выявить "узкие" места и впоследствии устранить их путем изменения параметров настройки или изменения исходного алгоритма. Поддерживаются кросс-ссылки с исходным описанием на C/C++. Можно проводить оптимизацию по критериям общая площадь/ быстродействие с учетом способа реализации;

    - генерация результирующего RTL-кода (с учетом выбранной технологии реализации).

    Далее проект поступает на этап логического синтеза с последующей реализацией в виде FPGA или ASIC.

    Верификация проекта проводится путем моделирования с последующим сравнением результатов с результатами, полученными для исходной модели на C/C++. На промежуточных этапах выполняется потактовое и RTL-моделирование, а по результатам логического синтеза - моделирование на вентильном уровне.

    Важно, что исходное тестовое окружение на уровне модели на C/C++ в дальнейшем используется для всех уровней представления проекта. Это достигается за счет применения специального конвертера транзакций (на базе языка SystemC), который преобразует данные исходного тестового окружения (поток данных из тестовой программы) в сигналы для моделирования на RTL-уровне.

    Процесс верификации может быть организован на базе платформы ModelSim или на базе платформы Questa, которая поддерживает расширенный набор современных методов верификации, включающий следующие технологии: ABV (assertion-based verification), CDV (coverage-driven verification), TBA (testbench automation), FV (formal verification), SCV (System С verification), SVV (SystemVerilog verification) и другие. Для ускорения верификации больших проектов можно использовать системы аппаратной эмуляции VStation и аппаратного прототипирования.

    Анализ использования продукта Catapult С Synthesis такими компаниями, как Nokia, Alcatel, STMicroelectronics, Siemens и другими, показал, что по сравнению с традиционным маршрутом ручной реализации RTL-описания время проектирования может быть сокращено в 10-20 раз. При этом качество реализации (количество используемых вентилей) не уступает, а в некоторых случаях превосходит результаты, полученные при ручном кодировании. Наибольшая эффективность обеспечивается при реализации DSP-алгоритмов для телекоммуникационных систем различного назначения, в том числе беспроводных, систем обработки видеоизображений, систем фильтрации, кодирования-декодирования. В ближайшее время предполагается расширить сферу применения системы на область управляющих и вычислительных систем общего назначения.