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.

Esempi di codice 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)

Utilizzo 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.

Note

Voci correlate VHDL Verilog SystemC SystemVerilog

Collegamenti esterni

Categoria:Circuiti elettronici configurabili Categoria:Linguaggi di descrizione hardware Categoria:Elettronica digitale Categoria:Università della California, Berkeley