Прототипирование ASIC на FPGA

Разработка микросхем дело сложное, дорогое и долгое. И цена любой ошибки крайне велика. После изготовления кристалла патчами и обновлениями уже ничего не исправить. Поэтому к проверке проектируемых схем на этапе разработки подходят особенно скрупулёзно. Для каждого функционального блока пишутся блочные тесты во всех рабочих и не рабочих режимах. После интеграции блока в общую схему проводятся системные тесты, как этот блок работает составе системы. Все тесты постоянно крутятся в регрессионном тестировании. Даже есть неформальный признак более менее приемлемого уровня тестирования — когда объем кода тестов в 10 раз больше объема кода тестируемого блока. Но все эти тесты не дают ощущения, что схема жизнеспособна, так как любое моделирование это поведение схемы на протяжении сотен миллисекунд максимум. А в жизни схема должна отработать сотни тысяч часов. Однажды я искал сбой, когда на 1 Гбайт переданной информации терялись 1 или 2 байта и никакие функциональные тесты эту проблему не обнаруживали. И проявлялась эта ошибка только на FPGA прототипе будущей микросхемы. О том какие прототипы делали мы и что вообще твориться в мире расскажет эта статья.
Прототипирование будущих микросхем на FPGA это единственный способ проверить как работает схема на реальных задачах в более менее реальном масштабе времени. Прототип позволяет отладить софт, получить первоначальные характеристики производительности и многое другое. Современные FPGA обладают достаточно большим объемом ресурсов для этих задачи. Например, вы можете сами на плате с FPGA за 300$ реализовать полноценный компьютер с процессором Intel 8086.

2004 год


К сожалению самого первого прототипа в залежах нашего шкафа со скелетами найти не удалось, но это была небольшая платка на базе Xilinx Spartan3–400 (XC3S400). 400 означает число тысяч эквивалентах вентилей, которые доступны разработчику для создания своей схемы. Цена платки составляла примерно 50$ и позволяла реализовать в ней простой 8-ми битный микроконтроллер со всей памятью и на частоте 40 МГц. Прототипирование заключалось в том, что разработанный микроконтроллер на ней поморгал светодиодом.

2005 год


Специальная плата для прототипа уже разрабатывалась не как эксперимент, а как осмысленный этап проекта. Применялась уже FPGA Xilinx Spartan3–1000. Т.е. нам уже был доступен 1 млн вентилей, и проектируемый микроконтроллер работал на своей макимальной частоте 48 МГц. И именно на этой плате я ловил те самые 2 потерянных байта на гигабайт. Цена платы составляла примерно 200$.

ec6804fcc0c54152a57eadd6a1d06b1e.jpg

2007 год


Для нового 32-х разрядного микроконтроллера было очевидно, что 1 млн вентилей может и не хватить. По этому была разработана новая плата на базе Xilinx Spartan3–5000, благодаря которой стало доступно уже 5 млн вентилей. Цена платы составила примерно 500$ и на долгое время эта плата стала основной для прототипирования новых разработок. На ее базе проверялись не только микроконтроллеры, но и различные специализированные микросхемы. Проектируемые микроконтроллер в FPGA работал уже на пониженной частоте в 20 МГц, хотя потом в кремнии работали на частотах 100 МГц и даже 150 МГц.

Прототип 32-х битного микроконтроллера:

642c09807878421a99301e2e8a866d3a.jpg

Прототип видеокарты (к сожалению в жизнь проект так и не пошел, но готовый RTL ждет своего часа):

fcf3577a3a7143aba08873ae1a32f2a1.jpg

Прототип 4-х потового Ethernet коммутатор с встроенными приемопередатчиками:

bf85bb5c4da4423b994d960b1f702ac7.jpg

2010 год


При разработке двухъядерного микроконтроллера (32-х битный RISC + 16 битное DSP ядро) мы наконец дошли до уровня, когда 5 млн было уже мало. Но реализация в FPGA различных усеченных конфигураций будущей микросхемы позволила проверить ее функционирование. Например, реализовывали два ядер (RISC+DSP) и с усеченным набором периферии или же одно ядро (RISC), но зато вся периферия.

2012 год


Новый проект потребовал новой платы, так как требуемый объем внутренней памяти для нового 32-х разрядного DSP ядра уже превосходил доступный объем в самой большой FPGA Spartan. Пришлось переходить на более дорогие и сложные ПЛИС. Время проекта было ограничено, и решили найти уже готовое решение. Выбор пал на плату от INREVIUM c самой большой на то время FPGA Xilinx Virtex-6 XC6VLX760.

323abb947fab425bbab499bb8bc8dd5f.jpg

И хотя число эквивалентный вентилей увеличилось всего до 8 млн, зато объем встроенной блочной памяти увеличился с 2 Мбит до 25 Мбит.
Выбор так же скорее всего определило то, что на сайте немецкого представительства в кэше Google сохранилась стоимость платы, и мы знали что она будет стоить 18К$ до подписания всяких NDA. А при стоимости только одной микросхемы FPGA в 15 тыс $ это снимало любые вопросы о разработке собственной платы. Серийные платы для таких больших FPGA обычно стоят либо столько же сколько и сами FPGA либо немного дороже.
Приобретение платы тоже доставило много интересных знаний, так например наш локальный дистрибьютор был убежден, что эта плата стоит 40K$ c учетом доставки, и вообще он очень рискует при 100% предоплате с нашей стороны. В конечном счете было приобретено 3 таких платы без посредников и сейчас они применяются для прототипирования наших DSP процессоров

2013 год


Для нового 32-х битного специализированного микроконтроллера было решено все же попробовать сделать свою плату. Во-первых, разработчики модулей на FPGA должны развиваться и не бояться применять микросхемами, которые дороже их личных автомобилей, а во-вторых у одного из дистрибьюторов завалялись на складе несколько Virtex-6 XC6VLX550Т и он предлагал их с большим дисконтом. FPGA LX550Т это на одну ступень меньше чем LX760 (примерно на 30% меньше вентилей), но зато конечная цена плат с учетом разработки составила всего около 8К$. Таких плат было собрано 6 шт. Раздавать их заказчикам мы не планировали, а организовали для разработчиков доступ к ним через интернет. В плате было реализовано много интересных решений. Например, файлы прошивок грузились на плату как на MassStorage Device в специальную SD карту, и потом уже из нее загружались в FPGA. Всего на карте может быть до 10 различных прошивок, и через специальную программу управления можно выбрать какую из них использовать в данный момент. Так же реализованы различные защиты «от дурака», что бы случайно не спалить дорогую микросхему. Все это позволяет работать с этими платами удалено, безопасно и доверять их даже студентам. Проектируемый МК в FPGA работал на частоте 40 МГц.

Сама плата (прототип специализированного двухъядерного 32-х битного микроконтроллера):

33d6cd16eb24477e99fb44003f420d68.jpg

Прототип специализированной микросхемы для датчиков преобразования угол в код:

9aa42a293255487c9e2e1f862720a81d.jpg

К сожалению в данной плате есть несколько недостатков: выбраны «дурные» разъемы для подключения дополнительных модулей, но это пол беды, забыли сделать крепежные отверстия возле разъемов, и модули держатся фактически только в разъемах. Так же что бы получить доступ к некоторым элементам управления основной платы приходится фигурно вырезать модули расширения.

Отечественный опыт


А что же другие разработчики заказных микросхем? Например МЦСТ при прототипировании СБИС 1891ВМ6Я (R-1000, четырёхъядерный процессор с 64-битной архитектурой SPARC v. 9) использовала специализированную плату с 10 FPGA Altera Stratix II (4 х EP2S180 + 5 x EP2S130 + 1 x EP2S90). Общий объем логических вентилей системы можно оценить в 20 млн.

082b1f1e821b4331b449ff3ef27e0f92.jpg

Сейчас одна микросхема EP2S180 стоит около 8К$. Так что стоимость только микросхем FPGA в прототипе превышает 50К$.
Для прототипирования процессора Эльбрус-4C+ потребовалась уже 21 микросхема Altera Stratix IV EP4SE820 и с суммарным объемом в 100 млн. вентилей (хотя сам МЦСТ приводит цифру в 750 млн) и стоимостью около 200К$. При этом рабочая частота прототипа 9 МГц.

Зарубежный опыт


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

Cadence предлагает специальную Rapid Prototyping Platform построенную на базе FPGA Altera Stratix-4 EP4SE820. В минимальной конфигурации платформа состоит из двух (c суммарным объемом в 10 млн вентилей), в максимальной из шести FPGA (c объемом до 30 млн вентилей). Цена одной микросхемы EP4SE820 сегодня ~10К$.

ea508f307b224d1980a357e681d1046f.JPG

Новая система от Cadence носит название Protium и стоится на базе Xilinx Virtex-7 XC7V2000Т и позволяет реализовать от 25 млн на двух FPGA до 100 млн вентилей на восьми. Стоимость одной микросхемы XC7V2000Т сейчас около 20К$. Т.е. в полной комплектации Protium будет стоить не менее 160К$.

Компания Aldec помимо средств разработки так же предлагает платформу для FPGA протоипирования HES-7.

7e441fb923214c1e9f7e32fb8d7f13c9.jpg

На одной плате расположено до шесть FPGA Xilinx Virtex-7 XC7V2000Т или UltraSacle XCVU440. В случае реализации модуля на базе FPGA UltraSacle XCVU440 суммарное число вентилей достигает 158 млн. С помощью дополнительной платы можно собрать в единый модуль 24 микросхемы FPGA и получить 633 млн вентилей. Стоимость одной микросхемы XCVU440 сейчас 49К$. А максимальная суммарная стоимость всех FPGA переваливает за 1М$.

Synopsys имеет наверное наибольший опыт в разработке платформ для FPGA прототипирвоания. Ранние их модели строились на базе FPGA Virtex-6 (HAPS-60), затем Virtex-7 (HAPS-70). Последняя их разработка HAPS-80 в одном модуле содержит от одной до четырех FPGA Xilinx UltraScale XCVU440.

4bdb8ce46c364b92b9795cf71b8e2c9a.jpg

Готовые модули можно объединять в единую стойку. И в этом случае суммарный объем составляет рекордные 1,6 млрд вентилей.
При использовании одной FPGA максимальная частота до 300 МГц, при использовании соседних в одном модуле до 100 МГц, при использовании нескольких модулей частота снижается до 30 МГц.

13f32759472346b696b26957cc148e81.jpg

Таким образом, имея примерно 3,5М$ на приобретение FPGA вы сможете собрать платформу пригодную для прототипирования Intel Xeon E7. Ну или подождать 20 лет, когда FPGA такого объема подешевеют до пары сотен долларов.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Geektimes