Использование TCL в разработке на FPGA

Интересно? Поехали…

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


В продолжение предыдущей статьи расскажу об использовании Antminer S9 для создания секвенсора для трансивера. Здесь будет более осознанное использование ПЛИС, создание собственного IP блока на Verilog, симуляция и прочие полезные вещи для начинающего пользователя Antminer S9. Если заинтересовались, прошу под кат.

Для программирования FPGA нужна среда проектирования. Например, при использовании микросхем ПЛИС Altera/Intel мы используем САПР Intel Quartus Prime Software. Возможно, основная ценность технологии ПЛИС даже не сами микросхемы, а программное обеспечение, которое позволяет разместить Verilog HDL / VHDL проект по логическим блокам и развести связи между ними используя заданные временные ограничения.
Возможно ли использование open source инструментов для FPGA проектирования?
Я расскажу о своем опыте использования Yosys oss-cad-suite для платы Марсоход3GW-2 на базе ПЛИС китайской компании Gowin GW1NR-LV9QN88PC6/I5. Фото платы показано выше в начале статьи.

ПЛИС-культ привет, FPGA хабрунити.
Шестой день рождения FPGA комьюнити мы по традиции отметили проведением слёта инженеров разработчиков, не по наслышке знающих, что такое VHDL и Verilog.

Если предыдущая статья про гибридное прототипирование https://habr.com/ru/company/baikalelectron/blog/582782/ описывала новаторское использование платформы HAPS, то сегодня мы расскажем в общем - что такое прототип, и какие традиционные подходы к прототипированию используют инженеры Baikal Electronics.
В маршруте проектирование сложных System-on-the-Crystal (SoC) прототипирование на FPGA занимает промежуточное место между моделирование на симуляторах (VCS, ModelSim и др.) и эмуляцией.
FPGA-прототипирование позволяет реализовать такие сложные сценарии системной валидации микросхемы как загрузка операционной системы (ОС). На прототипе операционная система может загрузиться за несколько часов, на симуляторе ОС грузилась бы в течении месяцев. При этом на FPGA с помощью встроенного логического анализатора мы можем увидеть поведение любого сигнала нашего дизайна в любой момент времени. А также, в отличие от кремния, можем переконфигурировать наш прототип произвольное количество раз.
Идея написания собственного ядра появилась после прохождения школы-семинара по цифровой схемотехнике в городе Томске. На данном мероприятии проводилось знакомство с текущими языками описания аппаратуры (Verilog HDL и VHDL), а также с небольшим процессорным ядром schoolMIPS. Для понимания устройства ядер было принято решение изобрести собственный велосипед, следуя по пути развития schoolMIPS, но взяв за основу другую систему команд. Вследствие роста популярности RISC-V и открытости его системы команд (MIPS на момент начала написания ядра не имел открытую систему команд) для осуществления разработки будущего ядра был выбран набор инструкций RISC-V, а именно RV32I. RV32I имеет небольшой набор базовых инструкций (37 без учёта специальных) и при желании его можно расширить, например, добавив инструкции целочисленного умножения и деления (RV32M) или поддержку сокращённых инструкций (compressed instructions) (RV32C). Также данный проект задумывался как образовательный, поэтому было решено по максимуму увеличить наглядность работы ядра для эффективной демонстрации его работы.
По аналогии с schoolMIPS были реализованы следующие версии ядра:
На текущий момент описывается следующая версия ядра (03_pipe_risc_v_cpu_fc) с полным набором команд RV32I (без учёта некоторых специальных).


В статье приводится несколько примеров настройки и использования прерываний MIPS32 Release 2, включая подробное описание задаваемой при этом конфигурации, описывается работа с контроллером внешних прерываний.
Весь описываемый код опубликован на github в составе проекта mipsfpga-plus [L3].



Поставляемые в составе пакета MIPSfpga документация, ПО и конфигурационные файлы предполагают применение Bus Bluster в качестве аппаратного отладчика. Статья содержит инструкции по использованию для этой цели практически любого USB-UART адаптера, построенного на микросхеме FTDI с поддержкой MPSSE (FT232H, FT2232H, FT4232H, FT2232D). Кратко описывается интеграция среды разработки Visual Studio Code и отладчика GNU GDB.
Все конфигурационные файлы, описываемые в статье, а также часть документации доступны на github.





В октябре стартовал новый поток Школы синтеза цифровых схем для студентов технических направлений — образовательная программа по цифровому дизайну с упором на RTL и верификацию. 24 лекции с офлайн-практикой на платах в 26 кластерах по всей России, домашние работы, большое и оживленное комьюнити — такая программа, если вкратце, ждет своих героев. Набор на сезон 2025–2026 открыт, общая информация есть на сайте. А чтобы вы лучше представили, что будет в Школе синтеза, мы поговорили с четырьмя выпускниками прошлых лет.