Недавно в GTKWave закоммитили интересный пуллреквест. Он выносит часть функционала в библиотеку libgtkwave и добавляет начальную поддержку плагинов. Т.е. теперь в GTKWave будут не только фильтры, но и полноценный доступ к внутреннему API программы. В качестве примера автор сделал небольшой плагин с консолью на Питоне. Посмотрите, там видосик есть.
GitHub
GitHub - gtkwave/gtkwave: GTKWave is a fully featured GTK+ based wave viewer for Unix and Win32 which reads LXT, LXT2, VZT, FST…
GTKWave is a fully featured GTK+ based wave viewer for Unix and Win32 which reads LXT, LXT2, VZT, FST, and GHW files as well as standard Verilog VCD/EVCD files and allows their viewing. - gtkwave/g...
👍4🔥4❤1
На днях вышел новый релиз симулятора электронных схем Qucs-S 2.1.0.
Вот пара новых фич:
- Добавлено моделирование в режиме тюнера (см. скриншот), который позволяет подстраивать номиналы компонентов ползунками и смотреть результат на графиках. Аналогичный инструмент имеется, например, в AWR;
- Для Ngspice добавлена поддержка компонентов, задаваемых в частотной области при помощи файлов s2p (требуется Ngspice-41).
Подробности смотрите по ссылке выше.
Вот пара новых фич:
- Добавлено моделирование в режиме тюнера (см. скриншот), который позволяет подстраивать номиналы компонентов ползунками и смотреть результат на графиках. Аналогичный инструмент имеется, например, в AWR;
- Для Ngspice добавлена поддержка компонентов, задаваемых в частотной области при помощи файлов s2p (требуется Ngspice-41).
Подробности смотрите по ссылке выше.
🔥11❤2
Чтоб оживить канал, напомню о своей статейке про формальную верификацию открытыми тулами.
FPGA-Systems.ru
Формальная верификация с SymbiYosys
В статье кратко рассказано, что такое формальная верификация и для чего она нужна, а так же приведен простой пример верификации маленько
🔥9❤2
Forwarded from FPGA-Systems Events (Michael Korobkov)
===
Народное творчество - первый журнал о программируемой логике
доступен к скачиванию. На странице журнала появилась заветная кнопка "Скачать | Download"
===
Пожалуйста, не распространяйте журнал как pdf, кидайте ссылку на страницу журнала https://fpga-systems.ru/fsm. Очень важна статистика скачиваний, надеюсь вы меня понимаете 😊
===
Народное творчество - первый журнал о программируемой логике
FPGA-Systems Magazine :: FSM :: № ALFA
доступен к скачиванию. На странице журнала появилась заветная кнопка "Скачать | Download"
===
Пожалуйста, не распространяйте журнал как pdf, кидайте ссылку на страницу журнала https://fpga-systems.ru/fsm. Очень важна статистика скачиваний, надеюсь вы меня понимаете 😊
===
🔥10
Если кто-то потерял меня в чате, я ушел на цифровой детокс. На недельку, а там посмотрим. Если что, пишите сюда :)
👍4❤1
Рубрика "А что, так можно было?".
У верилятора есть опция —unused-regexp, которой можно задать шаблон имени неиспользуемых сигналов. По-умолчанию это *unused*. Т.е. если у вас в коде есть неиспользуемый сигнал с именем, включающем unused, то верилятор на него ругаться не будет, и не нужно будет вставлять lint_off UNUSEDSIGNAL.
У верилятора есть опция —unused-regexp, которой можно задать шаблон имени неиспользуемых сигналов. По-умолчанию это *unused*. Т.е. если у вас в коде есть неиспользуемый сигнал с именем, включающем unused, то верилятор на него ругаться не будет, и не нужно будет вставлять lint_off UNUSEDSIGNAL.
👍9
В Yosys есть интересная фича, которой, похоже, нет в других синтезаторах - возможность вызова функций DPI для установки параметров и инициализации регистров.
Для этого достаточно подключить библиотеку .so командой plugin:
А затем импортировать функцию в код на SV и вызвать:
Т.к. библиотека подгружается один раз при старте yosys, можно использовать статические и глобальные переменные для сохранения контекста.
Фича может быть весьма полезной. Например, в ЦОСе часто нужно предвычислять всякие коэффициенты. Использовать для этого генерируемые внешними скриптами таблицы не очень прикольно, т.к. теряется возможность параметризации модуля. Рассчитывать силами SV тоже не сильно здорово, потому что обычно это работает медленно и синтезатор поддерживает далеко не все возможности языка (в Yosys, например, очень сложно полноценно использовать real - можно вычислять выражения с плавающей точкой, но нельзя создавать переменные).
А через DPI можно вызвать не только Си-функции, но и например Python (sic!), или мою любимую Scheme. Они достаточно просто эмбеддятся в Си.
Есть и ограничения:
1. Поддерживаются только типы integer, real, shortreal и chandle. Жаль, что нельзя передавать строки, но если очень хочется, то можно воспользоваться костылём - передавать до 8 символов через аргумент типа chandle. Это указатель, и на 64-разрядных машинах его длина 8 байт.
2. В качестве аргументов подходит не всё. Например, можно передать итератор цикла во время инициализации памяти (
3. Нельзя вызвать функцию, которая возвращает void, yosys почему-то путает этот вызов с вызовом таска и ругается, что такого таска нет. Если всё же нужно вызвать такую функцию, то нужно вызвать её с присвоением возврата чему нибудь - переменной в initial, или неиспользуемому параметру. Запостил issue по этому поводу (Под номером 4096 😊).
В качестве примера написал небольшой тестовый код.
Для этого достаточно подключить библиотеку .so командой plugin:
plugin -i my_lib.so
А затем импортировать функцию в код на SV и вызвать:
import "DPI-C" function integer my_func (integer);
localparam PARAM1 = my_func(PARAM0);
Т.к. библиотека подгружается один раз при старте yosys, можно использовать статические и глобальные переменные для сохранения контекста.
Фича может быть весьма полезной. Например, в ЦОСе часто нужно предвычислять всякие коэффициенты. Использовать для этого генерируемые внешними скриптами таблицы не очень прикольно, т.к. теряется возможность параметризации модуля. Рассчитывать силами SV тоже не сильно здорово, потому что обычно это работает медленно и синтезатор поддерживает далеко не все возможности языка (в Yosys, например, очень сложно полноценно использовать real - можно вычислять выражения с плавающей точкой, но нельзя создавать переменные).
А через DPI можно вызвать не только Си-функции, но и например Python (sic!), или мою любимую Scheme. Они достаточно просто эмбеддятся в Си.
Есть и ограничения:
1. Поддерживаются только типы integer, real, shortreal и chandle. Жаль, что нельзя передавать строки, но если очень хочется, то можно воспользоваться костылём - передавать до 8 символов через аргумент типа chandle. Это указатель, и на 64-разрядных машинах его длина 8 байт.
2. В качестве аргументов подходит не всё. Например, можно передать итератор цикла во время инициализации памяти (
mem[n] = init_func(n)), но нельзя передать саму инициализируемую переменную (some_func(mem[n])), ругается на нестатический аргумент.3. Нельзя вызвать функцию, которая возвращает void, yosys почему-то путает этот вызов с вызовом таска и ругается, что такого таска нет. Если всё же нужно вызвать такую функцию, то нужно вызвать её с присвоением возврата чему нибудь - переменной в initial, или неиспользуемому параметру. Запостил issue по этому поводу (Под номером 4096 😊).
В качестве примера написал небольшой тестовый код.
Gist
Yosys DPI
Yosys DPI. GitHub Gist: instantly share code, notes, and snippets.
🔥10❤1
По поводу соблюдения стандартов. Не первый раз замечаю, что iverilog строже следует стандартам, чем другие симуляторы. Вот ещё один пример - присвоение значения enum'у.
Вот такой код не проходит компиляцию в iverilog, тогда как verilator и modelsim/questa не выдают ни ошибок ни предупреждений:
Ошибка состоит в том, что переменной
Есть два очевидных пути исправления:
1. Использовать
2. Явно привести тип тернарного выражения к
Менее очевидное решение - использовать тип
А вот с верилятором "не всё так однозначно" - у него же в принципе нет иксов, по этому стандарт он как бы и не нарушает вовсе :)
Вот такой код не проходит компиляцию в iverilog, тогда как verilator и modelsim/questa не выдают ни ошибок ни предупреждений:
typedef enum {
ST_ONE,
ST_ZERO
} state_t;
state_t state;
logic a;
always_comb
state = a ? ST_ONE : ST_ZERO;Ошибка состоит в том, что переменной
state потенциально может быть присвоено значение X, потому что тернарный оператор "пропускает" иксы из условия на выход (такое поведение называется X-pessimism). Но иксы не являются допустимым значением для типа state_t. Согласно стандарту (раздел 6.19.3) такая ситуация является ошибкой.Есть два очевидных пути исправления:
1. Использовать
if/else, т.к. это X-оптимистичный оператор2. Явно привести тип тернарного выражения к
state_tМенее очевидное решение - использовать тип
bit для сигнала a. Этот тип не может принимать неопределенного значения, по этому и нарушений при присвоении перечислению не будет.А вот с верилятором "не всё так однозначно" - у него же в принципе нет иксов, по этому стандарт он как бы и не нарушает вовсе :)
GitHub
GitHub - steveicarus/iverilog: Icarus Verilog
Icarus Verilog. Contribute to steveicarus/iverilog development by creating an account on GitHub.
🤔2
Оказывается несколько лет назад кто-то даже открыл issue на этот счёт и попутно предложил использовать case equality (===). Это, наверное, самое правильное решение, т.к. по стандарту этот оператор всегда возвращает 0 или 1, никаких иксов.
GitHub
conditional operator with enum's require explicit cast · Issue #280 · steveicarus/iverilog
The following code does not compile in iverilog. I believe this is valid systemVerilog code. At least one commercial tool accepts this happily. iverilog seems to be unhappy about the datatype and w...
Forwarded from Академия программирования электронных устройств
Друзья, уже всего через несколько дней - 11 марта, состоится запуск курсов!
✅«Практические навыки работы инженер-радиоэлектронщика» (схемотехника и трассировка печатных плат)
✅«Программирование микроконтроллеров»
✅«Основы проектирования устройств на базе ПЛИС»
✅«Практические навыки трассировки печатных плат»
✅«Программирование микроконтроллеров с использованием ОСРВ FreeRTOS»
✅«ПЛИС внутрисхемная отладка и оптимизация»
Сейчас самое время записаться на курс, т.к. набор уже почти завершен!
Чтобы узнать цену и записаться на курс, оставляйте заявку на сайте: записаться на обучение
✅«Практические навыки работы инженер-радиоэлектронщика» (схемотехника и трассировка печатных плат)
✅«Программирование микроконтроллеров»
✅«Основы проектирования устройств на базе ПЛИС»
✅«Практические навыки трассировки печатных плат»
✅«Программирование микроконтроллеров с использованием ОСРВ FreeRTOS»
✅«ПЛИС внутрисхемная отладка и оптимизация»
Сейчас самое время записаться на курс, т.к. набор уже почти завершен!
Чтобы узнать цену и записаться на курс, оставляйте заявку на сайте: записаться на обучение
🔥3💩2🤮1🖕1🤓1
Forwarded from позитивслэк (Bogdan)
1800-2023 - IEEE Standard for SystemVerilog
SV-2023 in da house! На этой неделе на DVCon 2024 презентовали новый стандарт.
Дейв отписался в блоге Siemens, что он свободно доступен через IEEE Get Program. Однако, нужна регистрация чтобы его скачать. Товарищи, может кто-то сможет помочь?
#system_verilog
@positiveslack
SV-2023 in da house! На этой неделе на DVCon 2024 презентовали новый стандарт.
Дейв отписался в блоге Siemens, что он свободно доступен через IEEE Get Program. Однако, нужна регистрация чтобы его скачать. Товарищи, может кто-то сможет помочь?
#system_verilog
@positiveslack
IEEE-1800-2023.pdf
9 MB
Условно-бесплатная копия стандарта SystemVerilog 2023. Без палева вотермарков.
👍7🔥3❤1
TANG_MEGA-138K-Pro_4072_Schematics.pdf
1.9 MB
Пост для опенсорс-скептиков. В приложении пример использования опенсорса (KiCAD) в коммерческой разработке. Конечно, устройство несложное, но тем не менеее.
❤🔥4🔥1🤮1💩1🖕1
mandelbrot.gif
1.8 MB
Ещё одна интересная реализация RISC-V. На этот раз разработчик задался целью сделать среднее между небезызвестным SERV и ядром обычной параллельной природы. Степень сериализации выбирается параметром, что даёт возможность гибко настраивать отношение площади к производительности.
На гифке нагладное сравнение скорости работы ядра при разных значениях параметра.
Разница в ресурсах между самым быстрым и самым медленным вариантом примерно два раза.
На гифке нагладное сравнение скорости работы ядра при разных значениях параметра.
Разница в ресурсах между самым быстрым и самым медленным вариантом примерно два раза.
👍6🤮1💩1🖕1
Forwarded from Записки CPU designer'a (Николай)
ESP the open-source SoC platform
ESP - это открытая платформа для проектирования и создания гетерогенных System on a chip c возможностью прототипирования системы на FPGA. В будущем планируется также поддержка ASIC design flow.
ESP предоставляет гибкую tile-based архитектуру, построенную на multi-plane network-on-chip
Обзор проекта представлен авторами в статье Agile SoC Development with Open ESP.
В проекте вы найдете знакомые многим RISC-V энтузиастам названия открытых процессорных IP: Ariane (CVA6), ibex, LEON3 (на базе SPARC V8 32-bits ISA). Но самые внимательные увидят на изображении floorplan'а чипа в заголовке поста NVDLA —opensource Deep Learning Accelerator от Nvidia.
Как мы видим, ESP может служить платформой для интеграции сторонних IP-блоков, который может быть размещен на любом из тайлов ESP платформы.
Судя по домашней странице проекта, вся система спроектирована при помощи языка конструирования аппаратуры Chisel и High-Level Synthesis инструментов.
Исходники на HDL, доступные в репозитории проекта, либо относятся к сторонним IP-ядрам/ускорителям, либо созданы с использованием инструментов SoCGen и SocketGen.
Ссылки на проект ESP:
1) github репозиторий
2) сайт проекта
3) документация и туториалы
4) коллекция научных публикаций по тематике проекта ESP
p.s. если кто-то поймет что за Night Vision в правом нижнем углу флурплана чипа - отпишите в комментарии🤔
ESP - это открытая платформа для проектирования и создания гетерогенных System on a chip c возможностью прототипирования системы на FPGA. В будущем планируется также поддержка ASIC design flow.
ESP предоставляет гибкую tile-based архитектуру, построенную на multi-plane network-on-chip
Обзор проекта представлен авторами в статье Agile SoC Development with Open ESP.
В проекте вы найдете знакомые многим RISC-V энтузиастам названия открытых процессорных IP: Ariane (CVA6), ibex, LEON3 (на базе SPARC V8 32-bits ISA). Но самые внимательные увидят на изображении floorplan'а чипа в заголовке поста NVDLA —opensource Deep Learning Accelerator от Nvidia.
Как мы видим, ESP может служить платформой для интеграции сторонних IP-блоков, который может быть размещен на любом из тайлов ESP платформы.
Судя по домашней странице проекта, вся система спроектирована при помощи языка конструирования аппаратуры Chisel и High-Level Synthesis инструментов.
Исходники на HDL, доступные в репозитории проекта, либо относятся к сторонним IP-ядрам/ускорителям, либо созданы с использованием инструментов SoCGen и SocketGen.
Ссылки на проект ESP:
1) github репозиторий
2) сайт проекта
3) документация и туториалы
4) коллекция научных публикаций по тематике проекта ESP
p.s. если кто-то поймет что за Night Vision в правом нижнем углу флурплана чипа - отпишите в комментарии
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮1💩1🖕1
Не стесняемся, заказываем 😎
Please open Telegram to view this post
VIEW IN TELEGRAM