Каква е разликата между Chisel и Lava и CLaSH?

Проучвал съм източниците на Chisel, както и на различни Lavas (вкусове Kansas, Chalmers и Xilinx) и CLaSH. Опитвам се да разбера кои са основните предимства на Chisel в сравнение с останалите. Основният, който идентифицирах, е бързата симулация.

Чудех се дали хората, които са изучавали по-задълбочено, могат да посочат други предимства, недостатъци и компромиси.

(Съжалявам, ако въпросът е прекалено дискусионен. Опитах се да публикувам на chisel-users, но очевидно трябва да бъдете приет като член, за да направите това.)


person Michael Fox    schedule 14.12.2014    source източник


Отговори (2)


Първо, отказ от отговорност, че съм тежък потребител на Chisel, но съм запознат само отблизо с базираните на Haskell DSEL, които споменавате.

Мисля, че способността на Chisel да се насочва към множество бекендове (C++, Verilog и т.н.) е значително предимство. Генерираният C++ позволява симулация с точна цикличност при скорост, многократно по-висока от Verilog/VHDL симулаторите, тъй като избягва модела, управляван от събития, присъщ на тези езици.

Това не е присъщо ограничение, но Lava и CLaSH изглежда са насочени най-вече към FPGA реализации, докато Chisel е използван за работа както върху FPGA, така и върху ASIC. Длетото също може да бъде малко по-добре поддържано; кодът, инструкциите и примерите са налични в GitHub и езикът остава в процес на активно разработване.

Съществуват и разлики между Haskell и Scala (родителските езици); ако се чувствате по-удобно в едното или другото, това може да улесни малко започването. (Ще оставя „езиковите войни“ на експертите.)

person Ben    schedule 15.01.2015

Има раздел на страницата с уроци на Clash, който описва някои компромиси между ароматите Clash и Lava (ще го оставя като справка). По принцип Clash използва подход за статичен анализ, докато ароматите Lava вървят с подхода DSEL (специфичен за домейн вграден език). Тези разлики вероятно са доста подобни на разликите между Chisel и Clash, защото Chisel също следва подхода DSEL. Така че с Clash можете да напишете код на Haskell, след което да го компилирате във VHDL, Verilog, SystemVerilog, като използвате компилатора на Clash. Не съм достатъчно запознат с Chisel или DSEL, но знам, че това не е САМО стъпка на компилация към HDL.

FWIW, разгледах използването на Chisel за проекти и открих, че екосистемата, документите и общността са невероятни, но стилът на Scala не ми хареса. По-нататъшното проучване на FP ме доведе до Haskell и Clash. Харесвам чистия функционален стил с хардуерния дизайн и тясното свързване на Haskell ми позволи да си взема тортата и да я изям; научете хардуер и Haskell едновременно. Подобно на предишния отговор, Clash vs Chisel е по-скоро решение за език, докато Clash vs Lavas е по-скоро решение за DSEL срещу статичен анализ (компилиран). Вижте справката за допълнително четене на последното решение.

Справка: http://hackage.haskell.org/package/clash-prelude-1.2.5/docs/Clash-Tutorial.html#g:20

person dopamane    schedule 11.09.2018