в только што лет я узнал што есть супер кнопка в Tcl console в Vivado, которая группирует вывод stdout до выполняемых Tcl команд и процедур 😄
Please open Telegram to view this post
VIEW IN TELEGRAM
Отпускная телеграм детоксикация
Если будет известно што наш товарищ в отпуске и еще пишет по рабочим вопросам в чат, его ждет мьют до окончания его отпуска
.Миша, привет!
Хочу позвать спикеров на AiConf https://cfp.aiconf.ru/ выступить с докладом на тему около "железо + ML" (это может быть абсолютно любая тема, главное чтобы она совмещала две эти сущности).
Например: "как я запустил инференс модельки на FPGA/ASIC" или "как я оптимизировал обучение на CUDA".
Особенности:
1) конфа в Москве в сентябре
2) если спикеру нужен проезд по РФ и проживание — всё будет
3) доклад на 30-40 минут
4) можно оформить в формате панельной дискуссии / лекции / интерактива / демо и т.д.
Вдруг кто-то из FPGA-комьюнити или ты сам хочешь выступить.
Upd: подавать доклады тут — https://conf.ontico.ru/lectures/propose?conference=ai2025
Хочу позвать спикеров на AiConf https://cfp.aiconf.ru/ выступить с докладом на тему около "железо + ML" (это может быть абсолютно любая тема, главное чтобы она совмещала две эти сущности).
Например: "как я запустил инференс модельки на FPGA/ASIC" или "как я оптимизировал обучение на CUDA".
Особенности:
1) конфа в Москве в сентябре
2) если спикеру нужен проезд по РФ и проживание — всё будет
3) доклад на 30-40 минут
4) можно оформить в формате панельной дискуссии / лекции / интерактива / демо и т.д.
Вдруг кто-то из FPGA-комьюнити или ты сам хочешь выступить.
Upd: подавать доклады тут — https://conf.ontico.ru/lectures/propose?conference=ai2025
cfp.aiconf.ru
CFP Ai Conf 2025, 26 сентября
Ai Conf 2025/ CFP Speakers
Forwarded from Wolverine
Общая задача: перенос существующей логики с процессора на ПЛИС.
Конкретно на первое время:
1. Считывание изображения
Получить изображение через интерфейс MIPI-CSI.
2. Расчёт углов
Выполнить определение углов на полученном изображении с использованием метода Shi-Tomasi.
3. Отслеживание движения точек
Применить метод Лукаса-Канаде для отслеживания движения выбранных точек между двумя кадрами.
4. Вывод данных
Сохранить полученные координаты точек в указанной области памяти.
Задач в перспективе очень много по ПЛИСам)
Мы частная компания. Стараемся все делать in-house. Минимум бюрократии, работа на результат. Обеспечиваем всеми необходимыми продуктам и железкам для работы. Собираем вокруг себя таланливых самостоятельных специалистов. Условия обсуждаются индивидуально, своих ценим;)
Писать в тг @wolverus
Конкретно на первое время:
1. Считывание изображения
Получить изображение через интерфейс MIPI-CSI.
2. Расчёт углов
Выполнить определение углов на полученном изображении с использованием метода Shi-Tomasi.
3. Отслеживание движения точек
Применить метод Лукаса-Канаде для отслеживания движения выбранных точек между двумя кадрами.
4. Вывод данных
Сохранить полученные координаты точек в указанной области памяти.
Задач в перспективе очень много по ПЛИСам)
Мы частная компания. Стараемся все делать in-house. Минимум бюрократии, работа на результат. Обеспечиваем всеми необходимыми продуктам и железкам для работы. Собираем вокруг себя таланливых самостоятельных специалистов. Условия обсуждаются индивидуально, своих ценим;)
Писать в тг @wolverus
Практический пост
Доделал наконец-то скрипт на работе, все круто работает, но пора было собираться домой. Не стал делать коммит 🤦
В электричке пришла "отличная" идея и думаю дай-ка я сразу ее реализую. По итогу все сломалось. Хорошо контрол зетами смог откатиться до рабочего состояния. 🙈
Морали две:
1️⃣ Работает не трогай
2️⃣ Лучше сразу закомитить, а потом вносить правки.
У вас также ?
Доделал наконец-то скрипт на работе, все круто работает, но пора было собираться домой. Не стал делать коммит 🤦
В электричке пришла "отличная" идея и думаю дай-ка я сразу ее реализую. По итогу все сломалось. Хорошо контрол зетами смог откатиться до рабочего состояния. 🙈
Морали две:
1️⃣ Работает не трогай
2️⃣ Лучше сразу закомитить, а потом вносить правки.
У вас также ?
Forwarded from Eva
Please open Telegram to view this post
VIEW IN TELEGRAM
Новые горизонты опенсорсных плисовых тулов. Yosys замахнулся на 500 000 лутовые ПЛИСины
For all the details read our final report here: https://nebula.esa.int/4000141380
===
@fpgasystems_events
In collaboration with NanoXplore SAS and the European Space Agency - ESA we have created the first open-source toolchain for the NG-Ultra FPGA, a large and complex FPGA used in critical space applications.
Thanks to NanoXplore for collaborating with us, and to the European Space agency for funding the project.
For all the details read our final report here: https://nebula.esa.int/4000141380
===
@fpgasystems_events
Пятничный флешмоб от подписчика:
А как вы используете стикеры от любимого комьюнити? 😍
===
Отправлено через @fpgasystems_bot
А как вы используете стикеры от любимого комьюнити? 😍
===
Отправлено через @fpgasystems_bot
В команду вызова скриптов source нельзя передать аргументы, но есть workaround
Привет мои дорогие любители Tcl (будем надеяться, что такие есть )
Вы прекрасно знаете, что для запуска Tcl скрипта в Vivado (да и вообще везде) надо использоваться команду source.
Но, в команду source нельзя передать аргументы вызова. И это печально, потому что в таком случае ни о каком варианте автоматизации не может идти речи, если мы пытаемся сделать более-менее универсальное приложение или функционал.
Однако, существует несколько вариантов обойти такое ограничение. Давайте последовательно пройдемся от самых очевидных до "А че так можно было? (о_0)"
Если хочите повторить этот мини туториал, то создайте где-нибудь файл ni_xrena_sebe.tcl. Именно его мы будем вызывать с разным набором параметров
Открываете ваши консольки, мы начинаем.
1. Самым простым вариантом будет такой: это определить переменные до вызова скрипта. Переменные, которые мы определяем перед вызовом скрипта буду уже известны перед их вызовом в скрипте. Это очевидно. Например запишите в ni_xrena_sebe.tcl следующие строки
и далее в консольке мы устанавливаем эти переменные и затем вызовем скрипт
2. В Tcl, как и в остальных языках есть три столпа вызова: это arc, argv и argv0. Что они означают:
- argc - содержит информацию о количестве аргументов вызываемого скрипта
- argv - это передаваемые аргументы вызова (обычно список)
- argv0 - имя скрипта, который мы вызываем
Теперь все, что нам нужно, это перед вызовом ni_xrena_sebe.tcl проинициализировать эти три переменных. Давайте это сделаем
Для начала, давайте в самом скрипте просто сделаем вывод значений аргументов, но уже опираясь на argc и argv
Это обычный цикл, который выводит порядковый номер передаваемого аргумента и его значение.
Теперь определим сами переменные argc, argv и argv0
Ну и последний штрих - это вызвать arv0 через команду source
и вуаля, мы в консоли видим:
Будем честны, такой способ кажется несколько геморойным.
3. Этот вариант мне показался самым лаконичным и заключается он в использовании Tcl массивов (дада в Tcl есть массивы, хотя многомерная их версия это просто чудо)
Для начала, занесём в скрипт следующее содержимое:
Что он делает? да в целом просто выводит строку со значением элемента массива arguments. Создадим его
И дальше добавим (UPD: пример 3 не удачный, и в целом он эквивалентен пункту 1)
Ну и последний штрих
Вывод в консольке будет вот такой
В целом заменяя puts на set мы установим значения переменных.
Недостаток всех трех способов, может быть то, что надо как-то отлавливать значения аргументов, у которых есть значения по умолчанию. Пока видится, что это можно делать с помощью определения существования переменной как таковой. Но может быть есть и еще какой-то способ.
4. Ну и в заключении. Кажется, что в подавляющем большинстве случаев проще обернуть функционал в процедуру proc чем делать такие извращения :)
На этом у меня пока всё.
UPD: уже после написания поста я понял, што как-то неверное понял смысл пункта 3, потому што он эквивалентен пункту 1. Мы задали массив значений перед вызовом скрипта. Надо будет разобраться с нюансом такого вызова, или нет
===
#tcl #tcl_tips_n_tricks
===
@fpgasystems | boosty.to/fpgasystems
Привет мои дорогие любители Tcl (будем надеяться, что такие есть )
Вы прекрасно знаете, что для запуска Tcl скрипта в Vivado (да и вообще везде) надо использоваться команду source.
Но, в команду source нельзя передать аргументы вызова. И это печально, потому что в таком случае ни о каком варианте автоматизации не может идти речи, если мы пытаемся сделать более-менее универсальное приложение или функционал.
Однако, существует несколько вариантов обойти такое ограничение. Давайте последовательно пройдемся от самых очевидных до "А че так можно было? (о_0)"
Если хочите повторить этот мини туториал, то создайте где-нибудь файл ni_xrena_sebe.tcl. Именно его мы будем вызывать с разным набором параметров
Открываете ваши консольки, мы начинаем.
1. Самым простым вариантом будет такой: это определить переменные до вызова скрипта. Переменные, которые мы определяем перед вызовом скрипта буду уже известны перед их вызовом в скрипте. Это очевидно. Например запишите в ni_xrena_sebe.tcl следующие строки
puts "foo is $foo"
puts "bar is $bar"
puts "grill is $grill"
и далее в консольке мы устанавливаем эти переменные и затем вызовем скрипт
set foo 1
set bar 2
set grill 3
source ni_xrena_sebe.tcl
2. В Tcl, как и в остальных языках есть три столпа вызова: это arc, argv и argv0. Что они означают:
- argc - содержит информацию о количестве аргументов вызываемого скрипта
- argv - это передаваемые аргументы вызова (обычно список)
- argv0 - имя скрипта, который мы вызываем
Теперь все, что нам нужно, это перед вызовом ni_xrena_sebe.tcl проинициализировать эти три переменных. Давайте это сделаем
Для начала, давайте в самом скрипте просто сделаем вывод значений аргументов, но уже опираясь на argc и argv
if { $::argc > 0 } {
set i 1
foreach arg $::argv {
puts "argument $i is $arg"
incr i
}
} else {
puts "no command line argument passed"
}
Это обычный цикл, который выводит порядковый номер передаваемого аргумента и его значение.
Теперь определим сами переменные argc, argv и argv0
set argv [list "F P G A" Systems - "Support me on boosty"]
set argc [llength $argv]
set argv0 ni_xrena_sebe.tcl
Ну и последний штрих - это вызвать arv0 через команду source
source $argv0
и вуаля, мы в консоли видим:
argument 1 is F P G A
argument 2 is Systems
argument 3 is -
argument 4 is Support me on boosty
Будем честны, такой способ кажется несколько геморойным.
3. Этот вариант мне показался самым лаконичным и заключается он в использовании Tcl массивов (дада в Tcl есть массивы, хотя многомерная их версия это просто чудо)
Для начала, занесём в скрипт следующее содержимое:
puts "foo is $arguments(-foo)"
puts "bar is $arguments(-bar)"
puts "grill is $arguments(-grill)"
Что он делает? да в целом просто выводит строку со значением элемента массива arguments. Создадим его
array set arguments {-foo 0 -bar 0 -grill 0}
set argv0 ni_xrena_sebe.tcl
И дальше добавим (UPD: пример 3 не удачный, и в целом он эквивалентен пункту 1)
array set arguments $::argv
Ну и последний штрих
tcl
source $argv0
Вывод в консольке будет вот такой
foo is 0
bar is 0
grill is 0
В целом заменяя puts на set мы установим значения переменных.
Недостаток всех трех способов, может быть то, что надо как-то отлавливать значения аргументов, у которых есть значения по умолчанию. Пока видится, что это можно делать с помощью определения существования переменной как таковой. Но может быть есть и еще какой-то способ.
4. Ну и в заключении. Кажется, что в подавляющем большинстве случаев проще обернуть функционал в процедуру proc чем делать такие извращения :)
На этом у меня пока всё.
UPD: уже после написания поста я понял, што как-то неверное понял смысл пункта 3, потому што он эквивалентен пункту 1. Мы задали массив значений перед вызовом скрипта. Надо будет разобраться с нюансом такого вызова, или нет
===
#tcl #tcl_tips_n_tricks
===
@fpgasystems | boosty.to/fpgasystems
boosty.to
FPGA Systems - Информационно-образовательный портал про FPGA/ПЛИС
Привет! Меня зовут Михаил и я пытаюсь делать движ в FPGA комьюнити.
Forwarded from Pavel Mazhar
РФ, Москва, гибрид
З/П: 350 000 руб
«Бифорком Тек» компания-разработчик сетевого оборудования. Вам предстоит участвовать в разработке нового оборудования с использованием технологий SDN/IoT/4G/5G/6LoWPAN и решений в области передачи данных.
Что делать:
☑️ Разрабатывать блоки цифровой обработки сигналов и интерфейсы ПЛИС на Verilog
☑️ Создавать функциональные модели, тестовые сценарии и проводить автоматизированную верификацию
☑️ Интегрировать IP-блоки сторонних разработчиков
☑️ Проводить аппаратную отладку кода и работать с измерительным оборудованием
☑️ Участвовать в разработке архитектуры систем и протоколов взаимодействия
☑️ Разрабатывать ТЗ для смежных разработчиков
Чего ожидаем:
⚡️ Знания и опыт написания прошивок на языке Verilog/VHDL под CPLD/FPGA Lattice semiconductor/Xilinx
⚡️ Опыт работы с Lattice Diamond/Xilinx Vivado
⚡️ Навыки работы с периферией ПЛИС (внешняя память NOR, NAND, блоками SMBUS, I2C, SPI, MDIO, блоками SerDes, PCIe)
⚡️ Навыки отладки FPGA-проектов, тестирования с использованием режима Boundary Scan JTAG (TAP)
⚡️ Умение работать с современной измерительной аппаратурой (источники питания, мультиметры, осциллографы, логические анализаторы и др.)
Будет супер плюсом:
➕ Опыт работы с Embedded Linux (разработка драйверов)
Условия труда:
ИП, трудовые отношения
💰Достойная оплата труда
🏢 Гибридный график (офис в Москве 3–4 дня в неделю)
🤝 Работа в команде профессионалов с высокой инженерной культуройFPGA engineer
Если заинтересовала вакансия – пожалуйста, напишите, что ждёте от нового работодателя на старте?
Контакты: @mazhar_tqb
З/П: 350 000 руб
«Бифорком Тек» компания-разработчик сетевого оборудования. Вам предстоит участвовать в разработке нового оборудования с использованием технологий SDN/IoT/4G/5G/6LoWPAN и решений в области передачи данных.
Что делать:
☑️ Разрабатывать блоки цифровой обработки сигналов и интерфейсы ПЛИС на Verilog
☑️ Создавать функциональные модели, тестовые сценарии и проводить автоматизированную верификацию
☑️ Интегрировать IP-блоки сторонних разработчиков
☑️ Проводить аппаратную отладку кода и работать с измерительным оборудованием
☑️ Участвовать в разработке архитектуры систем и протоколов взаимодействия
☑️ Разрабатывать ТЗ для смежных разработчиков
Чего ожидаем:
⚡️ Знания и опыт написания прошивок на языке Verilog/VHDL под CPLD/FPGA Lattice semiconductor/Xilinx
⚡️ Опыт работы с Lattice Diamond/Xilinx Vivado
⚡️ Навыки работы с периферией ПЛИС (внешняя память NOR, NAND, блоками SMBUS, I2C, SPI, MDIO, блоками SerDes, PCIe)
⚡️ Навыки отладки FPGA-проектов, тестирования с использованием режима Boundary Scan JTAG (TAP)
⚡️ Умение работать с современной измерительной аппаратурой (источники питания, мультиметры, осциллографы, логические анализаторы и др.)
Будет супер плюсом:
➕ Опыт работы с Embedded Linux (разработка драйверов)
Условия труда:
ИП, трудовые отношения
💰Достойная оплата труда
🏢 Гибридный график (офис в Москве 3–4 дня в неделю)
🤝 Работа в команде профессионалов с высокой инженерной культуройFPGA engineer
Если заинтересовала вакансия – пожалуйста, напишите, что ждёте от нового работодателя на старте?
Контакты: @mazhar_tqb
Telegram
Pavel Mazhar
My major expertise: - Developers (Java, JS, PHP, С#, Python) - Project Team (PM, Analyst) - Other (QA, DevOps, etc.)
Please open Telegram to view this post
VIEW IN TELEGRAM
Контент, который в последнее время выходит на канале вы считаете
Anonymous Poll
76%
Полезным
9%
Бесполезным
28%
Надо бы разбавить чем-то еще
0%
Напишу в комментарии под эти постом
FPGA-Systems Events pinned «Контент, который в последнее время выходит на канале вы считаете»
Знаете ли вы о существовании мега полезной стандартной команды в Tcl, которая называется history?
Anonymous Poll
11%
Да
40%
Нет
56%
Да откуда блин ты это берешь ?
Forwarded from Dmitry Smekhov
Вот хочу поделиться проектом - имитатор SVGA монитора. Подключается через разделяемую память к симулятору Vivado
https://github.com/dsmv/svga_imitator
https://github.com/dsmv/svga_imitator
Forwarded from Dmitry Smekhov
FPGA-Systems Events
Вот хочу поделиться проектом - имитатор SVGA монитора. Подключается через разделяемую память к симулятору Vivado https://github.com/dsmv/svga_imitator
Вот так выглядит: