JavaScript is currently disabled.Please enable it for a better experience of Jumi. CIRCT – ett lingua franca för hårdvaruspråk

I mjukvaruvärlden dyker nya programmeringsspråk upp med jämna mellanrum, men digital chipdesign har harvat på med VHDL och Verilog i 30 år. För en del innebär det en stor trygghet, men hos en växande skara innebär det en ökande frustration att arbeta med dessa arkaiska språk.

Detta har i sin tur givit upphov till en mängd nya språk, ofta med utgångspunkt i befintliga populära språk som Python eller Scala för att bryta sig loss från de språkliga begränsningarna i de klassiska hårdvarubeskrivande språken.

Klicka för större bild! Eller kanske högerklicka och ladda hem...?

Men det kvarstår fortfarande två problem. Hur ska man kunna kombinera delar av en design som är skrivna i olika språk, och hur ska EDA-verktygen förstå koden?

Svaret på den första frågan är att använda en Intermediate Representation (IR), alltså en beskrivning av koden som är ett mellansteg mellan ursprungs­koden och den slutgiltiga implementationen. Ett IR-språk skulle då kunna fungera som ett lingua franca dit alla olika hårdvarubeskrivande språk kan översättas.

Det finns många andra fördelar med ett IR också eftersom det är en lagom nivå för olika optimeringsalgoritmer som kan göra konstruktionen mindre eller snabbare.

I mjukvaruvärlden fungerar det precis så, inte minst i kompilatorramverket LLVM där all kompilerad programkod, oavsett språk, mellanlandar i ett IR och där går igenom ett antal optimeringssteg innan den blir till assemblerkod eller något annat.

Det som dock har hänt i praktiken på HDL-sidan under de senaste fem åren är att vi inte har sett ett nytt IR, utan istället en explosion av olika alternativ, vilket nästan givit upphov till samma problem som ett IR ursprungligen var tänkt att lösa.

Chisel har haft sitt IR-språk FIRRTL, Yosys har haft sitt IR-språk RTLIL och det finns minst ett dussin andra att nämna. Men under senaste året börjar det se ut som att ett projekt vid namn CIRCT har tagit mer fart än andra.

Det finns två viktiga faktorer som ger extra tyngd åt CIRCT. Det är byggt på LLVM vilket ger tillgång till ett enormt ekosystem samt att Chisel, ett av de mer populära nya hårdvaru­beskrivande språken kommer att byta från sitt eget IR FIRRTL till CIRCT i nästa version.

Den som vill lära sig mer om CIRCT kan läsa mer här eller se en presentation från konferensen Latch-Up i våras här.

Men den andra frågan då? Jo, trots nya hårdvarubeskrivande språk och CIRCT så måste koden fortfarande översättas till Verilog innan EDA-verktygen kan förstå den. Tyvärr är Verilog ett rätt uselt IR-språk eftersom det aldrig var tänkt för det ändamålet och man hoppas i ­framtiden att EDA-verktygen direkt ska kunna tolka CIRCT:s IR istället för att behöva gå ­omvägen kring Verilog.

 

 
MER LÄSNING:
 
KOMMENTARER
Kommentarer via Disqus

Anne-Charlotte Lantz

Anne-Charlotte
Lantz

+46(0)734-171099 ac@etn.se
(sälj och marknads­föring)
Per Henricsson

Per
Henricsson
+46(0)734-171303 per@etn.se
(redaktion)

Jan Tångring

Jan
Tångring
+46(0)734-171309 jan@etn.se
(redaktion)