En emulator erbjuder snabba prototyper redan på systemnivå. Asic och applikationsprogram kan samsimuleras tidigt i konstruktionsflödet.
Många asickonstruktörer har fjärilar i magen när kretsen godkänns för tillverkning. Kommer asicen att fungera? Är den tillräckligt noggrant verifierad? Svaret är dessvärre ofta nej. Drygt varannan asic med mer än 50 000 grindar fallerar och måste göras om, vilket kan kosta hundratusentals kronor och försinka projektet med flera månader.
Oddsen för lyckat kisel blir sämre ju större krets det är frågan om. I alla fall så länge man använder traditionella verktyg som hårdvaruacceleratorer och simulatorer. De är för långsamma helt enkelt.
Nio av tio fungerar direktDå är en hårdvaruemulator ett vassare alternativ. Hela 90 procent av alla emulerade kretskonstruktioner fungerar korrekt redan vid första kiselförsöket. Det hävdar i alla fall emuleringsjätten Quickturn. Och då talar de faktiskt om asicar med mer än 250 000 grindar.
Hjärtat i en emulator består av ett eller flera kort med matriser av programmerbara logiska kretsar. För att emulera exempelvis en asic laddar man ner sin konstruktionsbeskrivning i dessa kretsar.
Beskrivningen kan vara en nätlista efter layout eller högnivåkod på registernivå eller grindnivå. Sedan simulerar man mot den emulerade asicen i stället för mot sin beskrivning.
Snabbt men långt från realtidMarknadens emulatorer brukar klara mellan 1 och 5 MHz. Det är alltså knappast realtid men ändå upp till en miljon gånger snabbare jämfört med traditionella simulatorer.
Man kan därför köra såväl tilllämpningsprogram som simuleringsprogram för maskinvaran direkt på den emulerade kretsen. På så vis kan man avlusa både asicen och tillämpningsprogrammen långt innan kretsen tillverkas.
Att tillämpningsprogrammen används vid asicverifieringen är ett stort plus. Konstruktören slipper då ta fram testvektorer, ett gissel vid simulering. Med olämpliga testvektorer kan man missa fel i kretsen - och vilken konstruktör är spiksäker på att testvektorerna verkligen är heltäckande?
En annan hake med traditionella verktyg är att simuleringshastigheten sjunker rejält när antalet grindar ökar. Verifieringshastighet vid emulering är däremot nästintill oberoende av konstruktionens storlek.
Ett alternativ till emulering är naturligtvis att bygga prototypkretsar. Men emulatorn erbjuder betydligt bättre felsökningmöjligheter eftersom man kommer åt konstruktionens innanmäte. Verifieringen kan dessutom göras mycket tidigare i konstruktionsarbetet.
Analogt och asynkront
Emulatortillverkarnas lovord till trots - många konstruktörer är ändå tveksamma. Emulatorn är ju mellan 10 och 100 gånger långsammare än målsystemet. Hur går det då med analoga gränssnitt?
Analoga kretsar som fungerar oberoende av frekvensen är inget problem. De frekvenskänsliga analogvarianterna, exempelvis analoga faslåsta slingor och passiva filter, måste man däremot ta hänsyn till. Antingen kan man isolera dem från emulatorn eller försöka få dem att arbeta vid lägre frekvenser. Ibland kan man strunta helt i att verifiera dessa analoga delar, särskilt om de fungerat i tidigare produkter.
En annan knivig emulatorsituation kan uppstå i gränssnittet mellan synkrona och asynkrona konstruktioner. Ett exempel är en videotillämpning med synkrona och asynkrona delar som måste gå i vissa givna hastigheter enligt MPEG2-standarden.
För att klara emuleringen kan man då exempelvis buffra ramarna mellan den långsamma emulatorn och den snabbare kringutrustningen.
Marknadens emulatorer kostar oftast mer än 500 000 kronor. Det kanske låter dyrt, men en ny asicvända blir förmodligen ännu mer kostsam om man räknar med produktförseningen.
Charlotta von Schultz
Tidigt möte mellan program- och maskinvaraKör programmen på simulerad maskinvara innan den byggs! Det är tanken bakom Mentors nylanserade verktygsmiljö Seamless CVE.
I dagens projekt upptäcker man ofta fel först på sluttampen, när systemet integreras och testas. Alltför ofta är det gränssnittet mellan maskin- och programvara som spökar.
- Nästan 50 procent av vår dyrbara utvecklingstid kan gå åt till integrationen, säger Mark Noneman från Nokia Mobile Phones.
Med Mentors nykomling räknar man nu med att minska antalet gränssnittsfel och korta den totala utvecklingstiden rejält. Nokiakonstruktörer har redan testat verktyget, och hittills verkar det lovande.
Finessen är att såväl maskinvarukonstruktörer som programmerare kan analysera systemet långt innan maskinvaran är byggd. Applikationsprogrammen samkörs mot en konstruktionsbeskrivning på grind-, register- eller beteendenivå. Eventuella problem upptäcks då tidigt i konstruktionsarbetet, när det fortfarande är relativt lätt att rätta till missförstånden.
Sammanhållande länkGrundtanken är att programmerare och maskinvarukonstruktörer skall kunna använda de verktyg de är vana vid. Seamless CVE, där CVE står för Co-Verification Environment, är den sammanhållande länken. Logiksimulatorer från exempelvis Mentor och Cadence förenas med hjälpmedel ur Mentordottern Mictrotecs produktportfölj, som Xray Debugger, ett programmeringsverktyg för utveckling och felsökning.
Mentor erbjuder även ett antal programvarumodeller för processorer från exempelvis Texas Instruments, Motorola, Intel och ARM.
Seamless närmaste konkurrent torde vara Eagle-i från verktygsleverantören Eagle. Men Mentor poängterar att Seamless hanterar C, C++ samt assemblerkod med samma instruktionsuppsättningssimulator.
Företaget lanserar dessutom en ny strategi - Integrated Systems Design Strategy - med tydlig fokusering på systemnivåkonstruktion, återanvändning av kod samt samverifiering av program- och maskinvara.
Charlotta von Schultz