Парадигмы | Мультипарадигмальный : параллельный , функциональный , императивный , объектно-ориентированный |
---|---|
Семья | Скала |
Разработчик | Калифорнийский университет в Беркли |
Впервые появился | Июнь 2012 ( 2012-06 ) |
Стабильный релиз | 3.6.0 / 14 апреля 2023 г. ( 2023-04-14 ) |
Дисциплина набора текста | Предполагаемый , статический , сильный , структурный |
Объем | Лексический (статический) |
Язык реализации | Скала |
Платформа | Виртуальная машина Java (JVM) JavaScript (Scala.js) LLVM (Scala Native) (экспериментальная) |
Веб-сайт | www.chisel-lang.org |
Chisel ( аббревиатура от Constructing Hardware in a Scala Embedded Language [1] ) — язык описания оборудования с открытым исходным кодом (HDL), используемый для описания цифровой электроники и схем на уровне регистровых передач . [2] [3]
Chisel основан на Scala как на предметно-ориентированном языке (DSL). Chisel наследует объектно-ориентированные и функциональные аспекты программирования Scala для описания цифрового оборудования. Использование Scala в качестве основы позволяет описывать генераторы схем. Высококачественная, свободно доступная документация существует на нескольких языках. [4]
Схемы, описанные на языке Chisel, можно преобразовать в описание на языке Verilog для синтеза и моделирования .
Простой пример, описывающий схему сумматора и показывающий организацию компонентов в модуле с входными и выходными портами:
class Add extends Module { val io = IO ( new Bundle { val a = Input ( UInt ( 8 . W )) val b = Input ( UInt ( 8 . W )) val y = Output ( UInt ( 8 . W )) }) io.y : = io.a + io.b }
32-битный регистр со значением сброса 0:
val reg = RegInit ( 0 . U ( 32 . W ))
Мультиплексор является частью библиотеки Chisel :
val result = Mux ( sel , a , b )
Хотя Chisel пока не является основным языком описания оборудования, его изучают несколько компаний и учреждений. Наиболее известным применением Chisel является реализация набора инструкций RISC-V , чипа Rocket с открытым исходным кодом. [5] Chisel упоминается Агентством перспективных исследовательских проектов Министерства обороны США ( DARPA ) как технология для повышения эффективности электронного проектирования, где небольшие проектные группы выполняют более крупные проекты. [6] Google использовала Chisel для разработки Tensor Processing Unit для периферийных вычислений . [7] Некоторые разработчики предпочитают Chisel, поскольку он требует в 5 раз меньше кода и разрабатывается намного быстрее, чем Verilog. [8]
Схемы, описанные в Chisel, можно преобразовать в описание в Verilog для синтеза и моделирования с помощью программы FIRRTL. [9] [ нужен лучший источник ]