позитивслэк – Telegram
позитивслэк
844 subscribers
129 photos
41 files
191 links
ASIC, FPGA, SystemVerilog, UVM. Цифровой дизайн, программирование, духота и мемы. С уклоном в верификаторство.

https://news.1rj.ru/str/boost/positiveslack
Download Telegram
Обфускация Verilog/SystemVerilog кода

Если кто не в теме, то это замена всех имен в коде на абракадабру и снос всего форматирования (опционально). Используется при передаче кода третьим лицам как "мягкая" замена шифрованию. Код вроде как открыт, но чтобы разобраться в нём нужно попотеть, особенно если это какой-нибудь нетлист без иерархии на много мегабайт. Защита от честных людей по большому счёту)

Так вот. Раньше пробовал Verilog-Perl - там есть утилита vrename. Работает, но оооочень уж медленно. Чтобы обфусцировать условный нетлист с ~1М уникальных имён уходят не одни сутки (однако, я шибко не профилировал где затык).

Тут выше постил про Verible (как форматтер кода от Google). У них оказывается в комплекте есть ещё утлита для обфускации - verible-verilog-obfuscate.

Работает гораздо лучше. На тот же самый нетлист на ~1М имён уходит минут десять. Правда в процессе потребление памяти 10-14ГБ, но это мелочи.

Ну и небольшой gist по результатам, чтобы не забыть как делал.

#verilog #system_veriog #obfuscation
Заставляем худеть Vivado/Quartus с помощью жёстких ссылок

https://www.reddit.com/r/FPGA/comments/ellcrr/psa_deduplicate_your_vivadoquartusiseetc_installs/

Папка с кучей версий софта от Xilinx до:


$ sudo du -hcs /opt/Xilinx/*
21G /opt/Xilinx/14.7
619M /opt/Xilinx/DocNav
255M /opt/Xilinx/Model_Composer
82G /opt/Xilinx/SDK
28G /opt/Xilinx/Vitis
342G /opt/Xilinx/Vivado
7.7G /opt/Xilinx/Vivado_HLS
643M /opt/Xilinx/xic
479G total


Делаем:


rdfind -dryrun false -makehardlinks true /opt/Xilinx/


Она же после:


$ sudo du -hcs /opt/Xilinx/*
18G /opt/Xilinx/14.7
615M /opt/Xilinx/DocNav
192M /opt/Xilinx/Model_Composer
44G /opt/Xilinx/SDK
25G /opt/Xilinx/Vitis
133G /opt/Xilinx/Vivado
1.2G /opt/Xilinx/Vivado_HLS
30M /opt/Xilinx/xic
220G total


Итого: -260Гб за счёт избавления от дубликатов!

#vivado #quartus
Аппаратные SPI и I2C в Lattice ICE40 UltraPlus

Довольно полезный тред по нюансам использования аппаратных SPI и I2C в ICE40UP.
https://github.com/YosysHQ/icestorm/issues/174


Если коротко, то SPI можно относительно легко поднять (есть рабочие примеры), а вот с I2C ситуация "оставь надежду всяк сюда входящий":

this block is pretty horrible and fussy, and you should use an RTL IP block if you can. But if you're out of gates -- you're out of gates, and I hope these notes can help you.

#fpga #lattice #spi #i2c #yosys
SystemVerilog цикл foreach: индексы

Банальность, на которую можно легко нарваться, и которая сходу не так очевидна.

Если размерность массива задана числом (только для неупакованных), то перебор индексов будет идти от 0:

logic a [3];
foreach (a[i]) $display(i);
---
0
1
2

Однако, если любая из размерностей задана диапазоном [msb:lsb], то перебор индексов будет идти от msb к lsb, и никак иначе.

Для неупакованных:

logic b [0:2];
foreach (b[i]) $display(i);
---
0
1
2
---

logic c [2:0];
foreach (c[i]) $display(i);
---
2
1
0


Ну и для упакованных и векторов:

logic [2:0] d;
foreach (d[i]) $display(i);
---
2
1
0

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

logic [7:0][31:0] a [15:0][4];
foreach(a[i, j, k, n]) ...

Получится 4 вложенных цикла, где будут индексы (от внешнего цикла к внутреннему):

i - 15 ... 0
j - 0 ... 3
k - 7 ... 0
n - 31 ... 0


#system_veriog
Electronics etc...

Классный блог от инженера Nvidia
https://tomverbeure.github.io/

Мужик играется со всякими прикольными штуками и пишет посты об этом. Из интересного: PDM микрофоны и CIC/FIR фильтры, RISC V, SpinalHDL, Yosys, формальная верификация и куча другого.

#fpga #blog
ADALM2000

Узнал тут о такой прикольной штуке от Analog Devices. По сути, компактная измерительная лаборатория на usb шнурке, затыкающая за пояс всю low-end измериловку с Али.

https://wiki.analog.com/university/tools/m2k

Позиционируется как железо, с помощью которого можно учить людей электронике. Даже лабы есть:

https://wiki.analog.com/university/courses/electronics/labs

Самое крутое, что открыто буквально ВСЁ: схемотехника, исходники линукса, который крутится внутри, исходники софта на пк. Там внутри Zynq-7010, а значит, что можно рассматривать эту плату и как отладку ARM+FPGA с аналоговым фронтэндом, что тоже может быть интересно в определенных ситуациях.

Цена: $150 за океаном, и $250 у дистрибьюторов в РФ.

Ну и основные фичи из коробки:

* Two-channel oscilloscope with differential inputs
* Two-channel arbitrary function generator
* 16-channel digital logic analyzer (3.3V CMOS and 1.8V or 5V tolerant, 100MS/s)
* 16-channel pattern generator (3.3V CMOS, 100MS/s)
* 16-channel virtual digital I/O
* Two input/output digital trigger signals for linking multiple instruments (3.3V CMOS)
* Two-channel voltmeter (AC, DC, ±25V)
* Network analyzer – Bode, Nyquist, Nichols transfer diagrams of a circuit. Range: 1Hz to 10MHz
* Spectrum Analyzer – power spectrum and spectral measurements (noise floor, SFDR, SNR, THD, etc.)
* Digital Bus Analyzers (SPI, I²C, UART, Parallel)
* Two programmable power supplies (0…+5V , 0…-5V)

#logic_analyzer #oscilloscope #lab
Блог positive slack

esynr3z.github.io

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

* в качестве хоста Github Pages (сайт - это репозиторий)
* Jekyll чтобы сгенерировать статичный сайт с постами из маркдаун файлов
* комменты с помощью utterances - использует issues репозитория для хранения комментов
* GoatCounter легкая и открытая privacy-friendly аналитика, чтобы смотреть просмотры и другие статы

Т.е. в итоге и блог, и комменты хранятся в репозитории на гитхабе, остаётся лишь писать посты в маркдауне и коммитить.

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

#blog
Modelsim и самовольное открытие файлов во время симуляции

Эта штука оказывается раздражает не только меня - когда модельсим останавливается по $stop/$finish и открывает исходник, где эта команда была. А так как, это чаще всего файл тестбенча, который активно правится, то он ещё и каждый раз любезно спрашивает что делать после того как этот открытый файл был изменён.

Отключить можно в
Tools -> Edit Preferences... -> By name -> Source -> OpenOn*

#modelsim #tips_and_tricks
Mikroe Fusion for ARM v8

Отладочная плата как искусство.

https://www.mikroe.com/fusion-for-arm

Источник:
https://news.1rj.ru/str/something_interesting_in_EE/61

#arm #devboard #pcbart #aesthetic
fpx: easy USB‑C power for all your devices

https://fpx.oxplot.com/

Маленькая платка с USB Type-C и PowerDelivery триггером.

Подключаешь к заряднику с PD - получаешь на выходе: 5В, 9В, 12В, 15В, 20В, в зависимости от конфигурации и параметров зарядника. Как бы ничего такого - таких триггеров на Али вагон, но прикольный способ конфигурации. Связь через фотоэлемент на плате и область на сайте, которая моргает в соответствии с передаваемыми битиками. Можно настроить напряжение и ток с любого устройства с экраном и браузером.

#usb #usb_pd
LCD Wiki

Смотрел тут дисплейчики на али, и в описании к одному лоту увидел такой сайт:

http://www.lcdwiki.com

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

#lcd #display
UPduino V3

* Lattice UltraPlus ICE40UP5K FPGA with 5.3K LUTs, 1Mb SPRAM, 120Kb DPRAM, 8 Multipliers
* FTDI FT232H USB to SPI Device
* ALL 32 FPGA GPIO on 0.1” headers
* 4MB SPI Flash
* RGB LED

Tindie, Github

Чудна логистика во время короновируса. Купил одну плату в начале января - заявлена доставка в 4-6 недель. К концу с 7-ой недели написал продавцу мол не пришло (отправка без трека), он предложил отправить ещё раз. В итоге, в 10-ю неделю приходит повторно отправленая плата, а затем на 12-ой её догоняет первая.
¯\_(ツ)_/¯

#devboard #lattice #fpga
EE-269.pdf
447.6 KB
EE-269 - A Beginner’s Guide to Ethernet 802.3

Обзорный материал от Analog Devices. Кмк, неплохая отправная точка чтобы начать изучать Ethernet и хоть немножко сориентироваться во всех этих страшных аббревиатурах слоев и протоколов.

#ethernet
Gigabit Ethernet 101: Basics to Implementation

И ещё про эзернет в стиле "from zero to hero". Теперь про гигабитный. От общего описания к конкретным практическим советам по трассировке платы с phy.

Статья:
https://resources.altium.com/p/gigabit-ethernet-101-basics-implementation

Пример дизайна:
https://github.com/issus/Gigabit-Ethernet

#ethernet #pcb