Как стать автором
Обновить
0
Байкал Электроникс
Российский разработчик процессоров на MIPS, ARM

Прототипирование процессоров Baikal на платформе Synopsys HAPS

Время на прочтение5 мин
Количество просмотров3.7K

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

В маршруте проектирование сложных System-on-the-Crystal (SoC) прототипирование на FPGA занимает промежуточное место между моделирование на симуляторах (VCS, ModelSim и др.) и эмуляцией.

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

Рисунок 1  Две платформы HAPS-70_S48 в стеке. Фото Baikal Electronics
Рисунок 1  Две платформы HAPS-70_S48 в стеке. Фото Baikal Electronics

В Baikal Electronics мы используем платформы Synopsys HAPS-70, представляющие из себя сборки из четырёх FPGA Xilinx Virtex-7-2000, каждая из которых вмещает до 12 миллионов логических гейтов. Таким образов вместимость одной платформы HAPS-70 – до 48 миллионов логических вентилей. Мы можем соединить два HAPS в стек и получить систему, в которую можем загрузить дизайн объёмом до 96 миллионов логических гейтов. Между собой внутри HAPS-70 ПЛИС соединяются через кабели со стандартными разъёмами HapsTrak 3 (HT3).

Рисунок 2. Кабель с разъёмами HT3. Фото Яндекс.Картинки
Рисунок 2. Кабель с разъёмами HT3. Фото Яндекс.Картинки

Так же с помощью этих же разъёмов можно подключать к платформе дочерние платы (например, интерфейсные) , которые можно купить у Synopsys или разработать самостоятельно. Мы используем платы от Synopsys с DDR3 и SATA.

Интерфейсная плата для HAPS от Байкал

 Для работы с низкоскоростными интерфейсами наши инженеры разработали интерфейсную плату, на которой выведены:

  • JTAG

  • Spi flash

  • Ethernet

  • UART

  • USB

  • Блок переключателей

  • Блок светодиодов

  • GPIO

               Для работы со скоростными интерфейсами у HAPS имеются нативные разъемы MGB, выведенные из мультигигабитных трансиверов Xilinx внутри каждого FPGA.

Рисунок 3. Интерфейсная плата соединяется с платформой HAPS с помощью трёх разъёмов HT3. Фото Baikal Electronics
Рисунок 3. Интерфейсная плата соединяется с платформой HAPS с помощью трёх разъёмов HT3. Фото Baikal Electronics

Этапы тулчейна от RTL до FPGA bitstream

Маршрут компиляции проекта под HAPS, в результате прохождения которого мы должны получить bitstream (микрокод, «прошивки») для FPGA, включает следующие стадии:

1. Partitioning

В приложении Synopsys Protocompiler компилируются RTL-исходники проекта.

В результате мы получаем разбитый, например, на 4 FPGA дизайн в виде списков исходников для каждой FPGA.

2. Компиляция отдельных чипов в Protocompiler

На второй стадии в Protocompiler собирается проект для каждой FPGA.

В результате получается netlist и tcl-скрипт для запуска маршрута Place&Route в Xilinx Vivado.

3. Vivado

На третьей стадии мы запускаем в Vivado уже готовый tcl-скрипт маршрута Place&Route, который берет нетлист. В итоге получаем прошивки для FPGA.

Этапы 2 и 3 хорошо знакомы разработчикам на FPGA, использующим, например, тулчейн Synplify+Vivado, поэтому остановимся подробнее на особенностях и вызовах первого этапа.

Design Partitioning для платформы HAPS посредством тула Synopsys Protocompiler

 

Рисунок 4. Маршрут Partitioning в Protocompiler. Изображение Synopsys
Рисунок 4. Маршрут Partitioning в Protocompiler. Изображение Synopsys

Разбиение дизайна на чипы FPGA (партишенинг) или распил (все же знают – мы в Baikal Electronics занимаемся как раз этим J) – это итеративный полуавтоматический процесс, в результате которого достигается баланс между заданной пользователем аппаратной конфигурацией (топология межчиповых кабелей, назначение портов и дочерних плат, начальное закрепление частей дизайна за конкретными FPGA) и характеристиками дизайна (эффективная растрассировка сигналов между FPGA, обеспечение приемлемого заполнения FPGA и выдержка требуемых характеристик быстродействия).

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

Технологии тулы Protocompiler  - Multi-Hop оптимизация, Feedthrough оптимизация, Time-Domain-Multiplexing – активно способствуют автоматической части партишенинга.

Multi-Hop оптимизация

Если логика пути сигнала разбивается между двумя FPGA, то путь между этими чипами называется hop («скачок»). Multi-Hop путь может простираться между несколькими FPGA и существенно ухудшать тайминг, при этом степень ухудшения тайминга зависит от доступных межчиповых связей и степени HSTDM-сжатия. (см. ниже).

Рисунок 5. Деградация тайминга вследствие партишенинга и появления Multi-Hop путей. Изображение из презентации Baikal Electronics
Рисунок 5. Деградация тайминга вследствие партишенинга и появления Multi-Hop путей. Изображение из презентации Baikal Electronics

Пользователю Protocompiler доступны опции, позволяющие автоматически минимизировать количество Multi-Hop путей.

Feedthrough оптимизация

Feedthrough-пути используют промежуточные чипы FPGA для трассировки сигнала от чипа источника до чипа назначения, если межчиповые трассы для point-to-point соединения недоступны.

 На Рис. 6 показано, что в сигналe из верхнего левого чипа источника не хватает прямых связей с верхним правым чипом назначения. Тогда автоматический роутер в туле буферизирует сигнал и размещает буфер в нижнем левом чипе, что неизбежно приводит к деградации тайминга. Пользователь может установить разрешение или запрет туле на автоматическое создание feedthrough-путей.

Эта технология используется на этапе System routing, сразу после этапа Partitioning. Обычно она используется в комбинации с технологией Time-Domain-Multiplexing.
 

Рисунок 6.Деградация тайминга вследствие партишенинга и появления Feedthrough-путей. Изображение из презентации Baikal Electronics
Рисунок 6.Деградация тайминга вследствие партишенинга и появления Feedthrough-путей. Изображение из презентации Baikal Electronics

Time-Domain-Multiplexing

Рисунок 7. Time-Domain-Multiplexing с автоматической вставкой SERDES IOs. Изображение из презентации Baikal Electronics. Изображение из презентации Baikal Electronics
Рисунок 7. Time-Domain-Multiplexing с автоматической вставкой SERDES IOs. Изображение из презентации Baikal Electronics. Изображение из презентации Baikal Electronics

Партишенинг дизайна на чипы FPGA приводит к дефициту бюджета I/O пинов FPGA для трассировки межсоединений. Партишенинг современной SoC гарантированно приводит к многократному превышению требуемого количества трасс над имеющимися I/O. Выход один – мультиплексирование.

Пользователь может задать тулу максимально допустимую степень сжатия HSTMD (High Speed Time Domain Multiplexing). При этом автоматически вставляемые сериализаторы/десериализаторы работают на частоте свыше 1 ГГц, обеспечивая эффективное сжатие мультиплексируемых сигналов до степени 128:1 и выше.

Отладочные интерфейсы

Управление платформой HAPS осуществляется с помощью утилиты Confpro, через которую мы можем:

  • Прошивать FPGA

  • Назначать чаcтоты входных синхросигналов

  • Управлять сбросами

  • Устанавливать номиналы питания банков питания FPGA

На прототипе можно разрабатывать и заниматься отладкой программного обеспечения так же, как и на настоящем процессоре в кремнии. Мы подключаемся к отладочному интерфейсу JTAG с помощью Olimex usb-jtag эмулятора, запускаем отладчик Openocd, при необходимости загружаем программы в spi flash память, в ROM, в ОЗУ. Можем подключить UART-интерфейс через usb адаптер к инструментальному компьютеру и осуществить символьный ввод/вывод для программ. Дочерняя плата на разъемах HT3 позволяет подключить SATA диск и Ethernet патчкорд.

Для прототипов процессорных Arm-ядер можно заниматься отладкой ПО через встроенную в ядра отладочную систему Coresight при помощи программного пакета Arm DS через физический интерфейс Arm D-Stream или более простые jtag-эмуляторы.

Встроенный в FPGA синтезируемый логический анализатор доступен через UMR Bus - нативный интерфейс от Synopsys для управления HAPS. Доступен огромный банк хранения выборок сигналов для построения вейвформ.

Прототипирование у нас используется прежде всего для системной валидации и ранней разработки ПО, такого как программы загрузчиков сервисного процессора, загрузчиков Arm TF, UEFI, ОС Linux.

Благодаря месяцам pre-silicon отладки на прототипе, наша команда «подняла» Linux на инженерном образце процессора Baikal-М в первые дни получения инженерного образца в руки!

Теги:
Хабы:
Всего голосов 15: ↑14 и ↓1+20
Комментарии24

Публикации

Информация

Сайт
www.baikalelectronics.ru
Дата регистрации
Численность
101–200 человек
Местоположение
Россия

Истории