Telegram Group & Telegram Channel
Немного поигравшись с Veryl пишу отзыв. Если кратко: потенциал есть, но пока не готов.

Не буду лить воду, пойду по фактам. Плюсы языка:

➡️Полярность сброса и клока можно выбрать при сборке. Очень полезная фича, но есть некоторые проблемы с передачей этих знаний в подключаемые модули на верилоге. Есть автоматическая инверсия сброса, если в вериложном модуле сброс не той полярности. Но пока нет инверсии клока и никак не передать информацию о типе сброса - синхронный он или асинхронный.
➡️Фигурные скобки в качестве операторных скобок конечно выглядят гораздо приятней многословных begin/end и module/endmodule.
➡️Нет разделения на блокирующее и неблокирующее присваивание. Язык предназначен для написания только синтезируемого кода, по этому синхронные присваивания - неблокирующие, асинхронные - блокирующие.
➡️if/else как выражение (expression). Как бы реверанс в сторону функциональных языков, но по сути синтаксический сахар над тернарным оператором.
➡️Дженерики! Наконец-то шаг в сторону метапрограммирования. Шаг скромный, но в верилоге этого очень не хватает.
➡️Есть поддержка аннотации CDC. Если вдруг вы небезопасно передаёте данные из домена в домен, транслятор даст вам по рукам.
➡️Какая-никакая стандартная библиотека с FIFO и некоторыми полезными модулями (кое кто из чата FPGA Systemc был бы очень рад).

Теперь минусы:

➡️Нет приведения ширины. Есть приведение к типу, и как бы можно объявить новый тип с нужной шириной и к нему приводить. Но это лишняя писанина, и результирующий верилог не поддерживается парсером Yosys'а. Такая вот шляпа.
➡️В конструкции вида a = {b, '1} единица не расширяется до размера a, и код в неизменном виде попадает в верилог. Т.е. это ошибка и в верилоге и в вериле, что несколько расстраивает. Выражение как бы очевидное, но авторы решили сохранить совместимость с верилогом. А ещё линтер на это не ругается (а Верилятор ругается).
➡️Нельзя объявить несколько переменных одного типа с одной декларации. Для каждой переменной надо писать var бла_бла: тип;.
➡️Невозможно задать начальное значение регистру или памяти. ROM в принципе можно описать в виде const (которое транслируется в localparam), но RAM только через readmem. Авторы говорят, что для асиков это не нужно, а проблемы плисоводов их не волнуют. Конструкция initial поддерживает только вывод сообщений.

По инфраструктуре. В отличие от верилога, у которого только стандарт, Veryl "из коробки" имеет форматтер, линтер и language server. Это очень удобно. Например, на добавление полноценной поддержки языка с в Emacs у меня ушли сутки. А это форматирование с отступами, подсветка синтаксиса, подсветка ошибок в реальном времени, автодополнение, хождение по коду и попапы.

Кроме перечисленного, в комплекте с транслятором есть система документирования с поддержкой markdown и wavedrom, система юнит-тестирования с интегрированными тестбенчами на верилоге, и система сборки, которая умеет подгружать зависимости.

Есть и недостатки:

➡️Нет настроек форматирования, есть только настройка длины таба.
➡️У линтера есть только настройки стиля, языковых настроек нет. Например, нет предупреждения о неявном приведении ширины.
➡️При касте сброса транслятор может менять имя сигнала, добавляя к нему префикс или суффикс (настраиваемо). При этом он это делает и для портов вериложных модулей. По этому, если включена эта опция, при имплементации вериложного модуля к именам портов клока и сброса надо прибавлять префикс r#. Но это скорее ошибка, которую нужно исправлять.
➡️Часто неправильно указывает положение ошибки, особенно если забыли или лишняя точка с запятой.

В общем, впечатления от языка двойственные. С одной стороны линтер, language server и дженерики. С другой - ощущение, что пишешь на верилоге с новым синтаксисом и старыми проблемами. А зачем мне старые проблемы? Мне нужны новые 😄

PS: Дописывая пост заглянул в репозиторий. Две недели назад вышла новая версия, в которой добавили приведение ширины. Вот так может и допишут до продакшена.
Please open Telegram to view this post
VIEW IN TELEGRAM



group-telegram.com/enginegger/101
Create:
Last Update:

Немного поигравшись с Veryl пишу отзыв. Если кратко: потенциал есть, но пока не готов.

Не буду лить воду, пойду по фактам. Плюсы языка:

➡️Полярность сброса и клока можно выбрать при сборке. Очень полезная фича, но есть некоторые проблемы с передачей этих знаний в подключаемые модули на верилоге. Есть автоматическая инверсия сброса, если в вериложном модуле сброс не той полярности. Но пока нет инверсии клока и никак не передать информацию о типе сброса - синхронный он или асинхронный.
➡️Фигурные скобки в качестве операторных скобок конечно выглядят гораздо приятней многословных begin/end и module/endmodule.
➡️Нет разделения на блокирующее и неблокирующее присваивание. Язык предназначен для написания только синтезируемого кода, по этому синхронные присваивания - неблокирующие, асинхронные - блокирующие.
➡️if/else как выражение (expression). Как бы реверанс в сторону функциональных языков, но по сути синтаксический сахар над тернарным оператором.
➡️Дженерики! Наконец-то шаг в сторону метапрограммирования. Шаг скромный, но в верилоге этого очень не хватает.
➡️Есть поддержка аннотации CDC. Если вдруг вы небезопасно передаёте данные из домена в домен, транслятор даст вам по рукам.
➡️Какая-никакая стандартная библиотека с FIFO и некоторыми полезными модулями (кое кто из чата FPGA Systemc был бы очень рад).

Теперь минусы:

➡️Нет приведения ширины. Есть приведение к типу, и как бы можно объявить новый тип с нужной шириной и к нему приводить. Но это лишняя писанина, и результирующий верилог не поддерживается парсером Yosys'а. Такая вот шляпа.
➡️В конструкции вида a = {b, '1} единица не расширяется до размера a, и код в неизменном виде попадает в верилог. Т.е. это ошибка и в верилоге и в вериле, что несколько расстраивает. Выражение как бы очевидное, но авторы решили сохранить совместимость с верилогом. А ещё линтер на это не ругается (а Верилятор ругается).
➡️Нельзя объявить несколько переменных одного типа с одной декларации. Для каждой переменной надо писать var бла_бла: тип;.
➡️Невозможно задать начальное значение регистру или памяти. ROM в принципе можно описать в виде const (которое транслируется в localparam), но RAM только через readmem. Авторы говорят, что для асиков это не нужно, а проблемы плисоводов их не волнуют. Конструкция initial поддерживает только вывод сообщений.

По инфраструктуре. В отличие от верилога, у которого только стандарт, Veryl "из коробки" имеет форматтер, линтер и language server. Это очень удобно. Например, на добавление полноценной поддержки языка с в Emacs у меня ушли сутки. А это форматирование с отступами, подсветка синтаксиса, подсветка ошибок в реальном времени, автодополнение, хождение по коду и попапы.

Кроме перечисленного, в комплекте с транслятором есть система документирования с поддержкой markdown и wavedrom, система юнит-тестирования с интегрированными тестбенчами на верилоге, и система сборки, которая умеет подгружать зависимости.

Есть и недостатки:

➡️Нет настроек форматирования, есть только настройка длины таба.
➡️У линтера есть только настройки стиля, языковых настроек нет. Например, нет предупреждения о неявном приведении ширины.
➡️При касте сброса транслятор может менять имя сигнала, добавляя к нему префикс или суффикс (настраиваемо). При этом он это делает и для портов вериложных модулей. По этому, если включена эта опция, при имплементации вериложного модуля к именам портов клока и сброса надо прибавлять префикс r#. Но это скорее ошибка, которую нужно исправлять.
➡️Часто неправильно указывает положение ошибки, особенно если забыли или лишняя точка с запятой.

В общем, впечатления от языка двойственные. С одной стороны линтер, language server и дженерики. С другой - ощущение, что пишешь на верилоге с новым синтаксисом и старыми проблемами. А зачем мне старые проблемы? Мне нужны новые 😄

PS: Дописывая пост заглянул в репозиторий. Две недели назад вышла новая версия, в которой добавили приведение ширины. Вот так может и допишут до продакшена.

BY Arnold Enginegger


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/enginegger/101

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Pavel Durov, a billionaire who embraces an all-black wardrobe and is often compared to the character Neo from "the Matrix," funds Telegram through his personal wealth and debt financing. And despite being one of the world's most popular tech companies, Telegram reportedly has only about 30 employees who defer to Durov for most major decisions about the platform. NEWS Telegram does offer end-to-end encrypted communications through Secret Chats, but this is not the default setting. Standard conversations use the MTProto method, enabling server-client encryption but with them stored on the server for ease-of-access. This makes using Telegram across multiple devices simple, but also means that the regular Telegram chats you’re having with folks are not as secure as you may believe. For tech stocks, “the main thing is yields,” Essaye said. Oleksandra Matviichuk, a Kyiv-based lawyer and head of the Center for Civil Liberties, called Durov’s position "very weak," and urged concrete improvements.
from sa


Telegram Arnold Enginegger
FROM American