Skriv ut
Det kallas top-down-flow på konstruktörsjargong, den arbetsgång som rekommenderas för strukturerad konstruktion med stora logikkretsar.

Ett asicliknande konstruktionsflöde är melodin för FPGA-kretsar med mer än 10 000 grindar. Men vad innebär egentligen det?

I grova drag innehåller arbetsgången fem steg, men det finns mer sofistikerade varianter. Arbetsflödet kallas ofta för top-down-flow på asicjargong, man börjar på en hög nivå och arbetar sig stegvis ner mot mer detaljerade beskrivningar av kretsen.

Charlotta von Schultz



Konstruktören beskriver konstruktionen med hjälp av ett hårdvarubeskrivande språk, exempelvis Verilog eller VHDL. En sådan beskrivning liknar inte alls de scheman många FPGA-konstruktörer är vana vid, utan ser ut ungefär som programmeringsspråken C eller Pascal. Dagens asickonstruktörer börjar ofta på den så kallade registernivån, eller RTL- nivån som den också kallas, där RTL står för Register Transfer Level. Konstruktören beskriver då beteendet i asynkrona och synkrona tillståndsmaskiner, datavägar, register och operatorer. På det här stadiet behöver man inte ens bry sig om vilket FPGA- eller asicbibliotek konstruktionen skall implementeras i.

Konstruktören verifierar kretsens funktion logiskt med hjälp av en Verilog- eller VHDL-simulator. Man har ännu ingen informationen om timingen.

Konstruktören anger först vilka krav man har på exempelvis timing och yta. Syntesverktyget översätter sedan oftast registernivåbeskrivningen till ett generiskt - teknologioberoende - schema som består av byggblock som exempelvis adderare, multiplexorer och register. Sedan väljer verktyget lämpliga grindar ur biblioteket för att implementera dessa byggblock. Detta kallas för mappning. Verktyget försöker uppfylla kraven på timing och yta på bästa möjliga sätt. Utresultatet är en nätlista på grindnivå - ett grindschema i princip.

Nu bestämmer verktyget hur grindarna i nätlistan skall placeras på kislet samt hur ledningarna mellan grindarna skall dras. Ett bra verktyg för ledningsdragning - routing - tar hänsyn till de timingkrav man angivit före syntesen.

Ledningarna är dragna och man känner därför till kapacitanserna i alla interna nät. En noggrann beräkning av timingen är därför möjlig. Ett sätt att få reda på timingen är att köra en funktionell simulering med timinginformation. Haken är att det tar en evig tid på grindnivå. Statisk timinganalys är därför ett allt populärare alternativ. Verktyget beräknar då den längsta fördröjningen för varje signalväg.