В чем разница между долотом и лавой и CLaSH?

Я изучал источники Chisel, а также различные Lavas (Канзас, Chalmers и Xilinx) и CLaSH. Я пытаюсь понять, каковы основные преимущества продажи долота по сравнению с другими. Основным, что я определил, является быстрое моделирование.

Мне было интересно, могут ли люди, которые изучали более глубоко, указать на другие преимущества, недостатки и компромиссы.

(Извините, если это слишком много для дискуссионного вопроса. Я попытался опубликовать его для пользователей зубил, но, видимо, для этого нужно быть принятым в качестве участника.)

2 ответа

Во-первых, заявление об отказе от ответственности за то, что я являюсь активным пользователем зубила, но имею только мимолетное знакомство с DSEL на основе Haskell, о которых вы упомянули.

Я думаю, что способность Chisel нацеливаться на несколько бэкэндов (C++, Verilog и т. Д.) Является существенным преимуществом. Сгенерированный C++ позволяет моделировать с точностью до цикла во много раз больше скорости симуляторов Verilog/VHDL, потому что он избегает управляемой событиями модели, присущей этим языкам.

Это не внутреннее ограничение, но Lava и CLaSH, по-видимому, в основном нацелены на реализации FPGA, в то время как Chisel использовался для работы как на FPGA, так и на ASIC. Долото может также быть немного лучше поддержано; код, инструкции и примеры доступны на GitHub, и язык остается в активной разработке.

Есть также различия между Haskell и Scala (родительские языки); если вы чувствуете себя более комфортно в одном или другом, это может немного облегчить начало работы. (Я оставлю "языковые войны" экспертам.)

На странице учебника по Clash есть раздел, в котором описаны некоторые компромиссы между Clash и Lava (я оставлю это в качестве ссылки). В основном, Clash использует подход статического анализа, в то время как разновидности Lava используют подход DSEL (Domain Specific Embedded Language). Эти различия, вероятно, очень похожи на различия между Chisel и Clash, потому что Chisel также следует подходу DSEL. Итак, с помощью Clash вы можете написать код на Haskell, а затем скомпилировать его в VHDL, Verilog, SystemVerilog с помощью компилятора Clash. Я недостаточно знаком с долотом или DSEL, но знаю, что это не просто этап компиляции для HDL.

FWIW, я смотрел на использование Chisel для проектов и обнаружил, что экосистема, документы и сообщество были потрясающими, но мне не нравился стиль Scala. Дальнейшие исследования в области FP привели меня к Haskell и Clash. Мне нравится чистый функциональный стиль в аппаратном дизайне, а тесная связь с Haskell позволила мне "съесть свой пирог и съесть его тоже"; изучать аппаратное обеспечение и Haskell одновременно. Как и предыдущий ответ, Clash против Chisel - это скорее решение языка, а Clash против Lavas - решение DSEL против статического анализа (скомпилированного). См. Ссылку для дальнейшего чтения по последнему решению.

Ссылка: http://hackage.haskell.org/package/clash-prelude-0.99.3/docs/Clash-Tutorial.html

Другие вопросы по тегам