Från koncept till implementering

Abstraktion har tidigare varit den främsta orsaken till ökad produktivitet. Nu är målsättningen att gå direkt från koncept till implementering.


Giles Peckham, Xilinx

Förmågan att ignorera information är avgörande för människans existens. Utan den här nedärvda förmågan (en försvarsmekanism som kallas för latent hämning) skulle våra hjärnor lätt kunna överväldigas av sinnesstimulanser. Oförmågan att ignorera information kan till och med leda till mentala störningar. Forskning visar att förmågan att endast abstrahera den information som behövs för att fatta ett beslut från den strida ström som våra hjärnor mottar har varit grundläggande för utvecklingen av alla däggdjur. Det samma gäller även teknikens utveckling.

Abstraktion tar i stort sett bort detaljer till förmån för en funktionell beskrivning, och har varit nödvändigt och tydligt i elektronisk design sedan den första digitala datorn, ENIAC, skapades 1946 på beställning av den amerikanska militären. Utvecklingen förde naturligtvis även med sig det första programspråket, vilket var nödvändigt för att förmedla instruktioner så att datorn kunde genomföra meningsfulla åtgärder.

Idag stiger abstraktionsnivåerna än högre allt eftersom de fortsätter att utgöra den enda lösningen på en ofrånkomligen växande designkomplexitet.

Uppfylla marknadskraven
Högre abstraktionsnivåer är uppenbara i branschen: maskinkod kan till exempel beskrivas med assemblyspråk eller skrivas i C eller specificeras med vanlig engelska. Med varje abstraktionsnivå blir det nödvändigt att utveckla ett översättningslager – en automatiserad och upprepningsbar metod för att förflytta sig mellan högre och lägre abstraktionsnivåer, tills konceptet till slut återges i termer som kan köras eller implementeras.

Eftersom syftet med abstraktion är att öka produktiviteten och effektiviteten vid beskrivning och implementering av ett koncept är det absolut nödvändigt att språken som används på varje abstraktionslager är uttömmande, men ändå enklare än på lägre nivåer.
Många är av den åsikten att översättningsskedena mellan nivåerna kan leda till misstolkningar av det ursprungliga konceptet. Det kan till exempel visa sig att ett program som skrivits i C är mindre effektivt än samma program skrivet med assemblyspråk. Men att skriva i C ger mycket högre produktivitet.

Det här illustrerar kompromissen som ofta uppkommer när man inför en högre abstraktionsnivå. Det är möjligt att gå från koncept till förverkligande utan misstolkning eller prestandaförlust genom att behålla en sömlös linje genom dessa abstraktionsnivåer, under idealiska förhållanden med en enda verktygskedja.

Embeddedindustrin har ställts inför ökande komplexitetsnivåer ända sedan den första integrerade kretsen beskrevs. Precis som C är allmänt använt för utveckling av program ger hårdvarubeskrivande språk som Verilog och VHDL en högre abstraktionsnivå vid utveckling av integrerade kretsar. Försök att höja abstraktionen ännu mer och få bort differentieringen mellan hårdvara och programvara – åtminstone på en mycket hög nivå – fortsätter i hopp om att det kommer att underlätta systemdesignen. Allt oftare är sådana system avsedda för ett enda chip: ett System-on-Chip.

Utveckling av en verktygskedja som är inriktad på SoC-design och omfattar utveckling av både hårdvara och programvara på en hög abstraktionsnivå håller på att bli absolut nödvändigt för att kunna fortsätta uppfylla kraven på större produktivitet och effektivare design.

Modellbaserad abstraktion
Designteam använder redan C och härledda program som SystemC för att beskriva funktioner på systemnivå, och de vill göra vissa av dessa snabbare genom att implementera algoritmer i hårdvarudomänen. Men konverteringen av dessa algoritmer till en hårdvaruimplementering har traditionellt sett varit en manuell process som medfört omskrivning av koden i RTL och resulterat i tidskrävande konvertering och verifiering.  Nya syntesverktyg på hög nivå, som de som finns i Xilinx Vivado Design Suite för Zynq gör det möjligt att automatisera processen och nå betydligt snabbare verifieringscykler.

Högnivåsyntes (High Level Synthesis, HLS) gör att ett koncept som har beskrivits med ett högnivåspråk kan syntetiseras ned till portar på ett chip genom en automatiserad process. Det här är ett betydande steg framåt vad gäller produktivitet.

Xilinx arbetar också med att integrera och stödja OpenCL (Computing Language) – språket som är avsett att göra det möjligt att köra program genom heterogena plattformar utan att nödvändigtvis rikta in sig på en särskild processarkitektur eller kärna. Den här abstraktionsnivån kan även stödja syntetiseringen av algoritmer till en FPGA-krets, för att leverera ännu bättre prestanda.

Branschen måste fortsätta att höja nivån på designabstraktion genom att utveckla och stödja standarder som tillåter abstraktion och genom att skapa designflöden på hög nivå. Att rikta in sig på en enda plattform med hjälp av en avancerad designsvit som ständigt utvecklas för att undanröja differentieringen mellan hårdvaru- och programvarudomänerna påskyndar övergången mot en högre abstraktionsnivå, vilket gör processen från koncept till implementering sömlös och snabb.

Comments are closed.