Chisel
Chisel (Constructing Hardware in a Scala Embedded Language) [1] è un linguaggio di descrizione dell'hardware (HDL) open source utilizzato per descrivere circuiti elettronici digitali a livello di trasferimento tra registri (RTL).[2][3] 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[4]. 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.[5] Esempi di codiceUn 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)
UtilizzoSebbene 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[6]. 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.[7] Google ha utilizzato Chisel per sviluppare una Tensor Processing Unit per l'edge computing.[8] Alcuni sviluppatori preferiscono Chisel in quanto richiede un codice cinque volte inferiore ed è molto più veloce da sviluppare rispetto a Verilog.[9] Note
Voci correlateCollegamenti esterni
|