SystemVerilog anses vara ett ovanligt svårbegripligt språk, både för människor och för verktyg som ska läsa koden.
För att ge ett exempel så innehåller SystemVerilog 323 reserverade nyckelord, att jämföra med 35 i Python eller 82 i C++. 2017 års utgåva av SystemVerilog-standarden mottogs med stor glädje av användarna av den enkla anledningen att den innehöll vissa förtydliganden, men inte en enda ny funktion att behöva hålla reda på.
Det kanske därför inte är så konstigt att arbetsgruppen Tools inom CHIPS Alliance till stor del arbetar med olika projekt som tolkar och arbetar med SystemVerilog. På ORConf i München mitten av september gjordes en genomlysning av ett antal projekt som på ett eller annat sätt avhandlas inom den arbetsgruppen, alla naturligtvis öppen källkod.
Klicka för större bild! Eller kanske högerklicka och ladda hem...? |
Två språkanalyseringsprojekt vid namn Surelog och Verible har utvecklats, med något olika användningsområden.
Surelog är tänkt att integreras i EDA-verktyg och avlasta analysen av SystemVerilog-kod. Idag finns stöd för att använda Surelog i Verilator och även i Yosys via ett plugin som heter Synlig.
Verible är mer tänkt som en fristående verktygslåda som kan hitta tveksamheter i koden (linting), göra kod mer prydlig (formatting) samt en handfull andra verktyg för att jämföra, analysera eller skapa oläslig kod (obfuscation). Verible finns också tillgänglig som ett plugin för de som använder VS Code.
Olof Kindgren är aktiv inom öppen hårdvara som utvecklare, som styrelsemedlem i FOSSi Foundation och som ambassadör för RISC-V International, med mera. Han jobbar på svenska utvecklingsbolaget Qamcom. Texten är tidigare publicerad i branschtidningen Elektroniktidningen. |
För den som vill ha en sammanställning av hur väl olika verktyg kan hantera SystemVerilog finns också sammanställningsprojektet sv-tests som tydligt presenterar stöd i olika verktyg.
Värt att notera är att inga proprietära verktyg finns med i sammanställningen. Det är helt enkelt för att användaravtalen för de verktygen förbjuder att de jämförs med andra alternativ.