Kopioi artikkelin PDF-versio

Ohjelmoitavilla nopeasti markkinoille

FPGA

Ohjelmoitavia logiikkapiirejä on mahdoton käyttää ilman asianmukaista suunnitteluohjelmaa. Ohjelmia tarjoavat piirivalmistajien lisäksi niihin erikoistuneet suunnitteluohjelmistojen tuottajat. Katsastimme alan tarjonnan ja selvitämme miten FPGA-piirin suunnittelu etenee nykyohjelmilla.

Ohjelmoitavien FPGA-piirien sovellusalueet ovat paljolti samat kuin ASIC-piirien, tarkemmin sanottuna porttimatriisipiirien. Niinpä on luonnollista että FPGA- ja ASIC-suunnittelussa käytetään paljolti samoja työkaluja. Tarjolla on sekä tiettyä piirivalmistajan tuotteita tukevia että kattavampia useiden piirivalmistajien tuotteita tukevia ohjelmistoja.

Miten suunnittelu menee?

Suunnittelu etenee kummassakin tapauksessa aluksi samaa rataa. Vasta aivan loppuvaiheessa tiet eroavat. FPGA-piiri on jo valmistettu, ja vain piirin komponenttien väliset yhteydet on vielä määriteltävä.

ASIC-piirissä sen sijaan tarvitaan sovitusta jonkin valmistajan prosessiin, mikä periaatteessa on epävarmempaa lopputuloksen toimivuuden suhteen. ASIC-piireille on lopuksi tulostettava valmistusmaskien geometriset tiedot, joiden teollisuusstandardin mukaiset tiedostoformaatit ovat GDSII ja CIF.

FPGA-piireille ei tarvita valmistusmaskeja, vaan suunnittelutyön lopputulos on ohjelmointitiedosto, jota käyttäen piiri ohjelmoidaan. SRAM-tyyppiset FPGA-piirit ohjelmoidaan piirilevyllä, ja tiedot on syötettävä aina uudelleen joka kerta kuin piirin käyttöjännite kytketään päälle. Antisulaketyyppiset FPGA-piirit sen sijaan ohjelmoidaan vain kerran ja tähän tarvitaan erityinen ohjelmointilaite.

Koska ASIC-piireissä on suuret aloituskustannukset, on ensiarvoisen tärkeää että niiden oikea toiminta voidaan varmistaa jo ennen ensimmäisen piirin valmistusta. Varmistus tapahtuu pääasiassa perusteellisella simuloinnilla suunnittelun eri vaiheissa.

FPGA-piirin kuvaaminen

Suunnittelutyön ensimmäinen vaihe on suunniteltavan FPGA-piirin kuvaaminen. Elektroniikassa perinteinen kuvausmenetelmä on piirikaavio, jossa kutakin toiminnallista kokonaisuutta vastaa tietty graafinen symboli.

Uudempi menetelmä muistuttaa ohjelmointia siinä, että kuvaus on kokonaan tekstimuotoinen. Laitteiston toiminnan ja rakenteen kuvaukseen käytetään formaalista kuvauskieltä, aivan samoin kuin ohjelmointikielellä kuvataan ohjelmien toimintaa ja tietorakenteita.

Useimmat FPGA-suunnittelujärjestelmät antavat mahdollisuuden käyttää kumpaakin menetelmää erikseen tai yhdessä. Menetelmän valinta on enimmäkseen makuasia, mutta muutamat käytännön seikat on syytä pitää mielessä.

Piirikaavioesitys on havainnollinen rakenteen kuvauksessa, mutta esimerkiksi monimutkaisen tilakoneen kuvaaminen graafisilla symboleilla ja niiden välisillä johtimilla on piirikaaviolla sangen hankalaa.

Kuvauskielellä on helppo kuvata toimintoja kuten tilakoneita ja aritmeettisia funktioita, mutta signaalit ja liitännät eivät ole yhtä selvästi näkyvissä kuin piirikaaviossa. Suuresta kuvauskielisestä tekstitiedostosta ei ole helppoa havaita mihin kaikkiin paikkoihin tietty signaali kulkee.

Usein käytetään yhdistettyä, hierarkkista kuvausta missä kuvauskielellä esitetyt lohkot määritellään symboleiksi piirikaaviossa. Monimutkaiset toiminnot voidaan lyhyesti ja ytimekkäästi kuvata muutamalla rivillä kuvauskieltä, ja lohkojen liitännät piirin muihin lohkoihin ilmenevät selkeästi piirikaaviosta.

Piirikaavioesityksen suurin haitta on rajoitettu siirrettävyys. Suunniteltua piiriä on hankala siirtää toisen valmistajan suunnittelujärjestelmään, koska kussakin piirikaavio-ohjelmassa on omat, yhteensopimattomat symbolikirjastot.

Jonkin verran on tarjolla muunnosohjelmia piirikaavioesityksestä toiseen, mutta pahimmassa tapauksessa piirikaavio on piirrettävä uudestaan. Standardoidut kuvauskielet VHDL ja Verilog ovat sen sijaan yhtä yleiskäyttöisiä kuin esimerkiksi C-ohjelmointikieli. Näillä kielillä kuvattu piiri voidaan pienin muutoksin siirtää minkä tahansa valmistajan siruun.

Parhaimmissa ja kalleimmissa suunnittelujärjestelmissä on tarjolla apuohjelmat jotka muuntavat piirikaavioesityksen VHDL- tai Verilog-kuvaukseksi ja päinvastoin. Tästä ovat esimerkkinä VIEWlogic-ohjelmiston apuohjelmat sym2vhdl ja vhdl2sym.

Toinen yleistyvä trendi on graafinen kuvauskieliohjelmointi, esimerkiksi Mentor Graphicsin Galileo-ohjelmisto. Tällöin toiminnot kuvataan parhaiten soveltuvilla graafisilla menetelmillä, esimerkiksi tilakoneet tilakavioilla. Ohjelma generoi sitten graafisesta kuvauksesta VHDL-kielisen kuvauksen simulointia ja logiikkasynteesiä varten.

Standardoitujen kuvauskielien lisäksi varsinkin CPLD-piirien suunnittelussa on käytetty joidenkin valmistajien omia kieliä. Tavallisin näistä on Data I/O:n Abel, joka usein sisältyy halpoihin aloituspaketteihin tavallisimmin osana Synario-suunnittelujärjestelmää.

Ohjelmoitavien piirien merkittävä valmistaja Altera on määritellyt AHDL-kielen, jota paljon käytetään Alteran omassa suunnitteluohjelmistossa. Nämä epästandardit ohjelmointikielet ovat yksinkertaisempia ja helpompia omaksua kuin VHDL ja Verilog, mutta eivät ole yhtä monipuolisia. Siirrettävyydessä on sama ongelma kuin piirikaavioissakin.

Toimiiko piiri?

Piirin kuvauksessa tulee helposti virheitä. Koska ASIC-piireissä kukin prototyyppikierros on hyvin kallis, käytetään merkittävä osa suunnitteluresursseista piirin verifiointiin. Tällä pyritään varmistamaan jo ennen piirin valmistusta että suunniteltu piiri on vaatimusten mukainen.

FPGA-piireissä ennakkoverifointi ei ole aivan yhtä kriittinen seikka, koska piirit voidaan ohjelmoida uudestaan. Piirin toimintaa voi siis ilman suurempia kustannuksia testata lopullisessa sovelluksessa. Poikkeuksen muodostavat antisulaketyyppiset FPGA-piirit, jotka ovat kertakäyttöisiä.

ASIC-suunnittelun tarpeiden seurauksena simulointiohjelmien kehittelyyn on panostettu erittäin paljon. Erityyppisiä simulointiohjelmia on tarjolla kaikkiin suunnittelun vaiheisiin.

Jos piiri on kuvattu piirikaaviolla, siitä tulostetaan kytkentälista, jonka simulointiohjelma lukee. Tiedonsiirto piirikaaviosta simulaatioon ei kuitenkaan aina ole täysin ongelmatonta, varsinkin jos simulaatio-ohjelma on eri valmistajalta. Muiden etujensa lisäksi standardoitu kuvauskieli helpottaa myös simulointia, koska jokseenkin kaikki simulaattorit osaavat niitä lukea. VHDL- ja Verilog-kielten alkuperäinen päätarkoitus olikin piirien simulointi, kun taas logiikkasynteesi oli aluksi vähemmän tärkeää. Kielissä on useita rakenteita erityisesti simulointia varten.

Piirisuunnittelun eri vaiheissa käytetään erityyppistä simulointia. Alussa, kun piirin toiminta ja rakenne kuvataan piirikaaviolla tai kuvauskielellä, käytetään toiminnallista simulaatiota. Tämän tarkoitus on varmistaa että piiri on suunniteltu toiminnallisesti oikein, välittämättä siitä toimiiko piiri riittävän nopeasti. Yksinkertainen toiminnallinen simulaattori sisältyy kaikkiin halvimpiinkin kehitysohjelmistoihin.

Monimutkaisissa piireissä on tärkeää simuloida eri lohkojen toimintaa erikseen. Koko piiriä simuloitaessa voi olla hankala päätellä missä lohkossa havaitut oireet aiheuttava virhe sijaitsee. Järjestelmätason virheet, johtuen esimerkiksi lohkojen välisistä virhekytkennöistä, on helpompi löytää jos on olemassa jonkinasteinen varmuus siitä että yksittäiset lohkot toimivat oikein.

Logiikkasynteesi

Piirin kuvauksen ja toiminnan tarkistuksen jälkeen seuraa logiikkasynteesi, jossa piirin kuvauksesta kehitetään piirin ohjelmointia varten tarvittava tiedosto. Tämä on nykyisissä järjestelmissä automaattinen operaatio, jonka suunnittelija vain käynnistää. Kaikesta huolimatta eri ohjelmistoissa on huomionarvoisia eroja.

Logiikkasynteesissä eräs peruskysymys on tehokkuus, joka tässä tarkoittaa pääasiassa sitä, kuinka pienellä määrällä logiikkaportteja haluttu toiminto voidaan toteuttaa. Kun eri synteesiohjelmilla kehitetään samasta kuvauksesta ohjelmointikoodi samaa FPGA-piiriperhettä varten, saattaa ohjelmalla A toteutettu piiri vaatia selvästi enemmän portteja kuin ohjelmalla B toteutettu piiri. Synteesiohjelma B on tässä tapauksessa tietenkin parempi.

Yleensä paras logiikkasynteesin tehokkuus saadaan piirikaavioesityksestä, joka perustuu piirivalmistajan omiin, optimoituihin makroihin. Toiminnallinen VHDL- tai Verilog-koodi on erittäin abstraktia, ja tästä syystä sitä ei yleensä suoraan käytetä synteesiin. Sen sijaan rakenteellinen RTL-koodi on useimmiten synteesin lähtökohtana, mutta ei nykyisellä ohjelmien tasolla yleensä johda yhtä tiiviiseen lopputulokseen kuin esimerkiksi piirikaavioesitys.

Automaattisen logiikkasynteesiohjelman vastine tavallisessa ohjelmoinnissa on sovelluskehitin tai CASE-työkalu. Näitä käytetään, mutta toistaiseksi ihminen on etevämpi kuin kone näissä asioissa.

Parhaissa ASIC- ja FPGA-kehitysjärjestelmissä on automaattisten toimintojen lisäksi tarjolla erilaisia manuaalisia välineitä joilla esimerkiksi voidaan erikseen määritellä kriittisten signaalien reititys tai eri lohkojen sijoitus piisirulle (floorplanner). Näiden käyttö valitettavasti edellyttää suunnittelijalta suurta kokemusta sekä työkalujen ja mikropiiriarkkitehtuurin asiantuntemusta. Suunnitteluvälineiden käytön opetteluun kuluu varsinkin alkuvaiheessa enemmän aikaa kuin varsinaiseen suunnittelutehtävään.

Parhaat työkalut tarjoavat sopivan sekoituksen automatiikkaa ja manuaalista käyttöä. FPGA-piireissä sisäiset viiveet ja siten koko piirin toiminta riippuu voimakkaasti siitä, kuinka eri solut yhdistetään toisiinsa. Sama toiminto voidaan toteuttaa hyvin monella eri tavalla. Ajoitusvaatimusten ohjaama synteesiohjelma on silloin arvokas apuväline. Siinä suunnittelija antaa esimerkiksi maksimiviiveet joillekin signaaleille ja synteesiohjelma automaattisesti reitittää signaalit siten että tavoite saavutetaan.

Toinen mainio apuväline on parametroitava funktiokirjasto. Kirjasto sisältää makrot yleisille toiminnoille kuten laskurit ja rekisterit, ja suunnittelija ainoastaan ilmoittaa toteutuksen parametrit kuten rekisterin bittimäärän ja kellotaajuuden. Ohjelma huolehtii automaattisesti lopusta.

Ajoitusten tarkistus

Logiikkasynteesin jälkeen seuraa varsinainen ajoitussimulaatio. Tässä tarkistetaan että piiri toimii riittävän nopeasti eri tilanteissa. Perusteellinen simulaatio voi olla hyvin aikaa vievää. Ajoitussimulaatio on tärkeämpää FPGA-piireille kuin CPLD-piireille, joiden viiveet ovat paremmin ennakoitavissa. FPGA-piireissä on välttämätöntä tarkistaa piirin toimivuus synteesin jälkeen.

ASIC-piireissä on välttämätöntä simuloida piiri mahdollisimman perusteellisesti ennen ensimmäisen piirin valmistusta. FPGA-piireissä ei ole samaa välttämättömyyttä, koska SRAM-tyyppiset piirit voidaan ohjelmoida kuinka monta kertaa hyvänsä.

Antisulakepiirit ovat kertaohjelmoitavia, mutta tässäkin tapauksessa virheellinen suunnittelu ei aiheuta sellaisia kustannuksia kuin ASIC-piireissä. Siten FPGA-piirit voidaan periaatteessa helposti testata lopullisessa sovelluksessa ja korjata ohjelmointia mikäli ongelmia ilmenee.

Kaikesta huolimatta ajoitussimulaation käyttö yleistyy myös FPGA-piireissä. Testaus piirilevyllä kyllä ilmaisee toimiiko piiri vai ei, vaikka tyhjentävä testaus voi olla käytännössä hankala toteuttaa. Sen sijaan virheellisen toiminnan oireista voi olla erittäin vaikea päätellä missä piirin osassa virhe piilee.

Piirin sisäisiin signaaleihin ei yleensä ole pääsyä, poikkeuksen muodostavat kuitenkin JTAG- eli IEEE 1149.1-testausliitännällä varustetut piirit. Virheiden paikantaminen voi olla aikaa vievää ja tästä syystä myös FPGA-piireillä on syytä varmistaa suunnitelman virheettömyys etukäteen. Siksi simulaatiosta on paljon hyötyä myös FPGA-piirien toiminnan verifioinnissa, ja tarjoaa siinä joukon mahdollisuuksia joita ei ole käytettävissä piirilevyllä tapahtuvassa testauksessa.

Viiveet piirin eri osissa ovat simulaatiossa paremmin näkyvissä kuin piirin I/O-nastoista mittaamalla. Tämä tietenkin edellyttää hyviä piirimalleja, ja kunnolliset, porttitason ja liitäntöjen viiveet huomioivat ajoitussimulaatio-ohjelmat ovat varsin kalliita. Esimerkiksi Cypress tarjoaa Warp2-kehitysohjelmiston kanssa käytettäväksi ajoitussimulaattoria, jonka hinta on noin kuusituhatta markkaa. Tämä on kuitenkin edullinen hinta porttitason viivesimulaattorille.

Muutostarpeen huomioiminen

Jos on tarve muuttaa piirin ohjelmointia, joko testauksessa havaittujen virheiden korjaamiseksi tai laitteen toiminnallisten vaatimusten muuttuessa sen elinaikana FPGA-piirien edut tulevat näkyviin. Ohjelmoitavat logiikkapiirit ovat periaatteessa ihanteellisia tällaisissa tapauksissa, ja koko muutoksesta selvitään parhaassa tapauksessa pelkästään lataamalla piiriin uusi ohjelma.

Nämä edut saavutetaan kuitenkin vain FPGA-piireillä joissa on riittävät sisäiset reititysresurssit. Piirin liitäntänastojen järjestys joudutaan usein lyömään lukkoon jo ennen piirin testausta, jotta piirilevysuunnittelu voisi edetä rinnakkain FPGA-suunnittelun kanssa. Mikäli piirin muutokset vaativat nastajärjestyksen muuttamista, ovat muutoskustannukset olennaisesti suuremmat.

Laaja ohjelmisto- tarjonta

Suunnittelutyökalujen johtavat valmistajat kuten Mentor, Cadence ja Synopsys ovat jo pitkään tarjonneet integroituja kehitysympäristöjä ASIC-suunnittelua varten. Näissä ohjelmistoissa on tehokkaat työkalut piirin kuvaamiseen, logiikkasynteesiin ja simulointiin.

Näitä mentorin, Cadencen ja Sunopsysin ohjelmistoja voidaan käyttää myös FPGA-piirien kehittämiseen, haittana on kuitenkin tällaisten kehittyneiden ohjelmistojen korkea hinta. Alunperin nämä ohjelmistot toimivat ainoastaan Unix-ympäristössä, mutta yhä useampi ohjelmisto on nykyään siirretty Windows NT:hen.

Suurien yritysten lisäksi varsinkin Yhdysvalloissa on lukuisia pieniä yrityksiä, jotka ovat erikoistuneet tarjoamaan pitkälle kehitettyjä työkaluja suunnitteluprosessin eri osia varten. Varsinkin VHDL- ja Verilog-simulaattoreita on paljon tarjolla, samoin graafisia VHDL- ja Verilog-koodigeneraattoreita. Useimmat näistä pienyrityksistä ovat Suomessa varsin tuntemattomia ja muutamaa lukuunottamatta yhteydet pitää hoitaa suoraa Yhdysvaltoihin.

Lisäksi useimmat piirivalmistajat tarjoavat halpoja tai jopa kokonaan ilmaisia aloituspaketteja pyrkien tällä tavoin madaltamaan kynnystä juuri heidän piiriensä käyttöönotolle. Halpa hinta on saavutettu mikropiirivalmistajan subventiolla, joka tässä tapauksessa voidaan rinnastaa normaaleihin markkinointikuluihin.

Näiden piirivalmistajakohtaisten työkalujen ei kuitenkaan haluta kilpailevan kalliimpien suunnitteluohjelmistojen kanssa. Tästä johtuen aloituspaketeissa on monenlaisia rajoituksia. Ne tukevat yleensä vain muutamaa kyseisen valmistajan piiriä, eikä lainkaan muiden valmistajien tuotteita. Tuetut piirit ovat tavallisesti CPLD-tyyppisiä eikä FPGA-piirejä. Simulaattorit ovat erityisen kalliita työkaluja, joten halvat työkalupaketit ovat tässä suhteessa sangen vaatimattomia.

Yksi hintaansa nähden parhaita aloituspaketteja on Cypressin Warp2. Alle kuusisataa markkaa maksavaan ohjelmistoon sisältyy tuki kaikille Cypressin CPLD-piireille. Piirin kuvaus tapahtuu standardinmukaisella VHDL-kielellä. Hintaan sisältyy myös VHDL-oppikirja.

Useat valmistajat tarjoavat myös täysin ilmaisia työkaluja. Antisulaketyyppisiä FPGA-piirejä valmistavan Actelin kotisivulta Internetissä voi hakea Designer Lite-ohjelmiston. CPLD-piirien valmistaja Lattice tarjoaa ilmaista CD-ROM-datakirjaa, johon sisältyy Synario-pohjainen suunnitteluympäristö. Myös Motorola, Philips ja Vantis tarjoavat ilmaisia suunnitteluohjelmia joko kotisivuiltaan tai CD-ROM:lla.


FPGA vai ASIC?

Elektroniikan yleinen kehityssuunta on kohti yhden sirun järjestelmiä, siis kohti yhä laajempaa integrointia. Tästä on seurauksena sovelluskohtaisten ja asiakaskohtaisten mikropiirien voimakkaasti lisääntyvä käyttö.

Toinen kehityssuunta on kohti lyhyempiä tuotekehitysjaksoja. Tämä seikka puolestaan on johtanut ohjelmoitavien logiikkapiirien lisääntyvään käyttöön.

ASIC-piirit ovat halvin tapa toteuttaa jokin toiminto, mutta niiden haittana ovat suuret kertaluonteiset aloituskustannukset ja ensimmäisten piirien pitkä toimitusaika. Ohjelmoitavien piirien etu taas on se, että ne saadaan käyttöön välittömästi eikä aloituskustannuksia ole.

Ohjelmoitavia piirejä käytetään yhä suuremmassa määrin prototyyppivaiheessa ja ensimmäisissä tuotantosarjoissa. Ellei sarjan koko ole kyllin suuri kuolettamaan ASIC-piirien kiinteät kustannukset, täytyy koko tuotannon perustua ohjelmoitaviin piireihin.

CPLD ja FPGA:n erot

Ohjelmoitavat piirit laajana alueena voidaan jakaa karkeasti kahteen ryhmään. CPLD-piirit ovat karkearakenteisempia ja niitä käytetään enimmäkseen korvaamaan useita tavanomaisia 74-perheen logiikkapiirejä. FPGA-piirit ovat hienojakoisempia ja siten enemmään varsinaisten ASIC-piirien kaltaisia.

CPLD-piireissä sisäinen rakenne on enemmän kuin FPGA-piireissä etukäteen määritelty ja muodostuu pääosiltaan rekistereistä, joita syöttää ohjelmoitava porttimatriisi. Piirien käyttäytyminen, esimerkiksi signaaliviiveet yhdestä nastasta toiseen, ovat suuressa määrin etukäteen arvioitavissa.

FPGA-piiri muodostuu sen sijaan koostuu suuresta joukosta pieniä soluja, joissa voi olla vain yksi kiikku ja muutaman tulosignaalin porttipiiri. Solut voidaan yhdistää toisiinsa lukemattomilla eri tavoilla.

FPGA-piirieillä voidaan CPLD-piirejä joustavammin toteuttaa erilaisia toimintoja. Tästä johtuen toiminnan painopiste, koskien sekä uusien piirien tarjontaa että myös sovelluksia, on varsin voimakkaasti FPGA-piireissä. Toisaalta, juuri joustavuudestaan johtuen FPGA-piirit ovat "vaikeampia" suunnittelun kannalta ja vaativat raskaamman sarjan työkaluja.


Miten valmistajaversiot eroavat?

Useat piirivalmistajat tarjoavat halpaan hintaan rajoitettua versiota jonkin valmistajan kehitysympäristöstä, tavallisimmin ViewLogicin ohjelmiston pohjalta. Tällaiset järjestelmät tarjoavat kaikki kehittyneiden ohjelmistojen edut, mutta niihin ei voi hankkia kirjastoja muiden valmistajien piireille. Halpaversioita voidaan siten käyttää vain tietyn valmistajan piireille.

Muutamat CPLD- ja FPGA-piirien valmistajat ovat alusta alkaen tarjonneet aivan omaa kehitysympäristöään, ensimmäisenä Altera Max+Plus II-ohjelmistollaan. Myös Actel ja Vantis ovat lähteneet samalle linjalle tarjoten kehittyneitä työkaluja kohtuuhintaan.

Piirivalmistajien omat työkalut ovat aina edullisempia hinnaltaan kuin vastaavat yleiskäyttöiset ohjelmistot, koska puolijohdevalmistajan päämääränä on saada voittoa piireistä eikä työkaluista.

Toinen etu valmistajan omissa työkaluissa tulee siitä, että valmistaja tietenkin tuntee omat piirinsä parhaiten. Tästä syystä valmistajan omat kehitysvälineet voivat antaa parhaan tuloksen esimerkiksi logiikkasynteesissä. Uusien piirien tullessa markkinoille on niihin yleensä nopeimmin tarjolla tukea juuri valmistajan omassa ohjelmistossa.