| Chisel linguaggio di programmazione | |
|---|---|
| Autore | Università della California - Berkeley |
| Data di origine | Giugno 2012 |
| Ultima versione | 3.6.0 |
| Utilizzo | Linguaggio di descrizione dell'hardware |
| Paradigmi | Multi-paradigma: Funzionale, Imperativa, A oggetti |
| Tipizzazione | Statica, Forte, Strutturale |
| Implementazione di riferimento | |
| Lingua | Scala |
| Licenza | Apache 2.0 |
| Sito web | www.chisel-lang.org |
Chisel (Constructing Hardware in a Scala Embedded Language) è un linguaggio di descrizione dell'hardware (HDL) open source utilizzato per descrivere circuiti elettronici digitali a livello di trasferimento tra registri (RTL). Chisel è un linguaggio di dominio specifico (DSL) incorporato in Scala. Chisel eredita gli aspetti di programmazione funzionale e orientata agli oggetti di Scala per descrivere l'hardware digitale. L'uso di Scala come base consente di descrivere dei generatori di circuiti. La documentazione, di alta qualità e ad accesso libero, esiste in diverse lingue.
I circuiti descritti in Chisel possono essere convertiti in una descrizione in Verilog per la sintesi e la simulazione sfruttando una rappresentazione intermedia chiamata FIRRTL.
Un semplice esempio che descrive un circuito sommatore e mostra l'organizzazione dei componenti nel modulo con porte di ingresso e uscita:
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
}
Un registro a 32 bit con un valore di reset pari a 0:
val reg = RegInit(0.U(32.W))
Un multiplexer fa parte della libreria Chisel:
val result = Mux(sel, a, b)
Sebbene Chisel non sia ancora un linguaggio di descrizione hardware mainstream, è stato utilizzato da diverse aziende e istituzioni. Il progetto di maggior rilevanza basato su Chisel è un'implementazione del set di istruzioni RISC-V, il processore Rocket. Chisel è menzionato dalla Defense Advanced Research Projects Agency (DARPA) come una tecnologia per migliorare l'efficienza della progettazione elettronica, dove i team di progettazione più piccoli eseguono progetti più grandi. Google ha utilizzato Chisel per sviluppare una Tensor Processing Unit per l'edge computing. Alcuni sviluppatori preferiscono Chisel in quanto richiede un codice cinque volte inferiore ed è molto più veloce da sviluppare rispetto a Verilog.