Kuinka suunnitella uusi siru pienellä budjetilla
Hardware-guru Bunnie Huang kertoo avoimen lähdekoodin työkaluista, joita hän käyttää piirien suunnitteluun, ja siitä, miksi hän haluaa rakentaa oman ASIC-piirinsä
Kävimme hiljattain mielenkiintoisen keskustelun bunnie Huangin kanssa, joka on laitteistoguru ja muun muassa Chumbyn, NeTV:n ja Novena-kannettavan luoja. Hän on myös kirjoittanut Hacking the Xboxin, The Essential Guide to Electronics in Shenzhen -kirjan ja peräti kaksi erikoisartikkelia IEEE Spectrum -lehdessä.
Olimme kiinnostuneita Huangin näkemyksistä siitä, voisiko pieni, vaatimattomasti rahoitettu tiimi – vaikkapa opiskelija-asuntolassa toimiva startup-yritys – valmistaa räätälöidyn sirun samalla tavalla kuin tällaiset ryhmät luovat nykyään helposti piirilevyjen tasoisia tuotteita ja ohjelmistoja.
Etenkin ohjelmistoyritykset hyötyvät valtavasta määrästä avoimen lähdekoodin koodia, joka on käytettävissä kaupallisten tuotteiden rakentamiseen. (Eräässä tutkimuksessa todettiin, että keskimääräinen kaupallinen sovellus sisältää 35 prosenttia avoimen lähdekoodin koodia.) Halusimme saada käsityksen siitä, nauttivatko myös sirusuunnittelijat avoimen lähdekoodin rakennuspalikoiden runsaasta ekosysteemistä. Vai onko sirusuunnittelu edelleen niin suljettua ja haastavaa, että se on oikeastaan vain suurille, vakiintuneille yrityksille?
IEEE Spectrum: Miksi pieni startup-yritys ylipäätään haluaisi valmistaa oman sovelluskohtaisen integroidun piirin (ASIC)? Eikö se voisi vain käyttää kenttäohjelmoitavaa porttiryhmää (FPGA) mihin tahansa tuotteeseen, jota se hautoo?
Huang: FPGA:t ovat yleensä isoissa kömpelöissä paketeissa, ja ne kuluttavat aivan liikaa virtaa.
ASIC:t ovat ehdottoman välttämättömiä, kun valmistetaan esimerkiksi kuulolaitteita, implantoitavissa olevia tai syötävissä olevia lääkinnällisiä laitteita, eläimillä kannettavia GPS-paikantimia, mobiiliradiopuhelimia, radiotaajuustunnisteita, elektronisia onnittelukortteja tai muita kertakäyttöisiä, kertakäyttöisiä virtapiirejä.
Toinen esimerkki on WS2812-sirun sisällä oleva ajuri-IC – se on mullistanut valaistuksen, kun on voitu luoda yhden paketin RGB-LED, jossa on sisäänrakennettu sarjaprotokolla, upottamalla pieni ASIC LEDien kanssa. (Sain itse asiassa tavata kaverin, joka suunnitteli ensimmäisen kaupallisesti käyttökelpoisen vaihtoehdon tästä.)
Selvästi on siis olemassa laaja valikoima todella hyödyllisiä, teollisuutta muuttavia tuotteita, joihin FPGA:t eivät voi koskettaa – lähinnä sitä, mitä voisi kutsua ”halvoiksi, pienitehoisiksi tuotteiksi”.
Miten päättäisit, milloin käytetään FPGA:ta ja milloin ASIC:tä? Se riippuu. FPGA:t tuhlaavat paljon piitä ASIC:iin verrattuna, joten kustannusraja, joka riippuu suurelta osin sirun vaatimasta piipinta-alasta, on usein kertaluokkaa korkeampi kuin haluaisit sen olevan. Mutta ASIC:n valmistaminenkaan ei ole halpaa.
Olen itse asiassa juuri nyt keskellä tätä ansaa: Yritän rakentaa seuraavan sukupolven NeTV:tä, joka on FPGA-pohjainen videonkäsittelymoottori. ASIC:t, jotka pystyvät tällaiseen videonkäsittelyyn, maksavat alle puolet vähemmän kuin FPGA ja pystyvät tekemään parempaa työtä (siinä mielessä, että ne pystyvät käsittelemään 4K-videota, kun taas minun FPGA-ratkaisuni maksimissaan 1080p:ssä). Nykyisissä ASIC-piireissä ei kuitenkaan ole kaikkia tarvitsemiani toimintoja. Joidenkin muiden rajoitusten vuoksi minulla ei kuitenkaan yksinkertaisesti ole varaa luoda omaa ASIC-piiriä tätä tuotetta varten.
Toisessa kategoriassa ASIC-piirit ovat arvokkaita juuri toisessa ääripäässä: todella korkealuokkaisissa asioissa. Selitän asian lyhyellä anekdootilla.
Lukaisin jokin aika sitten artikkelin Googlen Tensor Processing Unitista (TPU) ja ajattelin: ”Hitto, haluan tuon”. Joten aloin tutkia FPGA:ita nähdäkseni, mitä tarvitsisi rakentaa jotain vastaavaa.
Havaitsin, että FPGA:t, jotka pystyisivät edes pitämään kynttilän kynttilän Googlen TPU:n rinnalla, maksavat useita tuhansia dollareita kukin – ja lisäksi ne vaativat ylikalliita ohjelmistolisenssejä. Jotkut suuret yritykset (kuten Microsoft) pystyivät liittoutumaan FPGA-valmistajien kanssa, ja oletettavasti Microsoft sai melko mojovan alennuksen. Se voisi siis luoda mielenkiintoisia laitteistoja FPGA:iden avulla kilpailemaan Googlen TPU:iden kanssa. Mutta näin suorituskykyisten FPGA:iden kanssa puhutaan jostain 17 000 Yhdysvaltain dollarista yhdestä sirusta, ainakin useimpien ihmisten tai yritysten kannalta.
Spectrum: Mikä on pienin summa, jonka joku voisi käyttää ASIC:n luomiseen tyhjästä? Oletetaan, että siru on hyvin yksinkertainen. Voisin kuvitella, että suuri osa kustannuksista voisi olla pelkkää suunnitteluun tarvittavaa ohjelmistoa, eikö? Ja pitäisi tietää, mitä suunnittelusääntöjä pitäisi noudattaa. Onko tällaista tietoa avoimesti saatavilla?
Huang: Tein joskus aikoinaan vähän tutkimusta tästä asiasta. On olemassa joitakin avoimen lähdekoodin työkaluja, jotka saattavat auttaa sinua siinä. ”SCMOS” suunnittelusäännöt ovat toimivimmat. Luulen, että näitä suunnittelusääntöjä Open-V yritti käyttää.
Suunnitteluohjelmistojen osalta voit käyttää Magiciin perustuvaa avoimen lähdekoodin työkaluketjua (Xcircuit, IRSIM, NetGen, Qrouter ja Qflow). Tai jos sinulla on siihen varaa, voit käyttää läheisen lähdekoodin kaupallisia tuotteita, kuten Cadencen tuotteita.
Olen käyttänyt sekä Magicin että Cadencen suunnitteluvirtoja. Henkilökohtaisesti pidin enemmän Magicin chip-layout-editorin käytöstä, mutta Cadence-ohjelmistot ovat rautaisempia, koska niitä on käytetty niin monen sirun suunnitteluun. Ja Cadencen työkalu loisresistanssin ja kapasitanssin vaikutusten simulointiin on hyvin testattu.
Tämä ei tarkoita, että sinun pitäisi käyttää Cadencea tai vastaavaa. Luulen, että voisit käyttää Magicia rakentaaksesi joitakin IC:itä, joilla on todella laajat toleranssit – sellaisia IC:itä, joita saatat löytää LED-ajureiden sisältä ja ehkä jopa kuulokojeiden kaltaisista tavaroista. RF-suunnittelu saattaa olla hieman haastavaa, koska avoimen lähdekoodin työkalut loisvaikutusten simuloimiseksi eivät ehkä ole tehtäviensä tasalla. Mutta on olemassa metodologia mallien tarkentamiseksi, jonka avulla pitäisi pystyä kehittämään onnistunut suunnittelu kahdessa tai kolmessa siruajossa.
Kaiken kaikkiaan noin 180 nanometrin teknologiasolmuun (tai noin) asti voisi päästä eroon avoimen lähdekoodin työkalujen käytöstä. Tätä pienemmät vaativat kuitenkin todella hassuja juttuja maskin kuvantamisen kanssa ja sellaisten muotojen käyttämistä, jotka eivät ole enää pelkkiä monikulmioita. Ja eri valmistajien suunnittelupaketit, joilla tämä saavutetaan, ovat yhä suljetumpia.
180 nm on aika ”iso” nykypäivän standardeilla mitattuna. Mutta jos todella haluaisit sijoittaa jonkin erikoisen yhdistelmän piirejä yhdelle piikiekolle, voisit tehdä sen näin. Ja se voisi johtaa joihinkin uudenlaisiin tuotteisiin, jotka olisivat muuten mahdottomia diskreeteillä malleilla. Kannattaa kuitenkin huomioida, että kiekkotason piirikokoonpanon (WL-CSP) avulla piirilevyintegraattorit pääsevät melko lähelle sitä, mitä saattaisit saavuttaa räätälöidyllä ASIC:lläsi.
Paljonko tuon räätälöidyn ASIC:n tekeminen maksaisi? Maskin ja sirun valmistuskustannusten arvioiminen on vaikeaa, koska hinnastot ovat luottamuksellisia. Mutta kuulemani tarinat viittaavat siihen, että yksinkertainen ASIC (vaikkapa muutaman neliömillimetrin kokoinen, 250 nm:n teknologiasolmulla valmistettu) saattaisi maksaa muutamia tuhansia dollareita parista kymmenestä näytteestä.
Tämä hinta on sen verran houkutteleva, että leikittelin aikoinaan ajatuksella valmistaa 8- tai 16-bittinen prosessori, joka olisi täysin tarkastettavissa. Se saattaisi kiinnostaa niitä todella turvallisuustietoisia ihmisiä, jotka haluavat olla varmoja, ettei heidän käyttämässään mikroprosessorissa ole mitään hassua. Ajattelin, että tällaisen laitteen valmistaminen maksaisi muutaman tuhat dollaria. Se on verrattavissa minkä tahansa tuotteen kehittämiskustannuksiin. Ja se on varmasti bootstrappingin rajoissa.
Spectrum: Okei, sanotaan, että pieni startup-yritys käyttää ilmaisia suunnittelutyökaluja ja löytää tarpeeksi rahaa tehdäkseen ainakin muutaman sirun tuotantoerän. Pystyisivätkö suunnittelijat käyttämään avoimen lähdekoodin piirisuunnitelmia rakennuspalikoina, kuten ohjelmistokehittäjät rutiininomaisesti tekevät?
Huang: Tällä hetkellä on olemassa melko kohtuullinen kokoelma vapaita ja avoimia piirilohkoja, jotka on määritelty rekisterinsiirtotasolla (RTL), jota tavallisesti käytetään digitaalisten sirujen suunnittelussa. Tämä sisältää RISC-V-mikroprosessorin, mutta myös lm32:n, mor1kx:n ja niin edelleen kaltaisia malleja.
Tässä on myös melkoinen määrä ”wishbone-yhteensopivia” malleja, kuten Ethernet-siltoja ja UARTeja. OpenCores-projektissa on aika kohtuullinen lista tällaisista lohkoista, joista osa on jopa sisällytetty ASIC-piireihin (suurin osa tosin kohdistuu FPGA:ille).
Sekasignaalien ja analogisten osalta avoimet mallit ovat aika vähissä. Jännittävää Open-V:ssä oli heidän halukkuutensa avata ja jakaa analogisia ja sekasignaalisia lohkoja. Näitä malleja ei voi soveltaa edistyneempiin valmistusteknologian solmuihin, mutta ainakin ”SCMOS”-alueella on kohtuulliset mahdollisuudet saada malleista toimivia siruja.
Voi tosin kestää kauan, ennen kuin on olemassa hyvä joukko analogisia ja sekasignaalisia suunnittelulohkoja, joita on testattu ASIC-piireissä, valitettavasti. Muita asioita, joita ei ehkä koskaan saada aidosti saataville avoimen suunnittelun kautta, ovat muistilohkot kuten SRAM, DRAM, flash ja sähköisesti ohjelmoitavat sulakkeet. Tämä johtuu siitä, että näiden asioiden toteuttaminen vaatii intiimiä prosessituntemusta – tietoa, jota siruja valmistavat valimot eivät ehkä koskaan julkaise.
Kaikki sanottuna: Pieni toimija voisi varmasti suunnitella oman ASIC:nsä ja teettää sen vain kekseliäisyydellä ja muutamalla tuhannella dollarilla. Mutta se ei pystyisi luomaan hienostunutta suunnittelua tai käyttämään huipputeknologian solmua.