Обновить
26.17

FPGA *

Программируемые логические интегральные схемы

Сначала показывать
Порог рейтинга

Народ жалуется на трудности поиска работы. В частности такие жалобы есть в группе русского QA коммьюнити в США. Написал для них следующий пост. Интересно сколько откликнется:

"Господа! В этом коммьюнити есть junior QA, которым могут быть полезны (например для поиска работы) рекомендации в LinkedIn. Я готов написать нижеследующую рекомендацию в обмен на несложную работу: проверить инструкцию и репозиторий для семинара, который я буду проводить в грядущий викенд в Cal Poly SLO (Калифорнийский политехнический государственный университет в Сан-Луис-Обиспо).

Рекомендация в LinkedIn будет звучать так:

"Товарищ такой-то/такая-то demonstrated reliable QA skills and verification creativity when testing a CI/CD workflow setup for an educational project aimed to help the universities to teach VLSI classes. The tested product is a variant of a Tiny Tapeout GitHub template for ASIC synthesis used during the Verilog Meetup at California Polytechnic State University in San Luis Obispo, California. The template includes JSON-based GitHub Actions and Python scripts to run Yosys/OpenROAD-based RTL-to-GDSII flow and cocotb/pytest-based verification for the digital designs coded in SystemVerilog. такой-то/такая-то wrote an informative report describing the observed usability problems and unclear parts in the instructions for the user. This work greatly contributed to the success of the CalPoly seminar and similar planned events in microelectronics workforce development.

Инструкция здесь - https://verilog-meetup.com/2025/10/20/from-fpga-to-asic-using-template/

Если вас это заинтересовало, можете приступать. За вопросами можете обращатся в личку.

Теги:
0
Комментарии7

Питон - предмет обожания секты питонистов, которые ходят по домам и всем говорят "Как, вы еще не выучили Питон? Он же учится за две недели!"

Допустим, но вот два практически идентичных репозитория (1, 2), которые я только что приготовил как форки от двух других практически идентичных репозиториев. Один для создания чипа на немецкой фабрике IHP (The Leibniz Institute for High Performance Microelectronics), а другой для создания чипа на американской фабрике SkyWater (аналог зеленоградского Микрона для военных).

И вот в одном репозитории на питоне нужно писать:

clock = Clock(dut.clk, 10, units="us")
assert not ((dut.uio_out.value >> 4) & 1);

а в другом:

clock = Clock(dut.clk, 10, unit="us")
assert not dut.uio_out.value [4];

Если во втором написать не "unit", а "units", оно пожалуется:

DeprecationWarning: The 'units' argument has been renamed to 'unit'.

DeprecationWarning: The 'units' argument has been renamed to 'unit'.

И типы данных поменялись:

unsupported operand type(s) for >>: 'LogicArray' and 'int'

А все почему? У питониcтов все время меняются версии, и в их коммьюнити не принято поддерживать обратную совместимость:

"Просто используй другую версию!", "Просто поставь виртуальные среды!", "Как, ты еще не используешь Докер? С ним это решается элементарно!" - "Ты просто не pythonian!"

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

Теги:
+10
Комментарии42

Читает ли кто-нибудь в современном мире диссертации или это считаетеся какой-то фигней чтобы поставить галочку? Вспомним что вся цифровая электроника, все айфоны, интернет-роутеры и ИИ-ускорители - построены на двух диссертациях: 1) магистерской диссертации Клода Шеннона, который в 1937 году повысил уровень абстракции проектировщиков с переключателей (на основе реле и ламп) до булевской логики и/или/не и 2) диссертации 1954 года Дэвида Хаффмана в MIT, который обобщил более ранние потуги и сформулировал модель Хоффмана для последовательностной логики: комбинационное облако вычисляет следующие значения элементов состояния (сейчас это в 99+% случаев D-триггеры), которые записываются по фронту тактового сигнала.

У истории были альтернативные ветки (например электроника могла бы строится на C-элементах Мюллера), но в нашей параллельной вселенной они не прижились.

Теги:
Всего голосов 9: ↑8 и ↓1+10
Комментарии10

Товарищи студенты из проживающих в США! Кто хочет отправиться на летнюю практику и/или программу для выпускников вузов в техасском отделении Самсунга? Вы можете сходить на сайт и подать заявку напрямую (ссылка 1, ссылка 2). Альтернативно, я могу сделать для вас внутреннюю рекомендацию, так как я член команды разработки GPU в телефонах. Но так как я стараюсь рекомендовать компании только кандидатов, в качестве которых (по своим критериям) я уверен, я предлагаю всем желающим сделать одно из двух вещей:

  1. Решить задачку под названием SystemVerilog Microarchitecture Challenge for AI No.2. Adding the Flow Control. , далее получить от меня разбор вашего решения, после чего решить еще три маленькие задачки в зуме передо мною, и у вас будет рекомендация.

  2. Если вы живете в Области Сан-Францисского Залива или в Сакраменто, то сделать какой-нибудь проект на FPGA платах в рамках разработки open-source примеров для non-profit клуба Verilog Meetup (не аффилиированного с Самсунгом, это просто малочисленная тусовка, куда заходят люди из Теслы, Intel, Apple итд). Наш клуб будет на выставке самоделкиных Maker Faire в Valejo 26-28 сентября. Вы можете подойти ко мне на стенде и мы обсудим ваш проект.

После того, как вы сделаете или (1) или (2), я занесу ваше резюме во внутреннюю базу данных, вам придет письмо с предложением подать заявку, после чего, если ваше резюме выберут, вам нужно будет пройти весь официальный процесс рекрутинга.

Повышает ли моя рекомендация ваши шансы? Этого я не знаю. Как говорил Остап Бендер, полную гарантию вам может дать только страховой полис.

Пишите мне на yuri@panchul.com если вас интересует такое предложение.

Спасибо,
Юрий Панчул

Теги:
Всего голосов 11: ↑9 и ↓2+14
Комментарии2

FFTW vs Ne10 на ARM Cortex-A9: кому отдать БПФ в embedded?

Недавно в одном проекте по спектральному анализу ЛЧМ-сигналов на моей AD/DA плате я столкнулся с тем, что FFTW на Cortex-A9 в Zynq рисует задержку в сотни микросекунд — критично для реального времени. Решил проверить лёгкую библиотеку Ne10: оказалось, что на средних размерах БПФ (128–512) Ne10 даёт до +10% производительности (905 MFLOPS против 817 MFLOPS у FFTW) благодаря оптимизациям под NEON.

График производительности FFTW vs Ne10 на Cortex-A9
График производительности FFTW vs Ne10 на Cortex-A9

Однако Ne10 выигрывает не во всём: для очень малых (≤ 64) и произвольных больших размеров FFTW остаётся лидером за счёт агрессивного планирования, double-точности и возможности сохранять «wisdom»-планы. Выбор между ними зависит от сценария: если нужна быстрая интеграция и фиксированные степени двойки — Ne10, а для универсального решения с поддержкой любых N и многопоточности — FFTW.

Более подробное описание соберу в статью. А какой библиотекой пользуетесь вы и какие удивительные кейсы встречали? Делитесь в комментариях, а в моём Telegram-канале DSP_labs вас ждут полные бенчмарки, скрипты и ещё больше примеров оптимизации DSP на embedded.

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии2

DIY-плата AD/DA для DSP-задач на ARM+FPGA: зачем я её собрал

В мире встроенных систем и цифровой обработки сигналов (DSP) ключ к быстрому прототипированию и надёжной отладке лежит через собственный инструмент — аппаратную платформу, точно отвечающую вашим задачам. Моя цель — отработать цепочку «аналог ↔ цифра ↔ FPGA ↔ ARM» в реальном времени, без лишних звеньев и оговорок. Именно поэтому я спроектировал собственную отладочную DIY-плату AD/DA с программируемым генератором тактовой частоты.

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

Плата выполнена в формате "Arduino" (?) и служит модулем для быстрой интеграции в платформы ARM+FPGA (Zynq-7000 или аналогичные) через стандартный 40-контактный разъём KLS.

Плата AD/DA
Плата AD/DA

В основу конструкции легла классическая SDR-структура: трансформаторы, АЦП, программируемый тактовый генератор, буфер тактового сигнала, ЦАП и интерфейсные сигналы на разъём KLS.

1. Аналого-цифровой преобразователь: AD9283

  • 8-битный одноканальный АЦП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 100 MSPS.

  • Сигнал PWRDWN и шина данных подаются с разъёма KLS.

  • Вход с внешнего SMA через трансформатор дает дифференциальный сигнал для высокого SNR.

2. Тактовый генератор и буфер: Si514 & Si53306

  • Программируемый кварцевый генератор Si514 формирует опорную частоту.

  • Тактовый буфер Si53306 распределяет сигнал на АЦП, ЦАП и FPGA.

3. Цифро-аналоговый преобразователь: AD9744

  • 14-битный одноканальный ЦАП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 210 MSPS.

  • Сигнал SLEEP и шина данных подаются с разъёма KLS.

  • Выход через трансформатор возвращает аналоговый сигнал на внешний SMA-коннектор.

Зачем и для чего: практические сценарии использования этой отладочной платы

  1. Формирование и анализ сигналов

  • Создания многокомпонентных тестовых сигналов (модуляции AM/FM, chirp-сигналов) для оценки пропускной способности и реактивности FPGA-ядра.

  • Тестирования и калибровки входных трактов при различных уровнях амплитуды и частоты.

  • Генерации шумовых или псевдослучайных сигналов для проверки устойчивости DSP-алгоритмов.

2. Отладка алгоритмов цифровой обработки в реальном времени

  • Нужно прототипировать алгоритмы цифровой обработки данных непосредственно на связке ARM+FPGA и видеть результат «на лету».

  • Использование платы в образовательных целях: для обучения студентов или коллег практикам embedded-разработки и современной цифровой обработки сигналов.

  • Реализация и проверка в HDL алгоритмов, например, вейвлет-преобразования для анализа сигнала и выделения его локальных особенностей.

3. Сравнительное исследование реальной производительности ARM и FPGA-ядер

  • FPGA-ядро: пропускная способность HDL-модулей FIR/IIR, вейвлет-анализ, дизайн HLS-функций.

  • Сбор и визуализация метрик (latency, throughput, resource utilization) через ARM-API и JTAG-интерфейс FPGA.

  • ARM-ядро: замеры FFT-блока, фильтров в Linux-окружении.

Заключение

Эта AD/DA-плата для ARM+FPGA обеспечивает точность, скорость и гибкость, необходимые как для исследований DSP-алгоритмов, так и для промышленных встраиваемых и исследовательских проектов.

Присоединяйтесь к https://t.me/dsp_labs — там выходят реальные бенчмарки, исходники и советы по оптимизации DSP-алгоритмов на ARM/FPGA платформах!

Теги:
Всего голосов 11: ↑10 и ↓1+11
Комментарии11

Уже в четвертый раз встречаю следующий психотип. Человек окончил университет в Канаде, где в программе были в том числе лабы по FPGA. Прилетел в Калифорнию чтобы говорить и тусоваться с людьми. С вопросом: "какие есть проблемы в дизайне электроники чтобы решить их с помощью AI?"

Для меня из его реакций на некоторые мои утверждения ясно как божий день, что у него нет достаточного трейнинга в проектировании чтобы видеть эти проблемы самому. Поэтому я ему предложил всю ту же задачку на SystemVerilog (1, 2), которую я в этом году даю всем и в которой как в микрокосме представлены проблемы дизайна электроники, по крайней мере в микроархитектурной части и в контексте проекта в большой компании с использованием кода и тестового стенда других людей. Типа "решишь - поймешь в чем проблема".

Вместо того, чтобы по моим рекомендациям решить задачку и понять о чем я говорю - человек продолжает тусоваться и задавать людям вопросы на основе информации которую он услышал у других людей. Например спросил меня, хожу ли я на выставки DAC, где все говорят что тулы (средства проектирования) ограничивают сложность дизайнов. Я ответил что хожу на эту выставку с 1996 года, и тогда тоже все так говорили. Спросил у меня, слышал ли я о Chisel. Ответил "его используют только SiFive и Беркли. То что Chisel за 10 лет не проник в другие компании - означает что он ничего принципиально не решает". Итд.

Я не понимаю - что человек пытается достичь тусованием и такими вопросами? Какая часть фразы "пока вы сами не попробуете решать микроархитектурные задачи на верилоге, вы не будете понимать что вам говорят люди о проблемах такой разработки" - какая часть этой фразы ему непонятна?

Единственная гипотеза которая приходит мне в голову - человек пытается с помощью тусования найти технических людей, которых потом перепродать VC, то есть возглавить стартап и получить под них инвестии от венчурных капиталистов. Проблема с такой идеей: для технического человека ясно-понятно, что кроме тусования у этого джентльмена ничего значимого нет, то есть такой скрипач не нужен. С таким же успехом технический человек может сам пойти к VC.

Причем это еще лучше чем технический человек понимают сами VC - они сразу идентифицируют и стараются выкинуть из сделки такого рода бессмысленных посредников.

Но возможно я усложняю и человек тусованием просто решает какие-то психологические проблемы или это для него что-то типа путешествий которые любит молодежь.

Теги:
Всего голосов 16: ↑12 и ↓4+13
Комментарии5

15 лет назад я думал что образование в области компьютерной архитектуры поломано только в России, а на Западе с этим все хорошо. Что значит "поломано"? Студент может поговорить про суперскалярные процессоры и многоядерные кластеры, но не может ничего спроектировать.

Но потом я поинтервьировал кучу западных студентов, и обнаружил что такое явление есть даже в вузе X с хорошими учебниками и стоимостью образования $90 тысяч в год.

Просишь студента написать модуль на верилоге на десять строк строк с простой (хотя и не из учебника) функциональностью, и он начинает извиваться, как уж на сковородке: пишет какие-то временные переменные, пытаясь затянуть интервью чтобы вышло время и/или по моему выражению лица пробует угадать идет ли он в правильную сторону или пишет ерунду.

И я выдвинул теорию, что им профессор дает готовый код процессоров посимулировать и посинтезировать, а сами они на верилоге ничего не пишут. То есть у меня в голове образовалась модель такого студента, своего рода теоретический Бозон Хиггса, который умозрительно представили задолго до обнаружения.

И вот сегодня я такой Бозон Хиггса засек на LinkedIn. Выпускник этого самого вуза X написал пост, как он изучал учебник Хеннесси-Паттерсона. Он показал фото листка бумаги, испещренного заметками и диаграммами. Он просто сидел, читал по частям учебник и делал такие заметки.

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

Ну я короче написал ему, что нужно каждую концепцию подтверждать для себя упражнением. Выучил статический конвейер CPU - написал процессорик с несколькими инструкциями на несколько сот строк. Выучил кэш - написал модуль на несколько сот строк. Предсказатель перехода итд. И ради бога, без чатгпт - с ним это не выучится.

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

Для Бозона Хиггса эта идея была в новинку. А между тем такой же подход нужно делать и с курсами по компиляторам, и ядрам OS.

Хотя зачем я все это говорю. Сейчас грянет LLM и наша цивилизация исчезнет.

Теги:
Всего голосов 32: ↑30 и ↓2+35
Комментарии13

Про колёсо Илона (оно же "колесо Mecanum") я с коллегами узнал достаточно давно. Году в 2018 мы загорелись желанием изготовить свой вариант четырехколёсной тележки на колёсах Илона чтобы освоить программирование её кинематики и начали с проектирования собственно колёсного хаба. К слову сказать, таких колёс на просторах известного китайского маркетплейса - вагон и маленькая тележка, но нам захотелось изготовить колесо своего дизайна. Подробности о кинематике тележки на четырех колёсах Илона можно прочесть в статье на Wikipedia.

Коллега ЧПУшник за пару недель полностью спроектировал колесо в 3D и даже изготовил один хаб (из двух симметричных половинок) из сплава Д16Т на нашем фрезерном ЧПУ в 5-ти координатах. Много лет этот хаб лежал на витрине и пугал своей экзотичной формой посетителей нашего офиса. В марте-апреле 2025 года у нас образовалось некоторое количество свободного времени и мы решили задействовать его с пользой, то есть дожать тему колёс Илона. Мы изготовили оставшиеся три хаба, для чего пришлось полностью переписать программу для ЧПУ чтобы сделать инверсную копию колеса. Запроектировали и изготовлили на токарном ЧПУ латунные втулки для роликов, а на 3D принтере напечатали сами ролики из эластичного материала. Оси роликов изготовили из калибровонного прутка Ф6 пищевой нержавейки.

Собрали всё воедино и установили на платформу с четырьмя шаговыми двигателями типа NEMA17, привод на колёса от которых передается через червячные редукторы с числом редукции 1:30. Для подачи сигнала на ШД использовали драйверы DRV8825 от дешманского 3D принтера предоставленного на разграбление всё тем же коллегой. Блок управления запрограммировали на Verilog-е для разработанной ранее плате "Карно" предназначенной для обучения ПЛИСоводству. В качестве дистанционного управления тележкой выбрали пульт ДУ от телевизора, так как код его декодера очень прост в реализации на Verilog и уже применялся нами для другого аналогичного проекта.

Как видно из приведенного выше видео, первая проба нашей тележки получилась не очень удачной, в ней имеются следующие проблемы:

1. Слишком большое редукционное число (1:30) делает перемещение тележки очень медленным. Радикально увеличить частоту сигнала STEP (сейчас это 16 кГц при режиме MODE=1/16) не получается - шаговики теряют синхронизацию и перестают вращаться. Планируем зменить редукторы, воможно вместе с ШД, на BLDC.

2. Из-за отсутствия подвески любые неровности поверхности приводят к потере сцепления одного из колёс, что моментально сказывается на направлении движения тележки.

3. Число роликов в колесе требуется увеличить (сейчас их 6 шт), чтобы обеспечить плавный переход от одного ролика к другому, иначе заметны рывки.

4. Ролики требуется изготавливать гладкими из резины с высоким коэф трения, 3D печать не дает качественной поверхности и такие ролики плохо сцепляются с половым покрытием. Тут есть варианты: выточить на ЧПУ из полиуретана или отлить из эластопласта в пресс-форму. Возможности для этого имеются.

Ждем следующей паузы в основной деятельности, чтобы заняться разрешением выявленных проблем нашей тележки. На этом пока всё.

Код блока упраления тележкой на языке Verilog для ПЛИС: https://github.com/Fabmicro-LLC/KarnixMecanumTest

Дизайн платы "Карно" выполненный в САПР KiCAD: https://github.com/Fabmicro-LLC/Karnix_ASB-254

PS: 3D модель колеса Илона выложу позже, после доработок.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Собеседование инженера: взгляд со стороны нанимающих специалистов

Интересно бывает послушать, над какими проектами работал человек. Но эта часть биографии частенько оказывается приукрашена и в позиционировании кандидата не помогает. В резюме может быть 30 лет опыта с описанием задач, спрашиваешь по ним, а ответа нет. Потому что человек, например, все 30 лет копипастил одно и то же, не вдаваясь в суть. Вообще, обсуждение опыта снижает эффективность собеседований, делает их… расхлябанными, что ли.

Частая ситуация на собеседовании — недостаточно глубокое погружение в интерфейс, с которым у кандидата был опыт работы. Например, указан опыт работы с протоколом USB. На собеседовании после нескольких вопросов по архитектуре протокола оказывается, что кандидат просто вставлял готовый IP без понимания принципов его работы. Но в резюме это заявлено как полноценный опыт работы с протоколом.

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

Семеро специалистов YADRO по направлениям схемотехники, верификации, RTL-дизайна, FPGA и аппаратной разработки рассказали, как подготовиться к собеседованию инженера, как настроиться на диалог с компанией и получить дополнительные очки в свою пользу.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии0

Проверяй, пока не поздно: функциональная верификация в жизненном цикле СнК

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

Без верификации вероятность ошибок очень высока, и это может привести к некорректной работе оборудования. Поэтому задача инженеров-верификаторов — тщательно изучать документацию, разрабатывать тестовые сценарии и подтверждать, что аппаратура соответствует заявленным характеристикам и функционирует так, как задумано.

Время, необходимое для прохождения жизненного цикла СнК, зависит от команды и применяемых технологий. В индустрии считается, что эффективная работа означает выпуск нового тейп-аута (tape-out) раз в полгода. Это говорит о том, что процессы налажены и команда работает с высокой скоростью.

Жизненный цикл верификации в СнК
Жизненный цикл верификации в СнК

Однако сроки могут значительно варьироваться. Если проект строится на полностью собственных разработках без использования сторонних решений, цикл разработки может растягиваться до трех лет. Все определяется стратегией компании: в одних случаях обновления происходят каждые шесть месяцев, в других — раз в несколько лет.

В статье Дмитрий Кишко, руководитель группы функциональной верификации в YADRO, рассказал, как устроена работа инженера-верификатора, какие задачи решает команда на этапе проектирования и почему верификация — это отличный вход в профессию для тех, кто интересуется «железом» и кодом. 

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

SystemVerilog отжил свое? На пятки наступает Scala/Chisel?

DARPA, управление перспективных исследовательских проектов Минобороны США, описывает Chisel как технологию, позволяющую маленьким командам создавать большие цифровые проекты. И я вполне могу с этим согласиться, но есть нюансы.

Chisel — это, по сути, библиотека Scala, а точнее, Domain Specific Language. Языку Scala уже больше 20 лет, он постоянно развивается, сочетает функциональное и императивное программирование. При написании кода на Scala вам доступны все библиотеки Java. 

Scala — это масштабируемый язык, который позволяет добавлять свои языковые конструкции. На основе Scala можно создать язык под свои задачи. Так 12 лет назад и поступили инженеры в Беркли: выкинули из Verilog 90%, оставив только нужное, и обернули все это в Scala. Получился Chisel. 

Chisel используют прежде всего для создания RTL-описаний. Также он позволяет проводить симуляцию несложных модулей. Это удобно для создания юнит-тестов и моделирования работы различных алгоритмов. В плане симуляции не стоит возлагать на Chisel такие же надежды, как на System C или что-то подобное. Симулировать вы сможете лишь очень маленькие схемки, а генерировать — хоть целые кластеры из тысяч процессоров, вообще все, что захотите.

На основе Chisel/Scala можно написать свой HLS-инструмент (High Level Synthesis), где одним росчерком пера вы будете создавать очень большие схемы, что с использованием одного Verilog невозможно.

В блоге YADRO Денис Муратов подробно сравнил Chisel/Scala с SystemVerilog в создании RTL-описаниях, раскрыл основные преимущества и недостатки альтернативы, а также ее дополнительные возможности — функциональное программирование и переиспользование модулей.

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии0

Как тестируют чипы перед производством: что такое системная верификация 

Системы на кристалле (SoC) состоят из логических и функциональных блоков. Такое деление позволяет независимо разрабатывать разные части системы, а затем модульно отлаживать их в изолированном окружении. Функциональная верификация — это процесс тестирования таких блоков по спецификации. Она проводится перед отправкой чипа на завод и называется pre-silicon стадией. Без этой процедуры велик шанс получить нерабочий чип, причем в объемах всей произведенной партии.

Проводить тесты можно при помощи таких инструментов, как:

  • Функциональные симуляторы (например, QEMU) — работают очень быстро, но в отличие от других инструментов не предоставляют достоверной информации о работе устройства. Зато QEMU может почти молниеносно осуществить подачу требуемых данных и выдать результат в виде «прошел» или «не прошел», а также некоторые логи.

  • Потактовые симуляторы (например, VCS) — у них есть внутренняя система планирования времени, но скорость работы низкая. Они нужны для сбора трассировочных файлов, по которым можно восстановить состояние любого регистра и провода в любой момент.

  • ПЛИС — специальные вычислительные платформы, на которые можно загрузить и запустить «образ» своей микросхемы, будто это уже готовое физическое устройство. ПЛИС значительно быстрее потактовых симуляторов, но при этом дает представление о реальном поведении системы на кристалле.

У каждого решения есть плюсы и минусы, и не всегда очевидно, какое лучше подходит для решения конкретной задачи. Именно поэтому придумали концепцию косимуляции, при которой микросхема делится на небольшие логические части, каждая из которых запускается в отдельном окружении. Наша задача как инженеров верификации — настроить бесшовное соединение этих частей. Так мы заметно ускоряем работу потактового симулятора, потому что распределяем его нагрузку на другие элементы системы.

Как тестируют чипы на примере задач хакатона и как стать инженером по верификации, в статье рассказывают победители прошлогоднего SoC Design Challenge.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Ближайшие события

Этого не найдешь в документации к Xilinx Zynq

Производители SoC, как правило, предоставляют окружение для разработки и документацию с примерами реализации универсальных решений. Но много важных деталей упускается или скрывается от пользователя. В итоге нетривиальная модификация системы требует долгих исследований и экспериментов. 

Изучили все нюансы на практике за вас, реализовав проект запуска Embedded Linux на Hard- и Soft-процессорах Xilinx Zynq. Пойдем по этапам:

  1. Разработаем проект программируемой логики.

  2. Соберем операционную систему.

  3. Запустим ОС и верифицируем проект.

В качестве бонуса: запустим ОС Soft-CPU на эмуляторе QEMU и разработаем bare-metal приложение в обход IDE Vitis.

Ради чего все это стоит затевать
Ради чего все это стоит затевать

Теги:
Всего голосов 9: ↑9 и ↓0+12
Комментарии0

Только что вышел первый коммерческий маршрут синтеза для FPGA на Apple Mac - его надо срочно протестировать! Прошу всех у кого есть Apple Mac и плата от Gowin - скачать Gowin V1.9.10.03 Education (Mac) и клонировать с гитхаба примеры BGM и попробовать запустить их вместе. Для этого возможно понадобиться модифицировать bash скрипты в директории scripts, но если кто-нибудь это сделает и пришлет pull request, это будет здорово - можно будет сообщить и Gowin-у, и использовать для Школы Синтеза.

К нам на митапы в Hacker Dojo в Маунтин-Вью, Калифорния, часто приходят студенты с маковскими ноутбуками и на вопрос "как запустить софт для разработки на Маке", мне приходилось отвечать: "на Маке пока работает только симуляция с Icarus Verilog, а также нестабильный открытый софт для синтеза на основе OSS CAD Suite, с которым нужно обходить разные проблемы, так что пока купите на eBay старый x86 компьютер, поставьте на него Линукс и упражняйтесь на нем". Но с новым софтом от Gowin картина радикально меняется!

Замечу, что синтез у Gowin гораздо быстрее чем у Xilinx и Altera, а платы - дешевле и достаточные. Поэтому Gowin может реально отобрать кусок образовательного рынка - Xilinx/AMD и Intel/Altera просто слишком медленно шевелятся.

Теги:
Всего голосов 6: ↑5 и ↓1+6
Комментарии8

Большинство университетских профессоров в мире - ленивые. Как выдумали в 1970-е годы преподавать дизайн конечных автоматов примером FSM для светофора (Traffic Light Controller FSM), так и тянут эту бодягу и по 21-му веку. При том, что современные дизайнеры чипов не светофоры конструируют, а ускорители тренировки нейросетей.

Короче мы на Школе Синтеза Цифровых Схем решили преломить эту дурную традицию (которая встречается от Южной Америки до Средней Азии и Филиппин, с провинциальными вузами в Штатах включительно) и ввести в преподавание современный хардкор. То есть сделать домашку с конструированием FSM для управления блоками FPU выдранными из современного реального открытого RISC-V процессора.

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

Пример домашки: сконструировать FSM (а потом и конвейер) для вычисления такого-то ряда Маклорена (для синуса, экспоненты итд), имея в наличии N блоков умножения, M сложения и R деления с плавающей точкой - с разными латентностями.

При обсуждении такой домашки возник вопрос нужно ли для операций с плавающей точкой устанавливать флаг error для нечисел и бесконечностей. Конечно нужно, потому что это удобный повод рассказать про концепцию NaN и Infinity. Полез в википедию и в шоке обнаружил, что статья IEEE_754 на русском отсутствует, хотя есть на украинском. Это непорядок, нужно срочно поправить!

Теги:
Всего голосов 15: ↑13 и ↓2+16
Комментарии7