Programmeringsspråken C, C++ och Java stod högt på dagordningen vid årets upplaga av konstruktionskonferensen Dac - Design Automation Conference - som gick av stapeln i New Orleans i midsommarveckan.
En rad företag presenterade hjälpmedel som utnyttjar framför allt C och C++ för att representera hårdvara såväl som mjukvara, och några av verktygen kunde till och med omvandla C-, eller Javakod till syntetiserbar VHDL och Verilog. Minsta gemensamma nämnare bland lanseringarna är löftet om snabbare utvecklingstider för avancerade kretskonstruktioner, något som är hett efterlängtat bland konstruktörer och projektledare som försöker hålla jämna steg med de allt grindrikare kretsarna. Konstruktionsarbetet lyfts till en betydligt högre abstraktionsnivå än vad som är möjligt med de hårdvarubeskrivande språken VHDL och Verilog, som numera är i det närmaste vedertagna bland konstruktörer av asicar, systemkretsar och stora FPGA-er. Därmed kan konstruktören koncentrera sig på systemets funktioner och testa olika arkitekturer utan att behöva gräva ner sig i detaljer. Metoden för onekligen tankarna till de verktyg för beteendesyntes som exempelvis Synopsys, Mentor och Cadence utlovade stora tidsbesparingar med när de lanserades i mitten av 90-talet.
Skillnaden är att de utgick från VHDL, låt vara på hög abstraktionsnivå, istället för från ett programmeringsspråk. Numera hör man sällan någon sjunga beteendesyntesens lov, och Cadence drog till och med tillbaka sitt verktyg i början av året. Argumentet var bristande efterfrågan.
Länk till systemkonstruktören
Vad gör då att den nya generationen verktyg har en chans att lyckas? Ett argument är att det blir allt viktigare att minska utvecklingstiderna i takt med att kretsarna blir större. Men först och främst måste verktygen naturligtvis visa att de presterar bra resultat. En finess är emellertid att de bevarar stora delar av dagens konstruktionsmetoder både vad gäller hårdvarukonstruktörens arbete som systemkonstruktörens.
Det nya är att det finns en länk däremellan. För C och C++ används ju sedan länge i många konstruktionsprojekt där systemkonstruktören beskriver systemet i exempelvis C. Därefter simulerar och analyserar systemkonstruktören koden, och när han eller hon är nöjd med systemets beteende är det dags för hårdvarukonstruktören att ta vid. C-koden ska översättas till syntetiserbar Verilog eller VHDL, vilket kan vara ett riktigt hästjobb. I bästa fall är systembeskrivningen skriven i en variant av C som stöder heltalsaritmetik, eftersom Verilog och VHDL kräver fast ordlängd och precision.
Ofta är systemet emellertid utvecklat i flyttals-C och måste skrivas om i heltalsaritmetik, innan det konverteras manuellt till ett hårdvarubeskrivande språk på registernivå. Sen gäller det att verifiera att registernivåkoden har samma funktion som den ursprungliga beskrivningen. Det är detta omständiga förfarande företag som Frontier Design, C-level, Cynapps och Lava Logic vill ändra på. Belgiska Frontier Design kom till Dac med Architectural Synthesis Toolkit, ett tillägg till företagets Art Builder som översätter C på låg abstraktionsnivå till VHDL eller Verilog.
Väljer den bästa arkitekturen
Med Architectural Synthesis Toolkit utgår man från C-kod på högre nivå - algortimnivå - och försöker hitta den bästa arkitekturen för konstruktionen. Marc van Canneyt på Frontier tycker att skillnaden är stor jämfört med beteendesyntes. - Vårt verktyg är väldigt interaktivt och konstruktören har god kontroll över resultatet. Marknadens beteendesyntesverktyg fungerar mer som svarta lådor, man har ingen kontroll över dem. Dessutom utgår de inte från C, säger han. I Frontiers arbetsgång använder konstruktören först ett verktyg vid namn Art Library, som gör det möjligt att utveckla heltalsalgoritmer i C.
Företagets nykomling kompilerar sedan C-koden från algoritmnivå till registernivå och hjälper konstruktören att allokera resurser som exempelvis ALU-er, adderare eller minnesblock, och att para ihop matematiska operationer med en viss resurs. Man kan även styra schemaläggningen, alltså i vilken tidsordning operationerna ska utföras, och se till att vissa operationer delar på en resurs. När man har valt arkitektur är det dags för Art Builder, som på några minuter genererar VHDL och Verilog på registernivå.
Frontier hävdar att resultatet blir 50 till 90 procent bättre - mätt i kiselyta, prestanda och effektförbrukning - jämfört med traditionella metoder. Förklaringen är att man kan utvärdera olika arkitekturer och välja den bästa. Dessutom spar man tid. - Enbart att översätta C till VHDL eller Verilog manuellt och att verifiera att det blev rätt kan ta en tredjedel av det totala konstruktionsarbetet, säger Marc van Canneyt.
Betatestas under hösten
Architectural Synthesis Toolkit kan hantera beskrivningar på över 100 000 matematiska operationer. Den största konstruktionen som hittills konstruerats med metoden upptog runt 300 000 grindar. Verktyget ska betatestas under hösten och släpps som kommersiell produkt före nyår. Om allt går vägen ska Frontier då ha knutit till sig en svensk distributör som företaget redan har inlett diskussioner med. Ett annat intressant företag i genren är amerikanska C-level Design, som nyligen öppnade Europakontor i London. Företaget har slagit ihop sina två produkter C2Verilog och C2VHDL till System Compiler, ett verktyg som konverterar C-kod till syntetiserbar Verilog och VHDL.
Verktyget hanterar C-kod på algoritmnivå såväl som registernivå. Det översätter dessutom flyttalsbeskrivningar till heltalsdito, och genom att mata kompilatorn med direktiv kan man styra huruvida konstruktionen ska optimeras med avseende på yta eller timing. översättningen sker därefter automatiskt, men användaren kan styra klockcykelbudgetering för vissa operationer. - Vårt verktyg är i dagsläget det enda som stöder hela Ansi-C-standarden, säger David Park på C-level. Därmed menar han att man kan konvertera befintlig C-kod med verktyget utan att behöva skriva om den först, till skillnad från kod. Likaledes nystartade Cynapps ligger i startgroparna med ett verktyg som omvandlar C och C++ till Verilog. Företaget avslöjar inte så många detaljer än så länge men utlovar stöd för konstruktionsinmatning, simulering och syntes. Cynapps första produkter ska lanseras i slutet av året.
Mer parallellt med Java
Lava Logic har valt ett annat angreppssätt. - Visst kan man använda C och C++ för hårdvarukonstruktion, men Java resulterar i mycket bättre hårdvara, säger Robert Barker på Lava Logic. Lava Logic hade blott fem veckor på nacken på Dac, efter att nyligen ha avknoppats från TSI-Telsys. ändå premiärvisade företaget sin första produkt Forge J, som marknadsförs som ett verktyg för arktitektursyntes. Det omvandlar Java till syntetiserbar Verilogkod, och sägs ge en tiofaldig ökning av konstruktörens produktivitet. Lava Logics förklaring till att Java skulle vara överlägset C är bland annat att Javas abstrakta minneshantering gör att verktyget automatiskt kan hitta parallella operationer genom att analysera databeroenden. Och genom att implementera dessa operationer parallellt blir konstruktionen snabbare.
Forge J betatestas nu och ska finnas tillgängligt i september. Lava Logic har ännu en innovativ produkt i bakfickan - Forge FPGA, ett hjälpmedel som omvandlar Javakod till en nätlista på grindnivå anpassad för ett visst FPGA-bibliotek. Man slipper alltså logiksyntesen och kan gå direkt till placering och ledningsdragning. Charlotta Von Schultz