Effektivare med anpassning och återanvändning

Design och verifiering av systemkretsar kräver analys av enorma mängder data om den strukturella uppbyggnaden och det temporala beteendet hos konstruktionerna. Archie Feng och Thomas Li från SpringSoft visar här hur designarbetet kan effektiviseras med ett anpassat flöde och att information återanvänds genom hela designflödet.

 

Design- och verifieringsflödet för komplexa digitala konstruktioner innehåller en enorm mängd detaljerad information om konstruktionens uppbyggnad och beteende, med många sammanhängande datamängder som ofta förändras under flödets fortgående. Denna information representeras på ett antal olika abstraktionsnivåer i flera olika format, som slutligen lagras i hundratals filer.
För att man skall kunna lyckas med sådana flöden krävs att design- och verifieringsinformationen kan analyseras på många olika sätt, så att man kan få en förståelse för konstruktionens uppbyggnad, dess beteende och de inre relationerna mellan olika strukturella och temporala element.
Lyckligtvis finns det idag många verktyg för designautomatisering som stöder vanliga analysmetoder, och därtill standardiserade språk och format som förenklar interoperabilitet mellan olika verktyg. Naturligtvis är det inte alltid bäst att använda kommersiella verktyg, och normalt måste analysresultaten tolkas, transformeras, korreleras och filtreras för att bli användbara.
Att samla in all kunskap som krävs för att förstå konstruktionen är svårt om man inte använder automatiseringsverktyg som byggts för detta ändamål. Ett exempel är SpringSofts Verdi Automated Debug System, en högautomatiserad lösning som ger förståelse för konstruktionens uppbyggnad och beteende.
Debugsystemets underliggande arkitektur har utformats speciellt för att kompilera, extrahera, lagra och bearbeta design- och verifieringsinformation om processen på ett sådant sätt att ”designkunskap” – data och korrelationer mellan dataelement – blir tillgänglig för studium och interaktiv analys.


Fig 1. Databas-infrastruktur hos VIA-plattformen.

Infrastrukturen har förbättrats och erbjuds nu formellt som plattformen SpringSoft Verdi Interoperability Applications (VIA) för att ge öppna förbindelser till Verdis databas- och mjukvaruinfrastruktur, och för att ge SoC-designteamen möjlighet att enkelt skapa och återanvända interoperabla applikationer som skräddarsytts för deras egna verktyg och krav på design/verifieringsflöden.

Design- och verifieringsdata
Till en komplex SoC-konstruktion (System-on-Chip) hör en mängd olika, interrelaterade delar av information som beskriver och registrerar den strukturella uppbyggnaden av konstruktionen, vilka avsikter designteamet haft angående dess beteende över tiden samt dess verkliga beteende under olika förhållanden. Bland informationskällorna finns:
* Designfiler innehållande design- och testmoduler på många olika abstraktionsnivåer, t ex beteende-, RTL-, grind- och switchnivå.
* Designmoduler skrivna i flera olika HDL (hardware description languages), t ex Verilog, SystemVerilog och VHDL
* ”Assertions”, som egenskaper och begränsningar
* Simuleringsresultat lagrade som temporala vågformsdata

Vad är designkunskap?
För det första bör man lära sig att förstå skillnaden mellan data och kunskap (knowledge). Data definieras som ”representationen av fakta, koncept och instruktioner på ett formellt sätt som passar för kommunikation, tolkning och bearbetning”.
Kunskap definieras som ”kunnande och färdigheter som en person skaffat genom experiment eller utbildning; det teoretiska eller praktiska förståendet av ett objekt” och som ”bekantskap med fakta, sanningar och principer, t ex från studier eller undersökningar”.
När det gäller att beskriva design- och verifieringsflödet för chip definierar SpringSoft designkunskap som det praktiska förståendet av en konstruktion och dess beteende.
Designkunskap har avgörande betydelse för att man skall lyckas med att konstruera, verifiera och avbugga elektroniska system och kretsar. Speciellt för SoC-konstruktioner kräver detta att man studerar och undersöker en mängd olika design- och verifieringsdata. Komplexiteten i denna uppgift ökas av det faktum att volymen och variationerna hos de data som genereras snabbt ökar under design- och verifieringsflödet.


Fig 2. Plattformen har stöd för Tk- och C-baserade tillämpningar.

Denna datamängd är i hög grad korrelerad, vilket också i hög grad ökar svårigheterna att förstå konstruktionen och dess beteende. Till exempel bestämmer de strukturella relationerna mellan block, grindar och signaler konstruktionens beteende, medan relationerna mellan konstruktionselementen och de ”assertions” som begränsar och kontrollerar beteendet bestämmer noggrannheten hos verifieringen. Att hitta dessa relationer mellan verifieringsdata och designdata är i sin tur nyckeln till att kunna utvärdera resultaten av verifieringen.

Hur används designkunskap idag?
SoC-designteam är i hög grad beroende av designkunskap för att kunna utveckla en förståelse för konstruktörens avsikter och orsakerna till konstruktionens beteende. Designingenjören måste förstå konstruktionens struktur och avsedda beteende för att kunna utföra sin del av konstruktionen och framgångsrikt integrera den med andra komponenter.
Verifieringsingenjören måste förstå konstruktionens syfte och kritiska aspekter på dess struktur för att kunna ta fram effektiva verifieringsmiljöer, provare och test. De ingenjörer som ansvarar för avbuggningen måste förstå såväl välkända som mindre välkända delar av konstruktionen (och deras beteende) för att kunna spåra sig fram till den underliggande orsaken till oväntade beteenden och genomföra ändringar så att konstruktionerna beter sig som man avsett.


Fig 3. Processflöde.

Designkunskap kan också användas för att bedöma om konstruktionen överensstämmer med specifikationerna eller projektkraven, liksom för att noggrant överföra data så att de kan matas in i senare design-, verifierings- och analyssteg under SoC-flödet. Det finns nästan oändligt många potentiella applikationer för designkunskap, däribland:
* Genomgång av konstruktionens struktur, inklusive modulär hierarki och nätlista på grindnivå
* Genomgång av konstruktionens beteende genom studium av signalvärden över simulerad tid
* Korrelering av verifieringsresultat mot konstruktionens struktur
* Korrelering av komponentgrupper mot användardefinierade kriterier

Hur utvecklas designkunskap?
Naturligtvis går det att skaffa sig designkunskap genom att manuellt öppna och undersöka de olika design- och verifieringsfiler som beskrivits tidigare. Men denna ansats är ytterst arbetskrävande och opraktisk, utom för de allra enklaste konstruktionerna.
Faktum är att redan för relativt måttligt komplexa moderna konstruktioner finns det goda anledningar att använda automatiserade program och hjälpmedel för att studera, spåra och analysera design- och verifieringsdata. För att snabbt och noggrant kunna utveckla sådana program krävs ingenjörer med djupgående erfarenheter, och därtill en kunskapsbaserad infrastruktur som:
* automatiskt utför mycket av den nödvändiga analysen av rådata för konstruktion och verifiering
* lagrar och bevarar kunskap – och inte bara data – inklusive korrelationer mellan olika element
* kommer åt kunskap via APIer (applications programming interfaces) med exakt rätt granularitet
* ger möjlighet att använda standardverktyg för att se på sådant som källkod, vågformer, scheman och tillståndsdiagram
SpringSofts Verdi är ett högautomatiserat avbuggningssystem som gör att man snabbare kan förstå komplexa IP-komponenter, konstruktionsmoduler och hela SoC-konstruktioner. Systemet bygger på en enhetlig Design Knowledge Platform (DKP) med specialiserade databaser och analysmotorer. Dessa kompilerar, extraherar och bevarar de konstruktions-, simulerings- och analysdata som krävs för att visa det funktionella arbetssättet och interaktionen mellan konstruktions-, assertions- och systemtestelement.
Från denna utgångspunkt har Verdis DKP byggts upp med öppna APIer för access till defacto-standarderna Knowledge Database (KDB) och Fast Signal Database (FSDB). Dessa APIer används av tredjeparts EDA-leverantörer för att integrera avancerade state-of-the-art-verktyg och -teknologier med Verdis mjukvarumiljö för att få fram mer komplexa lösningar.
Dessutom finns det ett antal TCL-kommandon för ofta använda makrofunktioner på högre nivå som är tillgängliga för både Verdi-användare och ekosystemspartners för filaccess och anpassning av Verdis användargränssnitt.


Fig 4. Automatiskt extraherade scankedjor presenterade i Verdis grafiska gränssnitt.

VIA-plattformen är en utökning av Verdi DKP som ger slutanvändare och applikationsutvecklare möjlighet att utnyttja den kraft som finns i KDB/FSDB för datautvinning och manipulering baserat på deras specifika design/verifieringsverktyg och SoC-flödeskrav.
Som tillägg till VIA-programmeringsgränssnittet ger VIA-plattformen tillgång till OpenSource-utvecklingsverktyg, mallar/exempel för TCL-skript (Tool Command Language), förverifierade program i C/C++ samt dokumentation som hjälper till att utveckla kunnandet och underlätta produktintroduktionen.

Databasinfrastruktur
KDB innehåller information om konstruktionens struktur, hämtad från kompileringen av designkällor i HDL och lagrad i ett kompakt, binärt dataformat. Dessa designdata kan presenteras av Verdi på många olika sätt, och de används för olika avancerade avbuggningsfunktioner, t ex presentation av hierarkiträd, analys av källkod och automatisk generering av scheman.
FSDB innehåller tre typer av information: designhierarkier, användardefinierade datatyper samt ändringar av värden. Med designhierarkier menas hierarkier mellan varje ”scope” (konstruktionsenhet) och de variabler som hänför till dessa. Bland användardefinierade datatyper finns uppräkningstyp, fysisk typ, heltalstyp och andra typer som stöds av aktuella VHDL- och SystemVerilog-funktioner. Värdeändringar representeras av vågformsdata från simuleringar, inklusive tidpunkt och värde för varje ändring.


Fig 5. VIA-skript som automatiskt extraherar och verifierar anslutningen mellan olika moduler.

VIA-plattformen stöder ett kommandospråksgränssnitt för Tk- och C-baserade applikationer. Se fig 2. Nedladdning av VIA-gränssnitt, skriptverktyg och kommandobibliotek kan göras via Internet.
Undersökningar av konstruktioner, integration av flöden eller verktyg samt kontroll av designstilar och -regler är några av de vanligaste uppgifterna för applikationsutveckling med VIA-plattformen. Se processflödet i fig 3.

Scankedjor och öppna portar
Scankedjor spelar den viktigaste rollen vid test av konstruktioner. Men informationen om scankedjor registreras endast i DFT-verktygsloggarna. För att göra det möjligt att hitta och avbugga specifika scankedjor vore det värdefullt att kunna extrahera scankedjor ur DFT-loggfilen och sedan länka till relaterade scankedjesignaler i Verdi-miljön. Som visas i fig 4 kan ett VIA-skript användas för att automatiskt extrahera scankedjor ut konstruktionen och presentera dem i Verdis GUI för studium.
VIA-skriptet som illustreras i fig 5 extraherar och verifierar automatiskt anslutningen mellan olika moduler och dumpar resultatet från porten för den specificerade ”scopet”. VIA-skript kan också användas för att konvertera resultaten från CLP-kontrollerare (Conformal Low Power) till Verdi Tcl-kommandon och presentera tillhörande schemavy i Verdi-systemet.
Archie Feng, Product Marketing Manager och Thomas Li, Product Marketing Director, SpringSoft
 

Comments are closed.