Skip to main content

Каналы полезной информации и дайджест мира ASIC/FPGA

Аннотация

Для тех кто давно в теме FPG/A/SIC или просто по работе/хобби связан с проектированием на ПЛИС (или СБИС) удобно под рукой иметь агрегатор полезностей и советов, чем тратить время на самостоятельный сёрфинг по LinkedIn/Twitter/WikiChip/SemiWiki/etc..

В качестве инициативы, сделали с  единомышленниками пару каналов для агрегации интересных проектов и полезных советов (из собственной проектной практики и из сети). Детали о каналах ниже.

  

IP-cores

Пополняемая коллекция СФ-блоков на языках Verilog/VHDL для реальзации на ПЛИС/СБИС. Подавляющее большинство блоков — опенсорсные и допускающие свободное использование. Помимо СФ-блоков периферии и интерфейсов есть процессорные ядра (розлива таких пивзаводов как MIPSopen, RISC-V, etc) а также отдельный класс библиотек примитивов (в том числе для упрощения кросдоменных переходов) и алгоритмические ядра (ЦОС, нахождение и коррекция ошибок с CRC/ECC).

Что уже можно найти в канале по периферийным IP-ядрам:

DisplayPort, HDMI, DVI, VGA, HMC (Hybrid Memory Cube), DDR3, PCI-E + DMA, NoC, Interconnect, FX2LP (CY7C68013), FX3, FT2232, AXI4, PonyLink, HyperBUSUSB2 (ULPI), USB3 (PIPE), RNG, TRNG, MIPI DSI, MIPI CSI, HyperRAM, will be continue…

Язык канала — английский, организован удобный поиск по #хештегам (язык, тип СФ-блока/периферии, вендор ПЛИС (если применимо)).

 

Адресtelegram:ipcores

Альтернативный адресt.me/ipcores

 

FPG[A]SIC

 Основная направленность канала — Design Automation, т.е. отказ от GUI в пользу скриптов для автоматизации рутинных действий, 

Помимо этого в канале сейчас можно найти полезную информацию по таким темам как: полезные советы по EDA-инструментарию (Cadence/Synopsys, Vivado, Quartus, Yosys, ICEstorm, Verilator, Icarus Verilog, etc), примеры скриптов для автоматизации EDA, трюки по использованию специфичных tcl-команд, недокументированные/малоизвестные возможности тулов, HLS (High level synthesis) инструментарий с открытыми исходными кодами, NN/ML-фрейворки (нейросети и машинное обучение) для ПЛИС, скрипты автоматической сборки datasheets, подходы к использованию свободного инструментария формальной верификации, надстройки и плагины HDL для текстовых редакторов и IDE, свободные книги по тематике FPGA и HDL, советы по настройке Lint’еров, тонкости версионирования в git проектов FPGA & ASIC, трюки по сведению таймингов (лучшии выжимки из Ultrafast Methodology), реверсинжиниринг ПЛИС и используемых форматов представления данных (в т.ч. парсинг битстримов), свободные трансляторы Python -> HDL, продвинутые методики BROM/DSP folding/multi-pumping, подходы работы с партишинами и частичной реконфигарацией (partitions and partial recunfiguration), clock conversion and constraining, HDL tips and tricks, example to use DNA-protection, etc.

Язык канала — английский, организован удобный поиск по #хештегам (вендор ПЛИС/EDA, функционал, язык).

 

Адресtelegram:fpgasic 

Альтернативный адресt.me/fpgasic

Читать далее

Установка и использование Icarus Verilog в линукс на примере CentOS 7

Установка iVerilog

С последним икарусом пришлось немного попотеть, как обычно бывает, в репах дистрибутива древняя как еда мамонта версия, а сборка из исходников падает из-за старого gcc, если вкратце — надо установить последний devtoolset и и зависимости в лице gperf:

 Теперь  можем собирать икарус с верилогом, особенности, после клонирования переключаемся на метку версии v10_1, при сборке передаём компиляторы опции, позволяющие оптимизировать код под инструкции конкретного процессора, на котором идёт сборка, ну и затем собираем сборку в четыре потока:

Установка просмотрщика дампа GTKwave 

 iVerilog установлен. Докучи поставим GTKwave для просмотра дампов, гененируемых iVerilog’ом, тут всё просто — ставим из репо EPEL:

Использование iVerilog

Соорудим конфиг файл, которым будем настраивать окружение CLI на запуск и работу с iverilog:

Настраиваем окружение командой (обратите внимание на пробел после точки):

Компилируем исходники (здесь и далее — куски из мейкфайла), указывая в конце командной строки список из RTL & TB:

  • -g2005-sv — указываем какой версии верилога соответствуют исходники
  •  -Irtl — перечисляем инклюд-директории
  •  -D$(DEFINE) — передаем дефайны
  • -s tb — указываем имя топ-модуля
  • -o $(PROJECT).vvp — задаём путь и имя выходного файла

Запускаем моделирование (lxt2 — рекомендованный формат записи дампа, он прогрессивный и со сжатием):

Работа с дампом

Открываем записанный дамп в GTKwave:

gtkw — это формат txt-подобного конфига для GTKwave (SaveFile в терминах GTKwave), его первичный вид можно получить открыв дамп и настроив GTKwave по своему вкусу, а потом дав команду «Write Save File» из меню.

Пример открытого дампа с преднастроенным файлом gtkw:

GOST-R34.12-2015 L-stage

 

Пример файла gtkw:

Также GTKwave поддерживает tcl-подобные скрипты, но нормальных гайдов по нему не попадалось, а жаль — думаю там более вменяемый синтаксис (памятуя о tcl-скриптах для модельсима).

Читать далее

[PoM] Power-on-Module: питание мощных FPGA-потребителей на PCB

Задача

  1. Подбор All-in-One компактных DC/DC-преобразователей для обеспечения всех нужных питаний для нежирных ПЛИС. В большинстве из них сделан упор на компактность и минимальное вмешатесльтво в управление работой со стороны системы
  2. Подбор мощных DC/DC-преобразователей на несколько (десятков) ампер для запитки жирных ПЛИС и/или процессоров. Большинство из них проектировались специально для использования с сильножружими ПЛИС

 

Компакт класс (All-in-One)

Linear Technology

  • LTC3569 — отлично подойдёт для какого-нибудь середнячка типа Spartan-6: три DC/DC (1.2A и 2×600мA), высокая частота преобразования (до 3МГц —  можно индуктивности покомпактнее), входной диапазон: 2.5..5.5V (хочешь от USB питай, хочешь от LiIon)

(далее…)

Читать далее

[opensource]: Мои скрипты для EDA/CAE/CAD

Приведенное ниже — описание к коллекции моих EDA-скриптов для работы с тулами для ASIC и FPGA

Конвертор из UCF в XDC

Конвертирует для ПЛИС Xilinx привязки ножек и стандартов из формата ucf (Xilinx ISE) в новый формат xdc (Xilinx Vivado). Использование:

В текущей директории появится файл FILENAME.xdc.

Пример входного ucf-файла

Пример сгенеренного утилитой xdc-файла

(далее…)

Читать далее

Установка Lattice Diamond на линукс на примере CentOS 7

Дано

  • HW: 16GB RAM + 256GB SSD
  • CentOS 7
  • Lattice Diamond 3.8

 

Установка

Попытка номер 1:

Не тут-то было. Ок, устанавливаем зависимости:

(далее…)

Читать далее

Установка Lattice ICEcube на линукс на примере CentOS 7

ICEcube 2

Установка зависимостей

Установка

Ставим в

Файл настройки окружения (лицензия лежит в /soft/Lattice/license.dat):

Дополнительно могут потребоваться следующие шаги:

(далее…)

Читать далее

Установка Xilinx ISE на линукс на примере CentOS 7

Дано

  • HW: 16GB RAM + 256GB SSD
  • CentOS 7
  • ISE 14.7

Установка

  1. Отключаем SElinux
  2. Распаковываем:  tar -xf xxx.tar
  3. Ставим в /soft/Xilinx, запуская  ./xsetup

Драйвера

Настройка

(далее…)

Читать далее