LINUX.ORG.RU

Xilinx открыла исходный код Vitis HLS

 ,


4

1

Компания Xilinx, выпускающая интегральные микросхемы программируемой логики, открыла исходный код Vitis HLS — набора инструментов, который позволяет синтезировать высокоуровневое описание логической структуры FPGA из кода на Си/Си++ (в том числе с использованием OpenCL).

По словам представителя компании, публикация исходного кода интерфейса Vitis HLS открывает новые возможности для исследователей, разработчиков и энтузиастов компиляторов в использовании и модификации Vitis HLS в соответствии с конкретными потребностями своих приложений.

Исходный код опубликован на условиях лицензии Apache 2.0 и доступен в репозитории на GitHub.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Доля Xilinx на мировом рынке ПЛИС составила, по данным самой компании, 51 %. 27 октября 2020 года было заключено соглашение о слиянии компаний AMD и Xilinx.

Jopich1 ()

Второйнах. Вопрос по теме, какой FPGA брать на поиграться? Есть такие, чтобы без высокоуровненого барахла (ALU), но чтобы большой проект поместился со своей реализацией ALU (паралельные сложители / умножители - дофига блоков) и CPU?

anonymous ()

возможности для исследователей, разработчиков и энтузиастов компиляторов

Должно быть «возможности для исследователей, разработчиков компиляторов и энтузиастов»?

Шома как всегда. ✌

wandrien ()

Компания Xilinx, выпускающая интегральные микросхемы программируемой логики, открыла исходный код Vitis HLS — набора инструментов, который позволяет синтезировать высокоуровневое описание логической структуры FPGA из кода на Си/Си++ (в том числе с использованием OpenCL).

Пытаться писать прошивку для ПЛИСов на Си/Си++ означает обрекать себя на долгую отладку в аппаратуре. Почему? Потому что программы на Си/Си++ не отображают свою работу во временной области событие за событием, а лишь показывают конечный результат. В отладчике смотреть работу сошных/крестовых программ - значит упускать внешние события при останове отладчика. При работе под операционной системой, возможно, временное моделирование работы ПО и не нужно, а вот в аппаратуре придётся долго сидеть с генератором сигналов и осциллографом, потому как синтезатор «Зайлинкса» на Си/Си++ моделировать во временной области не умеет. Тупиковый путь разработки, на мой взгляд.

Enthusiast ()

А можно без железки как-нибудь с этим поиграться? Типа проверить сишный код без прагм на корректность на CPU, а потом расставлять директивы и получать всякие метрики - во сколько гейтов это компилируется, какова задержка и прочее?

snizovtsev ★★★★ ()
Ответ на: какой FPGA брать на поиграться? от Moisha_Liberman

Re: какой FPGA брать на поиграться?

Брать можно только FPGA поддерживаемые опенсорсными тулчейнами - например IceStorm под Lattice - иначе играться придётся с проприетарным «бегемотом» вроде Vivado.

SakuraKun ★★★★ ()
Последнее исправление: SakuraKun (всего исправлений: 2)
Ответ на: Re: какой FPGA брать на поиграться? от SakuraKun

Да, с проприетарщиной придётся...

позаниматься «любовью». Просто потому, что в случае дальнейшей работы уже «по боевому», с ней так или иначе, но придётся столкнуться. Vivado, конечно, зло, но кудаж без него-то?

Moisha_Liberman ()
Ответ на: комментарий от X-Pilot

Два момента.

Первый. Программирование FPGA, мягко говоря, оно несколько «не для всех». Отсюда и редкость таких программистов и сравнительно высокий уровень цен (и на «расходники» и на услуги по программированию), если брать «по взрослому». Т.е., затраты отобьются. Если нормально «войдёте» и будете работать, да. Но тут надо понимать что «FPGA» в общем и целом это не на похапэ лендинги клепать и не на питончике в типа «data science» играть. Тут простите, но всё по-взрослому.

Второй. Я не знаю где вы такие цены берёте. Раз, два, три, четыре. Думаю, найти можно всякое. Отдельно отмечу что первая ссылка это просто Spartan6, без какой-либо обвязки.

Moisha_Liberman ()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: комментарий от Enthusiast

Нет.

Потому что программы на Си/Си++ не отображают свою работу во временной области событие за событием, а лишь показывают конечный результат.

И

Тупиковый путь разработки, на мой взгляд.

Посмотрите SystemC (ссылка для начала, там есть ссылка на стандарт). Ну и вот это

На нём куда как приятнее моделировать, чем в Verilog велосипедить.

Moisha_Liberman ()
Ответ на: комментарий от XVilka

Basic idea is to create something low-level, like LLVM Bitcode or WebAssembly, to create the HDL compilers emit the code in this format, which will be fed to the routers/synthesizers after. This will allow to add 1) targets easier 2) HDL frontends easier.

Я когда-то задумывался над этим. Как на уровне единого байткода обеспечивать (описывать) временную синхронизацию, учитывая что разные FPGA используют разные базовые ячейки (что может давать разную задержку), ну и архитектура связей этих ячеек бывает разной? Подробнее см. https://marsohod.org/11-blog/265-fpga

SZT ★★★★★ ()
Ответ на: Нет. от Moisha_Liberman

Посмотрите SystemC (ссылка для начала, там есть ссылка на стандарт). На нём куда как приятнее моделировать, чем в Verilog велосипедить.

Оказывается, я немного отстал от достижений в отрасли: «Алдек» сделал симулятор сишного кода для ПЛИСов. Вроде бы всё отлично, но проверяющие последовательности входящих сигналов (тестбенчей) всё-равно придётся писать вручную. Сколько их будет создано? Одна, две, десять - написать больше вряд ли позволит время.

Огромное преимущество настоящего высокоуровневого моделирования заключается в автоматическом создании проверяющих последовательностей из генераторов сигналов модели. Количество проверок в этом случае идёт уже десятками за тоже время. Примерчик.

Да и в целом, писать на последовательном языке, чтобы преобразовывать его в параллельные действия - действие заведомо неэффективное по производительности и скорости работы конечного кода в аппаратуре. На это можно было бы не обращать внимания в угоду скорости разработки, если бы не было более грамотного решения «Матвокса».

Enthusiast ()
Ответ на: Два момента. от Moisha_Liberman

Можно вам нубских вопросов позадавать? Хочу поиграться с FPGA, но не знаю с чего начать.

1. SystemC, Chisel и прочие на спартане-6 заведутся, или множество доступных ЯП для FPGA зависит от чипа?
2. Тот вариант что с PCIe - там же можно общаться с CPU по PCIe, или это только для отладки и прошивки? Хочется для старта реализовать какую-нибудь простой шифр (trivium) и передавать/получать буфер по PCIe. Т.е. чем-то побыстрее UART и без осциллографа.
3. Потянет ли оно какой нибудь самый простой опенсорсный RISC-V CPU? Т.е. если я хочу взять готовые опенсорные блоки и поиграться в их модификацию и комбинирование - нужны ли тысячи долларов и годы времени?
4. Под онтопиком тулзы работают?
5. Почему новичкам именно спартан-6 советуете? Какие проблемы могут быть с другими?

snizovtsev ★★★★ ()
Последнее исправление: snizovtsev (всего исправлений: 3)
Ответ на: комментарий от Enthusiast

писать на последовательном языке, чтобы преобразовывать его в параллельные действия - действие заведомо неэффективное по производительности и скорости работы конечного кода в аппаратуре

не все с этим согласны

https://fpga-systems.ru/publ/xilinx/xilinx_hls/smozhet_li_hls_kod_pobit_hdl_po_proizvoditelnosti/21-1-0-109

anonymous ()
Ответ на: комментарий от Enthusiast

Ага. Оно.

Оказывается, я немного отстал от достижений в отрасли: «Алдек» сделал симулятор сишного кода для ПЛИСов. Вроде бы всё отлично, но проверяющие последовательности входящих сигналов (тестбенчей) всё-равно придётся писать вручную. Сколько их будет создано? Одна, две, десять - написать больше вряд ли позволит время.

Да, я про этот SystemC и вещал. Но я только уточню что я не позиционирую данное решение как некую такую «серебряную пулю». Да, жизнь облегчает. Да, позволяет ускорить процесс разработки, но нет, 146%-й оптимальности ждать не стоит и всё равно «по месту обработать напильником» это наше всё. С нуля если смоделировали, сгенерировали первое решение (проверка избранной архитектуры, например) а дальше Vivado HLS и поехали как положено.

Собственно, как и сказано – *SystemC is applied to system-level modeling, architectural exploration, performance modeling, software development, functional verification, and high-level synthesis. *

Ну и ссылки на видосики от Xilinx:

Тестбенчи это отдельная тема, но так же да – их ваять приходится врукопашную.

Конечно, это всё в большей степени Xilinx-специфичная история, но она позволяет несколько упростить и ускорить хотя бы начальную часть разработки.

Moisha_Liberman ()
Ответ на: комментарий от anonymous

Я соглашусь вот с этим:

На рисунке 9 показана временная шкала проекта с различными маршрутами проектирования. Традиционный маршрут проектирования на HDL занял почти два месяца, чтобы получить первый проверенный образец; из них четыре недели были потрачены на первоначальное проектирование и кодирование на Verilog, две недели на архитектурные доработки и оптимизацию и еще две недели на тестирование и валидацию. Маршрут с традиционным HLS без SLX занял почти три недели, при этом большая часть времени была потрачена на изучение архитектуры и оптимизацию проекта. Благодаря SLX мы смогли пройти весь цикл менее чем за неделю. Что особенно важно, изменения техзадания могут быть реализованы намного быстрее с маршрутом SLX, чем с HDL или даже традиционным HLS.

Да, маршрут проектирования сокращается. Но вот качество надо ручками дорабатывать. Иначе мы получим что-то типа скриптоты в «большом программировании» – писать быстро, а вот по потребляемым ресурсам и скорости исполнения, лучше бы и ненадо.

Moisha_Liberman ()
Ответ на: комментарий от snizovtsev

А чёж нельзя?

Можно вам нубских вопросов позадавать?

Вообще-то, это технический форум, так что почему нет? =) Для задавания вопросов и получения ответов и создан, IMHO.

Хочу поиграться с FPGA, но не знаю с чего начать.

Книги Вы и без меня нагуглите. Посмотрите например там какие платы рекомендуются для начинающих и недорогие для начала. Порешайте примеры, которые там приведены.

  1. SystemC, Chisel и прочие на спартане-6 заведутся, или множество доступных ЯП для FPGA зависит от чипа?

У Вас в любом случае всё в результате сведётся к Verilog/VHDL.

  1. Тот вариант что с PCIe - там же можно общаться с CPU по PCIe, или это только для отладки и прошивки?

В принципе, можно. Если будет реализация.

Хочется для старта реализовать какую-нибудь простой шифр (trivium) и передавать/получать буфер по PCIe. Т.е. чем-то побыстрее UART и без осциллографа.

Рано. Пока не вкурите что такое «программирование FPGA». Если по очень большому счёту, то это «программирование входов и выходов». Остальное в книгах.

  1. Потянет ли оно какой нибудь самый простой опенсорсный RISC-V CPU? Т.е. если я хочу взять готовые опенсорные блоки и поиграться в их модификацию и комбинирование - нужны ли тысячи долларов и годы времени?

В принципе, потянет. Вот pdf с примерным описанием Там всё построено на XC6SLX16. Ищем на алике. Находим, тут всего 32Mb RAM, можно найти чуть дороже. В принципе. Смотрите по книгам, что там порекомендуют.

Дальше смотрим на описание проекта RISC-V и находим исходники на GitHub к нему.

Но учтите что сам по себе RISC-V это не столько реализация, сколько спецификация. Т.е., приведённый код может быть «не совсем» RISC-V, а что-то подобное. И я сразу Вас расстрою тем, что на Spartan 6 код будет ну оооочень нетороплив. Реализации на том же UltraScale тоже «неторопливы» мягко говоря. Но в принципе, посмотреть «есть ли там жизнь» Вам хватит. Главное – разобраться с реализациями.

  1. Под онтопиком тулзы работают?

Лучше начинать с оффтопа. Не стоит одновременно разбираться с тулзами и программированием. Сперва одно, потом другое. Сперва программирование, чтобы быть уверенным что всё делаете правильно и всё работает, потом с проблемами с тулзами под онтопик.

  1. Почему новичкам именно спартан-6 советуете? Какие проблемы могут быть с другими?

Цена. Всё просто. =) Думаю, неофит не выкинет пару кусков зелени на борду. Это у меня подрастающему поколению повезло, т.к. у меня уже потрачены эти деньги. =)))

Moisha_Liberman ()
Ответ на: комментарий от Puzan

Можно и Artix 7...

На алике их от 7-8К руб. и выше Но я бы рекомендовал посмотреть на те, которые будут указаны в «учебниках» (если будут, конечно). Пофиг что тулзы будут не самые свежие. Главное – усвоить принципы.

Moisha_Liberman ()

Открыт какой-то не слишком полезный огрызок кода, полностью бессмысленный без софта Xilinx.
PR акция для несмышлёнышей.

anonymous ()
Ответ на: комментарий от crypt

Я не вчитывался, думал, они цельный продукт открыли.

Тут вон пишут, что

не слишком полезный огрызок кода

Ну тогда ладно, не важно.

P.S. Посмотрел на схему на картинке.

wandrien ()
Последнее исправление: wandrien (всего исправлений: 2)

Я прошу прощения, но сейчас будет откровенная реклама. Нам удалось запустить ОС A2 под Zybo Z7-10. Ничего особенного в этом нет, но раньше это умели только швейцарцы (в т.ч. русские швейцарцы) и ничего не было понятно, а теперь процесс описан (и плюс исправлен баг).

Там ОС с гуем, сама ОС выполняется на Cortex A9, а на ПЛИС реализована видеокарта. При этом ещё остаётся место, и, что самое интересное, есть возможность программировать ПЛИС с помощью так называемых Active Cells. Получается что-то типа реализации тредов на железе.

Вот тут есть презентация, но я ни в зуб ногой, что там и к чему. Средства разработки под эту карту - Vivaldo и Vitis, но именно для этой карточки они бесплатны (просто сливают телеметрию).

Вот презентация технологии, может быть, кому-то будет интересно.

https://oberoncore.ru/_media/library/friedrich_presentation_at_workshop_on_system-on-chip_design_21-23_10_2013.pdf, начинать можно где-то со страницы 103.

Вот описанный процесс запуска:

https://gitlab.com/budden/ja-o-s/-/blob/главная/док/сборка-и-запуск-A2-на-Zybo-z7-10.md

Плата обошлась мне в 23 тыр, но оооочень долго ехала. Понимаю, что это не слишком-то дёшево.

Вдруг кому-нибудь будет интересно.

den73 ★★★★★ ()
Последнее исправление: den73 (всего исправлений: 2)

А тем временем нормального *HDL для описания логики работы FPGA так и нет. Одно костылье, включая эти ваши Verilog-и и прочий SystemC для бородатых сишников в свитерах. Сразу видно, что отрасль занехащена, порог входа высокий и потому нормальные средства разработки туда не доплывают.

alienclaster ★★★ ()
Ответ на: комментарий от den73

Оба-на...

швейцарцы (в т.ч. русские швейцарцы)

Швейцария… Оберон… A2… Картинка складывается. Уж не попытку ли гальванизировать трупик чего-то из поделий Коляна Вирта (в частности такой компьютер как Lilith) вижу я? Вообще-то, этот компьютер, создававшийся ещё в конце 70-х, начале 80-х, уже тогда на х… никому не был нужен «не пользовался спросом», кроме как у самого Вирта. Но «окодемичесгие олухи» до сих пор с ним как с LISPом писанной торбой носятся.

Одна незадача – требования рынка сейчас не то чтобы требуют, они просто орут о том, что нужны люди, имеющие навыки в «обработке изображений», «сетевого трафика», «финансовой информации» и иже с ними на FPGA. Ну просто потому, что это имеет ряд преимуществ.

Плата обошлась мне в 23 тыр, но оооочень долго ехала. Понимаю, что это не слишком-то дёшево.

За ~900р. - ~1500р. в России можно прикупить тот же Zynq-7000. Ездит к заказчику достаточно быстро. Там два ядра ARM Cortex-А9 (в 7000S одно ядро). И FPGA Artix 7 или Kintex 7.

Вдруг кому-нибудь будет интересно.

Да тут бы бабок заработать… Именно поэтому Xilinx и приоткрывают свои исходники для High-Level Synthesis. Т.е., чтобы быстро, как можно быстрее, (ещё быстрее!) создать хотя бы прототип решения, а уж потом его до продакшона допинывать. Всем вот это вот интересно. Xilinx, приоткрывая свои исходники, надеются на то, что народ начнёт пилить свои тулзы, ускоряющие процесс разработки.

Но народ всё яростно надра… занимался какой-то хернёй… Ага. Вместо того, чтоб денег зарабатывать. Вот почему «окодемичесгие круги» ни как не поймут почему им ни кто не хочет платить денег.

Moisha_Liberman ()
Ответ на: комментарий от X-Pilot

Два момента.

В чем ее отличия от тех, которые вы показали?

Два момента:

  • Спартан спартану рознь (это во-первых). Хотя, тут и не особо дорогой использован.

  • Посмотрите на конфиг этой платы. Она заточена под какие-то радиодела. Там GNU Radio и USRP hardware driver. Т.е., это какое-то специализированное, узконишевое изделие. Такие изделия просто не могут стоить дёшево, несмотря на относительную дешевизну отдельных компонент, компании, производящие такого рода решения от души навариваются, т.к. на рынке альтернатив просто нет. Исполненных в железе.

Ну, то есть, взять отдельно комп и водрузить туда GNU Radio наверное можно. Прицепить к компу некое железо для радио и заставить его работать с USRP наверное тоже можно. А вот так, чтобы всё в сборе и с FPGA для анализа радио сигналов – извольте платить денег.

Moisha_Liberman ()
Ответ на: Оба-на... от Moisha_Liberman

Прикольная цена, «не пойму, золотая рыбка, где ты меня кидаешь».

A2 - это не лилит, а другая штука. Они много чего сделали за много лет, всё разное, не надо путать одно с другим. Используется где-то в мед.оборудовании и ещё где-то, и там они делают что-то интересное (см. по ссылке выше).

den73 ★★★★★ ()