Vai al contenuto

Chisel

Da Wikipedia, l'enciclopedia libera.
Chisel
linguaggio di programmazione
AutoreUniversità della California - Berkeley
Data di origineGiugno 2012
Ultima versione3.6.0
UtilizzoLinguaggio di descrizione dell'hardware
ParadigmiMulti-paradigma: Funzionale, Imperativa, A oggetti
TipizzazioneStatica, Forte, Strutturale
Implementazione di riferimento
LinguaScala
LicenzaApache 2.0
Sito webwww.chisel-lang.org

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 codice

[modifica | modifica wikitesto]

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[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]

  1. ^ J. Bachrach, H. Vo, B. Richards, Y. Lee, A. Waterman, R. Avižienis, J. Wawrzynek e K. Asanović, Chisel: constructing hardware in a Scala embedded language, 49th Annual Design Automation Conference (DAC 2012), San Francisco, California, USA, Association for Computing Machinery (ACM), giugno 2012, pp. 1216–25, DOI:10.1145/2228360.2228584, ISBN 978-1-4503-1199-1.
  2. ^ Chisel, su people.eecs.berkeley.edu, University of California, Berkeley. URL consultato l'8 luglio 2020 (archiviato dall'url originale il 16 ottobre 2021).
  3. ^ Jonathan Bachrach, Chisel: Accelerating Hardware Design (PDF), su RISC-V, RISC-V International.
  4. ^ (ENZHJAVI) Martin Schoeberl, Digital Design with Chisel, 2ª ed., Kindle Direct Publishing, 2019, ISBN 978-1689336031.
  5. ^ Chisel/FIRRTL Hardware Compiler Framework, su chisel-lang.org. URL consultato l'8 settembre 2022.
  6. ^ Krste Asanović, rocket-chip, su GitHub, RISC-V International. URL consultato l'11 novembre 2016.
  7. ^ Samuel K. Moore, DARPA Plans a Major Remake of U.S. Electronics, in IEEE Spectrum, Institute of Electrical and Electronics Engineers (IEEE), 16 luglio 2018. URL consultato il 10 giugno 2020.
  8. ^ Filmato audio Derek Lockhart, Stephen Twigg, Ravi Narayanaswami, Jeremy Coriell, Uday Dasari, Richard Ho, Doug Hogberg, George Huang, Anand Kane, Chintan Kaur, Tao Liu, Adriana Maggiore, Kevin Townsend, Emre Tuncer, Experiences Building Edge TPU with Chisel, 16 novembre 2018. URL consultato il 10 giugno 2020.
  9. ^ (EN) XiangShan open-source 64-bit RISC-V processor to rival Arm Cortex-A76 - CNX Software, su CNX Software - Embedded Systems News, 5 luglio 2021. URL consultato il 26 marzo 2022.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]