Компания Mentor Graphics – признанный лидер на рынке средств автоматизированного проектирования электронных систем на базе современных ПЛИС, поэтому информация о ее последних разработках должна заинтересовать специалистов, работающих в этой области. Предлагаемая публикация, рассказывающая об одной из новинок Mentor Graphics – системе Catapult C Synthesis, открывает серию статей, посвященных инструментам, ориетированным на разработку современных систем на кристалле и систем на программируемом кристалле. (Краткий обзор средств проектирования FPGA компании Mentor Graphics представлен в четвертом номере нашего журнала за 2004 год.)
Разрыв в степени интеграции и быстродействии между заказными интегральными схемами и интегральными схемами, реализованными на базе современных FPGA, стремительно сокращается. Появление FPGA, содержащих встроенные процессорные ядра, блоки памяти, специализированные арифметические и DSP-блоки, делает их использование для проектирования сложных систем все более привлекательным. При этом сохраняются такие преимущества ПЛИС, как возможность перепрограммирования и существенно более короткий цикл проектирования. Однако с увеличением степени интеграции и быстродействия возрастают и требования к средствам проектирования FPGA. Многие технологии, подходы, ранее свойственные только маршрутам проектирования заказных схем, становятся обязательными при разработке FPGA. Одна из таких технологий – высокоуровневый синтез.
Традиционно проектирование аппаратных систем цифровой обработки сигналов начинается с верификации алгоритмов и общей архитектуры системы с помощью модели, реализованной на одном из языков высокого уровня. Как правило, используются язык "m" системы MATLAB или обычный C/C++. После того, как алгоритмы и архитектура на системном уровне отлажены, описание на языке высокого уровня вручную переводят в RTL-описание, пригодное для последующего синтеза. В процессе такого перевода решаются задачи выбора элементной базы, микроархитектуры проекта и собственно написания RTL-кода. Верификация RTL-описания проводится с помощью систем логического моделирования. Процесс носит итерационный характер и требует значительных временных затрат. Другие недостатки традиционного подхода – ограниченные возможности анализа альтернативных вариантов реализации, необходимость вручную проводить модификацию RTL-описания при внесении изменений в исходную спецификацию, а также жесткая привязка к выбранной микроархитектуре и технологии реализации, например к библиотеке конкретного семейства FPGA.
В отличие от традиционного подхода, использование системы Catapult C Synthesis позволяет автоматически синтезировать
RTL-описание из исходного описания алгоритмов на C/C++. Если моделирование архитектуры на системном уровне выполнялось
с помощью MATLAB, то необходимо перевести его в C/C++. Эта операция не требует больших усилий, поскольку языки "m" и C/C++ очень близки по своей структуре. Преимущества такого подхода в следующем:
· устраняется разрыв между алгоритмическим уровнем описания системы (MATLAB, С/С++) и RTL-описанием, поскольку язык С/С++, как правило, хорошо знаком как системным инженерам, так и специалистам, работающим с RTL-описанием (VHDL и/или Verilog);
· основная нагрузка по отладке и верификации проекта переносится на более высокий уровень абстракции, а на этап синтеза поступает проект, уже практически полностью отлаженный на системном уровне. Поскольку верификация модели на C/C++ выполняется на несколько порядков быстрее, чем RTL-модели, сроки проектирования могут быть кардинально сокращены;
· анализ альтернативных вариантов реализации алгоритмов
на C/C++ и внесение возможных изменений выполняется быстро и эффективно;
· описание проекта на C/C++ не привязано к выбору микроархитектуры и конкретной технологии реализации. Это преимущество является ключевым, поскольку позволяет полностью абстрагироваться от особенностей реализации, не перегружая исходное описание дополнительными операторами настройки на конкретную элементную базу. В зависимости от потребностей текущей разработки одно и то же описание может быть использовано как для реализации проекта на базе FPGA различных типов, так и в виде ASIC. Настройка и оптимизация RTL-описания под конкретную элементную базу осуществляется средствами системы Catapult C Synthesis в процессе синтеза RTL-кода из описания на языке C/C++.
На рис.1 представлена организация маршрута проектирования с использованием системы Catapult C Synthesis. После отладки на системном уровне описание проекта поступает в систему Catapult C Synthesis для синтеза RTL-описания. Процесс синтеза включает следующие процедуры:
· задание интерфейсов и настроек для процедуры синтеза.
Для задания интерфейсов можно использовать встроенные объекты, реализующие стандартные протоколы ввода/вывода, либо создать собственные с помощью программы Catapult C Library Builder. Настройки включают выбор способа представления внутренних данных (регистры, память, стек и т.д.), задание структурных параметров, определяющих, надо ли создавать конвейеры, распараллеливать циклы и т.д. На этом этапе в алгоритм фактически вводится начальная привязка ко времени;
· выделение в исходном C/C++ описании отдельных команд, их оптимизация и распределение по тактам. Окончательное введение понятия времени в описание устройства. Данная операция проводится полностью автоматически, на основе введенных ранее параметров;
· создание управляющего автомата, обеспечивающего правильную последовательность и логику выполнения операций, определенных на предыдущем этапе (как и предыдущая операция, выполняется автоматически);
· анализ алгоритма и выбранной микроархитектуры (настроек). Для анализа используется иерархическая диаграмма Ганта, позволяющая выявить "узкие" места и впоследствии устранить их путем изменения параметров настройки или изменения исходного алгоритма. Поддерживаются кросс-ссылки с исходным описанием на C/C++. Можно проводить оптимизацию по критериям общая площадь/ быстродействие с учетом способа реализации;
· генерация результирующего RTL-кода (с учетом выбранной технологии реализации).
Далее проект поступает на этап логического синтеза с последующей реализацией в виде FPGA или ASIC.
Верификация проекта проводится путем моделирования с последующим сравнением результатов с результатами, полученными для исходной модели на C/C++. На промежуточных этапах выполняется потактовое и RTL-моделирование, а по результатам логического синтеза – моделирование на вентильном уровне. Структурная схема одного из вариантов организации процесса верификации приведена на рис.2.
Важно, что исходное тестовое окружение на уровне модели на С/C++ в дальнейшем используется для всех уровней представления проекта. Это достигается за счет применения специального конвертера транзакций (на базе языка SystemC), который преобразует данные исходного тестового окружения (поток данных из тестовой программы) в сигналы для моделирования на RTL-уровне.
Процесс верификации может быть организован на базе платформы ModelSim или на базе платформы Questa, которая поддерживает расширенный набор современных методов верификации, включающий следующие технологии: ABV (assertion-based verification), CDV (coverage-driven verification), TBA (testbench automation), FV (formal verification), SCV (System C verification), SVV (SystemVerilog verification) и другие. Для ускорения верификации больших проектов можно использовать системы аппаратной эмуляции VStation и аппаратного прототипирования.
Анализ использования продукта Catapult C Synthesis такими компаниями, как Nokia, Alcatel, STMicroelectronics, Siemens и другими, показал, что по сравнению с традиционным маршрутом ручной реализации RTL-описания время проектирования может быть сокращено в 10–20 раз. При этом качество реализации (количество используемых вентилей) не уступает, а в некоторых случаях превосходит результаты, полученные при ручном кодировании. Наибольшая эффективность обеспечивается при реализации DSP-алгоритмов для телекоммуникационных систем различного назначения, в том числе беспроводных, систем обработки видеоизображений, систем фильтрации, кодирования-декодирования. В ближайшее время предполагается расширить сферу применения системы на область управляющих и вычислительных систем общего назначения.
Традиционно проектирование аппаратных систем цифровой обработки сигналов начинается с верификации алгоритмов и общей архитектуры системы с помощью модели, реализованной на одном из языков высокого уровня. Как правило, используются язык "m" системы MATLAB или обычный C/C++. После того, как алгоритмы и архитектура на системном уровне отлажены, описание на языке высокого уровня вручную переводят в RTL-описание, пригодное для последующего синтеза. В процессе такого перевода решаются задачи выбора элементной базы, микроархитектуры проекта и собственно написания RTL-кода. Верификация RTL-описания проводится с помощью систем логического моделирования. Процесс носит итерационный характер и требует значительных временных затрат. Другие недостатки традиционного подхода – ограниченные возможности анализа альтернативных вариантов реализации, необходимость вручную проводить модификацию RTL-описания при внесении изменений в исходную спецификацию, а также жесткая привязка к выбранной микроархитектуре и технологии реализации, например к библиотеке конкретного семейства FPGA.
В отличие от традиционного подхода, использование системы Catapult C Synthesis позволяет автоматически синтезировать
RTL-описание из исходного описания алгоритмов на C/C++. Если моделирование архитектуры на системном уровне выполнялось
с помощью MATLAB, то необходимо перевести его в C/C++. Эта операция не требует больших усилий, поскольку языки "m" и C/C++ очень близки по своей структуре. Преимущества такого подхода в следующем:
· устраняется разрыв между алгоритмическим уровнем описания системы (MATLAB, С/С++) и RTL-описанием, поскольку язык С/С++, как правило, хорошо знаком как системным инженерам, так и специалистам, работающим с RTL-описанием (VHDL и/или Verilog);
· основная нагрузка по отладке и верификации проекта переносится на более высокий уровень абстракции, а на этап синтеза поступает проект, уже практически полностью отлаженный на системном уровне. Поскольку верификация модели на C/C++ выполняется на несколько порядков быстрее, чем RTL-модели, сроки проектирования могут быть кардинально сокращены;
· анализ альтернативных вариантов реализации алгоритмов
на C/C++ и внесение возможных изменений выполняется быстро и эффективно;
· описание проекта на C/C++ не привязано к выбору микроархитектуры и конкретной технологии реализации. Это преимущество является ключевым, поскольку позволяет полностью абстрагироваться от особенностей реализации, не перегружая исходное описание дополнительными операторами настройки на конкретную элементную базу. В зависимости от потребностей текущей разработки одно и то же описание может быть использовано как для реализации проекта на базе FPGA различных типов, так и в виде ASIC. Настройка и оптимизация RTL-описания под конкретную элементную базу осуществляется средствами системы Catapult C Synthesis в процессе синтеза RTL-кода из описания на языке C/C++.
На рис.1 представлена организация маршрута проектирования с использованием системы Catapult C Synthesis. После отладки на системном уровне описание проекта поступает в систему Catapult C Synthesis для синтеза RTL-описания. Процесс синтеза включает следующие процедуры:
· задание интерфейсов и настроек для процедуры синтеза.
Для задания интерфейсов можно использовать встроенные объекты, реализующие стандартные протоколы ввода/вывода, либо создать собственные с помощью программы Catapult C Library Builder. Настройки включают выбор способа представления внутренних данных (регистры, память, стек и т.д.), задание структурных параметров, определяющих, надо ли создавать конвейеры, распараллеливать циклы и т.д. На этом этапе в алгоритм фактически вводится начальная привязка ко времени;
· выделение в исходном C/C++ описании отдельных команд, их оптимизация и распределение по тактам. Окончательное введение понятия времени в описание устройства. Данная операция проводится полностью автоматически, на основе введенных ранее параметров;
· создание управляющего автомата, обеспечивающего правильную последовательность и логику выполнения операций, определенных на предыдущем этапе (как и предыдущая операция, выполняется автоматически);
· анализ алгоритма и выбранной микроархитектуры (настроек). Для анализа используется иерархическая диаграмма Ганта, позволяющая выявить "узкие" места и впоследствии устранить их путем изменения параметров настройки или изменения исходного алгоритма. Поддерживаются кросс-ссылки с исходным описанием на C/C++. Можно проводить оптимизацию по критериям общая площадь/ быстродействие с учетом способа реализации;
· генерация результирующего RTL-кода (с учетом выбранной технологии реализации).
Далее проект поступает на этап логического синтеза с последующей реализацией в виде FPGA или ASIC.
Верификация проекта проводится путем моделирования с последующим сравнением результатов с результатами, полученными для исходной модели на C/C++. На промежуточных этапах выполняется потактовое и RTL-моделирование, а по результатам логического синтеза – моделирование на вентильном уровне. Структурная схема одного из вариантов организации процесса верификации приведена на рис.2.
Важно, что исходное тестовое окружение на уровне модели на С/C++ в дальнейшем используется для всех уровней представления проекта. Это достигается за счет применения специального конвертера транзакций (на базе языка SystemC), который преобразует данные исходного тестового окружения (поток данных из тестовой программы) в сигналы для моделирования на RTL-уровне.
Процесс верификации может быть организован на базе платформы ModelSim или на базе платформы Questa, которая поддерживает расширенный набор современных методов верификации, включающий следующие технологии: ABV (assertion-based verification), CDV (coverage-driven verification), TBA (testbench automation), FV (formal verification), SCV (System C verification), SVV (SystemVerilog verification) и другие. Для ускорения верификации больших проектов можно использовать системы аппаратной эмуляции VStation и аппаратного прототипирования.
Анализ использования продукта Catapult C Synthesis такими компаниями, как Nokia, Alcatel, STMicroelectronics, Siemens и другими, показал, что по сравнению с традиционным маршрутом ручной реализации RTL-описания время проектирования может быть сокращено в 10–20 раз. При этом качество реализации (количество используемых вентилей) не уступает, а в некоторых случаях превосходит результаты, полученные при ручном кодировании. Наибольшая эффективность обеспечивается при реализации DSP-алгоритмов для телекоммуникационных систем различного назначения, в том числе беспроводных, систем обработки видеоизображений, систем фильтрации, кодирования-декодирования. В ближайшее время предполагается расширить сферу применения системы на область управляющих и вычислительных систем общего назначения.
Отзывы читателей