Пліс Achronix – досвід освоєння

За більш ніж десятирічний термін роботи з ПЛІС мені довелося працювати з продукцією чотирьох різних виробників. За такої різноманітності мимоволі звертаєш увагу як на загальні риси процесу розробки, так і на особливості, властиві тій чи іншій компанії. І ось, кілька місяців тому мені несподівано представилася унікальна можливість близько познайомитися з новим сімейством ПЛІС, яке виробляється невеликою, але амбітною компанією з Каліфорнії. Я говорю зараз про наймолодшого виробника ПЛІС - компанії Акронікс (Achronix) і ПЛІС Speedster22i HD1000, що нею випускається. З моменту свого створення (2004 р.), ця молода компанія змогла розробити ПЛІС сегменту HI-End, що володіють оригінальною архітектурою та унікальними характеристиками. Більше того, компанія першою серед усіх виробників ПЛІС уклала стратегічний союз з корпорацією Інтел і з того часу виробляє свої мікросхеми (розмір яких, як видно з малюнка, вже давно вийшов за рамки "мікро") на найдосконалішій технологічній базі Intel на заводах, розташованих безпосередньо у США. Зараз серія Speedster випускається за технологією 3D Tri-Gate 22нм. Програма розвитку серії передбачає у майбутньому перехід на 14нм і 10нм техпроцеси (у міру їх освоєння на заводах Інтел).

У цій оглядовій статті я хочу коротко описати, з одного боку, ті продукти, які використовуються для роботи з ПЛІС Speedster, а з іншого – свій досвід (включаючи емоції) роботи з цими продуктами на прикладі дуже простого, але реально виконаного проекту. Отже…

"Залізо" та засоби розробки

Час, що залишився до прибуття плати, був присвячений вивченню архітектури ПЛІС Speedster22i HD1000, освоєнню засобів проектування і написанню простого дизайну.

В іншому, розглядаються ПЛІС за своєюструктурі не сильно відрізняються від продукції інших виробників: вони складаються з логічних кластерів (на основі 4-вхідних LUT), блокової та розподіленої пам'яті, а також арифметичних блоків, що включають потужні 56-бітні помножувачі. Все це є в достатній кількості для досягнення найскладнішої функціональності. Швидкісні характеристики також вражають: пам'ять, наприклад, має максимальну робочу частоту 750 МГц. Основні характеристики ПЛІС серії Speedster22i наведені в таблиці нижче:

ПараметриHD680HD1000HD1500
Обсяг логіки, включаючи апаратні контролери (ефективних осередків LUT)66000010450001725000
Обсяг програмованої логіки (в LUT)4000007000001100000
Кількість модулів BRAM60010261728
Кількість модулів LRAM4320615610368
Обсяг 80 кілобітних BRAM (всього Kбіт)4800082080138240
Об'єм 640-бітних LRAM (всього Kбіт)276539406636
Помножувачів (28×28)240756864
Кількість ліній SerDes 12.75 гб/с (Гігабіт/с)406448
Кількість ліній SerDes 28 гб/с (Гігабіт/с)--16
Апаратних контролерів Ethernet (MAC-рівень) 10/40/100 Гігабіт/с224
Контролерів Interlaken LLC124
Контролерів PCI Express LLC122
Контролерів DDR2/DDR3466
Кількість PLL161616
Кількість висновків, корпус FBGA2601 52.5×52.5 (12G,28G,GPIO)-64,0,96048,16,960
Кількість висновків, корпус FBGA1936 45×45 (12G,28G,GPIO)40,0,68440,0,68420,4,684
Кількість висновків, корпус FBGA1520 40×40 (12G, 28G, GPIO)18,0,684--

Мінімально необхідний набір засобів розробки включає дві програми – оболонку ACE і синтезатор Synplify. Власна технологія компанії - оболонка ACE включає засоби розміщення і розведення, конфігурування ядер, завантаження і налагодження. Як синтезатор використовується програма Synplify від Synopsys. Підхід, який полягає у використанні набору окремих програм замість єдиного інтегрованого середовища, характерний для невеликих компаній. Він менш зручний для розробників-початківців, але для досвідчених інженерів дає більшу гнучкість і кращу якість виконання кожного етапу. Якщо ж потрібна глибша інтеграція, всі необхідні програмні засоби можна об'єднати, наприклад, за допомогою оболонки HDL-designer від MentorGraphics.

До зазначених програм бажано додати будь-яку програму-симулятор. Пакет Achronix містить бібліотеки для найпопулярніших програм-симуляторів, але ці програми в комплект поставки не входять і купуються окремо.

І ось нарешті довгоочікувана плата прибула до нашого офісу!

досвід

Тремтячими від хвилювання руками (а як не хвилюватися, коли ціна у плати як у недорогого імпортного кросовера! ), Плата була розпакована, перенесена на своє "штатне" місце - на антистатичний килимок на моєму робочому столі і з цікавістю розглянута.

achronix

Як видно, сама плата є складним ібагатофункціональний виріб. Лише електрична схема займає 90 сторінок! Тому не дивно, що плата дозволяє розробляти та налагоджувати, не побоюся цього слова, унікальні проекти, наприклад, створювати обладнання для мереж Ethernet 100G, для чого є роз'єм для модуля CFP (чорний квадрат у нижньому лівому куті на фото вгорі). Два інтерфейси Interlaken виведені на роз'єм AirMax.

Найбільше вразила товщина друкованої плати. Скільки тут шарів? 20? 30? 40? Питання так і залишилося нез'ясованим.

досвід

Плата має роз'єм PCI-express (Gen 3 x8, 64 Gb/s) і може працювати як периферійний пристрій у складі комп'ютера. Все разом це виглядає так:

achronix

В комплект поставки входить JTAG-кабель, що виконує функції завантажувача та відладчика. Особливістю цього кабелю є можливість працювати через USB-порт або через Ethernet. В останньому випадку можна організувати віддалений доступ до пристрою. При роботі через Ethernet потрібне зовнішнє джерело живлення (входить до комплекту постачання). Також в комплект поставки входять потужне джерело живлення для самої плати та модуль DDR-3 RAM на 2GB.

Перевірка працездатності

Перевірити, що плата функціонує виявилося дуже легко, т.к. в оболонку ACE вже вбудований для неї тест. Тому вся перевірка по суті зводиться до натискання однієї кнопки для завантаження тестової прошивки. Після цього можна пограти перемикачами, включаючи та вимикаючи світлодіоди та протестувати блоки внутрішньої пам'яті. Плата при цьому повинна бути з'єднана кабелем USB з комп'ютером.

Розробка

А тепер – про те, як я робив свій перший проект для ПЛІС Achronix. Як такий був обраний найпростіший варіант - лічильник з виведенням старших розрядів на світлодіоди. Звичайно,такий простий проект не справить враження на професіоналів, але він дозволяє вивчити базову функціональність засобів для розробки з ПЛІС Achronix розробки та освоїти маршрут проектування. У майбутніх публікаціях я планую розповісти про складніші речі, такі як конфігурування та використання апаратних ядер та реалізацію систем на кристалі з використанням процесорного ядра ARM.

Структура проекту

Кожен проект я розміщую в окремому каталозі, що містить, як мінімум, 3 підкаталоги:

  • Src – для вихідних текстів
  • Syn – для синтезу
  • TR – для імплементації

Практика показала, що у каталозі Syn краще нічого зайвого не тримати, бо розміщені там файли синтезатор може затерти. Тому вихідні тексти (вважаю за краще працювати мовою Verilog) я зберігаю в каталозі Src, а всі скрипти – в каталозі TR

Вихідні тексти

Вихідний код модуля зовсім нехитрий:

Але для імплементації на демонстраційній платі його необхідно трохи модифікувати. По-перше, необхідно вибрати та правильно підключити джерело тактового сигналу. Їх на платі кілька. Після вивчення вибрали джерело частотою 100МГц, має диференціальний вихід. Отже, необхідно додати у вхідний тактовий ланцюг диференціальний буфер.

По-друге, хотілося б побачити внутрішні сигнали у процесі роботи. Така можливість є у всіх виробників ПЛІС, є вона і ПЛІС Achronix. Внутрішній аналізатор сигналів називається SnapShot. На відміну від конкурентів компонент SnapShot повинен бути явно описаний в дизайні. Це спочатку викликало незручність, але потім я оцінив перевагу такого підходу. Ця перевага полягає у повному контролі над тим, що тиробиш. Крім того, такий підхід дозволяє дуже гнучко налаштовувати тригери для реєстрації подій, що відстежуються.

Отже, в остаточному варіанті у нас з'являється диференціальний тактовий вхід і буфер для нього, а також компонент ShapShot для вивчення внутрішніх сигналів. Остаточний текст на мові Verilog:

Синтезатор Synplify для роботи вимагає крім вихідних текстів і посилань на бібліотеку елементів ще файл констрейнтів (зазвичай він має розширення .sdc). Хоча для такого простого дизайну він необов'язковий, все ж таки його краще вказати. У такому простому випадку, як у нас, потрібно лише вказати імена тактового сигналу та їх параметри.

Далі створюємо проект для Synplify, вказуємо необхідні для синтезу файли та бібліотеки та запускаємо процес. Якщо все зроблено правильно, отримуємо вихідний файл із розширенням .vma. (“Гуру” FPGA-дизайну можуть вказати, що основним вихідним форматом Synplify є edif. Але ACE приймає на вході тільки верилогівські нетлісти, які мають розширення .vma)

Імплементація

Власне процес імплементації здійснюється за стандартною схемою:

  • Створюємо проект для ACE
  • Вказуємо у проекті файл результатів синтезу (з розширенням .vma)
  • Задаємо констрейнти
  • Запускаємо процес імплементації
  • Отримуємо файл для завантаження в ПЛІС

Для імплементації необхідно підготувати два файли констрейнтів: завдання клаків і завдання пінів. Їхній вміст показано в таблиці:

На комп'ютері етап імплементації виглядає так:

Завантаження дизайну та налагодження

Щоб завантажити створений на попередньому етапі файл прошивки, потрібно перейти у вікно "Download", натиснути на кнопку "Run 'Program'" і почекати кілька хвилин.

Післязакінчення завантаження ПЛІС відразу починає працювати і ми можемо спостерігати на платі лінійку весело миготливих світлодіодів.

Щоб переглянути внутрішні сигнали, підключені до модуля SnapShot, потрібно відкрити вікно “Snapshot debugger”. У цьому вікні можна налаштувати тригерові режими захоплення та інші параметри. Аналіз запускається кнопкою "Arm", після чого починається відстеження стану тригера. Після встановлення тригера, на екрані (з невеликою затримкою) з'являється часова діаграма сигналів, що реєструються.

Висновок та висновки

За короткий термін компанії Achronix вдалося створити цікаві, конкурентоспроможні ПЛІС сегменту HI-END та засоби розробки для них. Технологія роботи з ними не викликає проблем навіть у фахівців середньої кваліфікації. Продукція компанії Achronix вже доступна в Україні.