В результате многое обозначается словами, никак не отражающими суть.
Как ни назови, это не будет отражать суть, потому что сути нет. А то, что мы пытаемся придавать этим словам какое-то значение - это наши проблемы. Точнее, проблемы нейросети, которая решила "расположить" верхние кварки "вверху", а нижний "внизу".
В общем да. Применять более программистский подход - максимально переиспользовать код (в виде API чизела), использовать ООП в плане построения абстракций, инкапсуляции и сокрытия, использовать возможности скалы. На таком маленьком проекте это конечно не просто показать, но есть куда стремиться.
В качестве примеров можно посмотреть открытые проекты на чизеле и спинале, например VexRiscv.
Примерно так же получается, когда программист на Си начинает писать код на С++. У него первое время выходи тот же Си, только файл с другим расширением. Потом приходит понимание, как надо.
Если писать на чизеле как на верилоге, то профита не будет. Будет тот же верилог, но с другим синтаксисом. Чтобы профит был, нужно сильно сломать привычный подход к написанию RTL. Очень сильно. И Скалу подучить. Такое мое ИМХО :)
Да и вообще, мне кажется несколько сомнительным использовать ООП подход для описания цифровых схем. Ведь код на ПЛИС, это именно что описание схемы, а не набор команд.
Вот тут, как мне кажется, кроется большая проблема при изучении чизела опытным rtl-щиком. Очень трудно перестроиться с восприятия проекта как схемы, на восприятие как взаимодействующих абстракций. Особенно если не писал чего-то более-менее большого на обычных высокоуровневых языках программирования.
Не соглашусь, и приведу пример. В спинале нет соглашения о том, где должны декларироваться порты ввода/вывода. Есть только рекомендация использовать io в качестве имени бандла, но порты можно объявить где угодно в теле класса, чем нередко пользуются разработчики. Т.е. получается, что нет вменяемой декларации аппаратного интерфейса, и без подробной документации бывает сложно найти концы. А документация даже к самому спиналу весьма скудная (в т.ч. scaladoc к API, который для контраста можно сравнить с javadoc для java.*), не говоря о производных либах.
У меня возникла такая ассоциация: Verilog/VHDL по отошению к SpinalHDL/Chisel это как ассемблер и C++.
Не согласен. Я думаю это как Си и ... смесь С++, Go и Ocaml. Причём, нужно понимать все три :)
производительность труда одного человек пишущего на Chisel равняется команде из десятка крутых спецов пишущих на Verilog/VHDL
Раза в полтора. Ну может быть с натяжкой в два. Но не в 10 - это совершенно точно.
Я не против спинала и чизела, они мне самому нравятся (хотя, можно было сделать и лучше), но это далеко не серебряная пуля.
Синтаксис очень понятный, даже не зная Cкалы можно смело начинать работать и познавать в процессе.
Только если не использовать сторонних библиотек. Разобраться в коде того же VexRiscv без знания скалы вообще нереально. А впихнуть его в свой проект можно только тупой копипастой из примеров (коих, кстати, очень немного).
И, собственно, такой чисто программистски-энтерпрайзный подход, когда нужно заставить себя не задумываться о том, что под капотом у абстракции - это нормально для спинала и чизела. Но у разработчиков, которые привыкли видеть проект "насквозь", он вызывает сильную когнитивную ломку.
Докер, да и оно судя по репозиторию каких-то космических размеров.
Там Go и C++. Она на базе той же llama-cpp, думаю собрать её на BSD трудов не составит. А ещё её в качестве бэкэнда поддерживают многие интересные тулы, типа веб-интерфейсов, телеграм ботов, консольных тулов и редакторов кода (emacs, например)
Еще не увидел каких-либо требований по GPU
Такие же, как у llama-cpp. Если модель влазит в память GPU, то будет большое ускорение. Если не влазит - то ускорения практически не будет, хоть и будет часть модели считаться на GPU. Ускоритель желателен, но не необходим, все модели работают на CPU.
С критериями качества тоже не очень понял
Критерии простые - устраивает ответ на вопрос или нет.
А почему не использовать ollama? Там из коробки много интересных моделей, и руками можно поставить. Я пробовал запускать Deepseek-R1 671B Q1.58 на 128ГБ оперативы. Оно, конечно, работает, но оооочень медленно. Для CPU инферинга отлично подошла deepseek-coder-v2-16b. За счёт MoE работает офигенно быстро, и при этом достаточно качественно.
Полный видеосигнал можно генерить на r2r ЦАПе. Я делал на 8 бит. Если s-video, то можно 3 бита на цветовую поднесущую и 5 бит на яркость+синхросигнал. Поднесущая генерится с помощью DDS. Вот тут видео с цветовыми полосами: https://t.me/enginegger/107
Мне R1 на вопрос про волчью отраву и клобук монаха вот что ответил:
Волчья отрава и клобук монаха — это принципиально разные понятия, но их можно связать через контекст ядовитых растений.
Волчья отрава — собирательное название ядовитых веществ или растений, используемых для борьбы с волками (например, волчеягодник, аконит).
Клобук монаха — в прямом смысле это головной убор православных монахов. Однако в ботанике так иногда называют аконит из-за формы его цветка, напоминающей капюшон (клобук).
Таким образом, если речь о растениях:
Аконит может именоваться и «волчьей отравой» (из-за ядовитости), и «клобуком монаха» (из-за формы цветка).
Если же говорить буквально, то волчья отрава — это яд, а клобук — элемент одежды.
Разница — в контексте: отраву используют для убийства, клобук — для духовной практики. Но в ботанике оба названия иногда относятся к одному растению (акониту).
А можно пример?
Как ни назови, это не будет отражать суть, потому что сути нет. А то, что мы пытаемся придавать этим словам какое-то значение - это наши проблемы. Точнее, проблемы нейросети, которая решила "расположить" верхние кварки "вверху", а нижний "внизу".
И «кавычки» тоже сами расставляете? :)
"Вы и есть за меня будете?!". Коментарии тоже нейросеть пишет? Тест Тьюринга не прошла.
Нейростатья?
Эмм...
Надо валить на Radicle
Сказали же, прикладываешь телефон и проходишь. Что может быть проще?
В общем да. Применять более программистский подход - максимально переиспользовать код (в виде API чизела), использовать ООП в плане построения абстракций, инкапсуляции и сокрытия, использовать возможности скалы. На таком маленьком проекте это конечно не просто показать, но есть куда стремиться.
В качестве примеров можно посмотреть открытые проекты на чизеле и спинале, например VexRiscv.
Примерно так же получается, когда программист на Си начинает писать код на С++. У него первое время выходи тот же Си, только файл с другим расширением. Потом приходит понимание, как надо.
Если писать на чизеле как на верилоге, то профита не будет. Будет тот же верилог, но с другим синтаксисом. Чтобы профит был, нужно сильно сломать привычный подход к написанию RTL. Очень сильно. И Скалу подучить. Такое мое ИМХО :)
Прям вот так, без верификации?
На Chisel даже смотреть не будут. Много вы знаете коммерческих IP на чизеле?
Говорите миф, и тут же подтверждаете мои слова :)
Вот тут, как мне кажется, кроется большая проблема при изучении чизела опытным rtl-щиком. Очень трудно перестроиться с восприятия проекта как схемы, на восприятие как взаимодействующих абстракций. Особенно если не писал чего-то более-менее большого на обычных высокоуровневых языках программирования.
Не соглашусь, и приведу пример. В спинале нет соглашения о том, где должны декларироваться порты ввода/вывода. Есть только рекомендация использовать io в качестве имени бандла, но порты можно объявить где угодно в теле класса, чем нередко пользуются разработчики. Т.е. получается, что нет вменяемой декларации аппаратного интерфейса, и без подробной документации бывает сложно найти концы. А документация даже к самому спиналу весьма скудная (в т.ч. scaladoc к API, который для контраста можно сравнить с javadoc для java.*), не говоря о производных либах.
Не согласен. Я думаю это как Си и ... смесь С++, Go и Ocaml. Причём, нужно понимать все три :)
Раза в полтора. Ну может быть с натяжкой в два. Но не в 10 - это совершенно точно.
Я не против спинала и чизела, они мне самому нравятся (хотя, можно было сделать и лучше), но это далеко не серебряная пуля.
Дерево сравнения можно довольно лаконично описать в виде рекурсивного модуля, синтезаторы такое уже понимают.
Только если не использовать сторонних библиотек. Разобраться в коде того же VexRiscv без знания скалы вообще нереально. А впихнуть его в свой проект можно только тупой копипастой из примеров (коих, кстати, очень немного).
И, собственно, такой чисто программистски-энтерпрайзный подход, когда нужно заставить себя не задумываться о том, что под капотом у абстракции - это нормально для спинала и чизела. Но у разработчиков, которые привыкли видеть проект "насквозь", он вызывает сильную когнитивную ломку.
Там Go и C++. Она на базе той же llama-cpp, думаю собрать её на BSD трудов не составит. А ещё её в качестве бэкэнда поддерживают многие интересные тулы, типа веб-интерфейсов, телеграм ботов, консольных тулов и редакторов кода (emacs, например)
Такие же, как у llama-cpp. Если модель влазит в память GPU, то будет большое ускорение. Если не влазит - то ускорения практически не будет, хоть и будет часть модели считаться на GPU. Ускоритель желателен, но не необходим, все модели работают на CPU.
Критерии простые - устраивает ответ на вопрос или нет.
А почему не использовать ollama? Там из коробки много интересных моделей, и руками можно поставить. Я пробовал запускать Deepseek-R1 671B Q1.58 на 128ГБ оперативы. Оно, конечно, работает, но оооочень медленно. Для CPU инферинга отлично подошла deepseek-coder-v2-16b. За счёт MoE работает офигенно быстро, и при этом достаточно качественно.
Хорошо бы поставить на выход ЦАПа буфер (например, эмиттерный повторитель).
Полный видеосигнал можно генерить на r2r ЦАПе. Я делал на 8 бит. Если s-video, то можно 3 бита на цветовую поднесущую и 5 бит на яркость+синхросигнал. Поднесущая генерится с помощью DDS. Вот тут видео с цветовыми полосами: https://t.me/enginegger/107
Мне R1 на вопрос про волчью отраву и клобук монаха вот что ответил:
Волчья отрава и клобук монаха — это принципиально разные понятия, но их можно связать через контекст ядовитых растений.
Волчья отрава — собирательное название ядовитых веществ или растений, используемых для борьбы с волками (например, волчеягодник, аконит).
Клобук монаха — в прямом смысле это головной убор православных монахов. Однако в ботанике так иногда называют аконит из-за формы его цветка, напоминающей капюшон (клобук).
Таким образом, если речь о растениях:
Аконит может именоваться и «волчьей отравой» (из-за ядовитости), и «клобуком монаха» (из-за формы цветка).
Если же говорить буквально, то волчья отрава — это яд, а клобук — элемент одежды.
Разница — в контексте: отраву используют для убийства, клобук — для духовной практики. Но в ботанике оба названия иногда относятся к одному растению (акониту).