Foto: Vi hade nyligen ett intressant samtal med bunnie Huang, hårdvaruguru och skapare av bland annat Chumby, NeTV och den bärbara datorn Novena. Han är också författare till Hacking the Xbox, The Essential Guide to Electronics in Shenzhen och inte bara en utan två artiklar i IEEE Spectrum.
Vi var intresserade av Huangs åsikter om huruvida ett litet, blygsamt finansierat team – till exempel ett nystartat företag på en studentbostad – skulle kunna tillverka ett skräddarsytt chip, på samma sätt som sådana grupper numera enkelt skapar produkter och programvaror på styrelsegrad.
Mjukvaruföretag drar särskilt nytta av den stora mängd kod med öppen källkod som finns tillgänglig för att användas för att bygga kommersiella produkter. (En studie visade att den genomsnittliga kommersiella applikationen innehåller 35 procent öppen källkod). Vi ville få en uppfattning om huruvida chipkonstruktörer också åtnjuter ett rikt ekosystem av byggstenar med öppen källkod. Eller är chipdesign fortfarande så sluten och så utmanande att den egentligen bara är till för stora, etablerade företag?
IEEE Spectrum: Varför skulle ett litet nystartat företag vilja tillverka en egen applikationsspecifik integrerad krets (ASIC) i första hand? Kunde man inte bara använda en fältprogrammerbar grindmatris (FPGA) för den produkt man kläckte?
Huang: FPGA:er kommer i allmänhet i stora klumpiga paket och förbrukar alldeles för mycket ström.
ASIC:er är absolut nödvändiga för att tillverka saker som hörselhjälpmedel, medicintekniska apparater som kan implanteras eller ätas, GPS-spårare som ska bäras av djur, mobilradioapparater, RFID-apparater, elektroniska hälsningskort eller andra engångskretsar för enstaka ändamål.
Ett annat exempel är drivkretsen i WS2812-chippet – den har revolutionerat belysningen genom att man kan skapa en RGB-lysdiod i ett enda paket med ett inbyggt seriellt protokoll genom att bädda in en liten ASIC tillsammans med lysdioderna. (Jag fick faktiskt träffa killen som konstruerade den första kommersiellt gångbara varianten av detta.)
Det finns alltså definitivt ett brett spektrum av riktigt användbara, branschförändrande produkter som FPGA:er helt enkelt inte kan röra – främst det som man skulle kunna kalla ”billiga, strömsnåla grejer”.
Hur skulle du avgöra när du ska använda en FPGA och när du ska skapa en ASIC? Det beror på. FPGA:er slösar bort en stor mängd kisel jämfört med en ASIC, så kostnadsgolvet, som till stor del beror på den yta av kisel som krävs för chipet, är ofta en storleksordning högre än vad du skulle vilja ha. Men det är inte heller billigt att tillverka en ASIC.
Jag är faktiskt mitt uppe i den här fällan just nu: Jag försöker bygga nästa generation av NeTV, som är en FPGA-baserad videoprocessor. De ASIC:er som kan utföra sådan videobearbetning kostar mindre än hälften så mycket som en FPGA och kan göra ett bättre jobb (eftersom de kan bearbeta 4K-video, medan min FPGA-lösning har en maxgräns på 1080p). Men de befintliga ASIC:erna har inte alla funktioner som jag behöver. På grund av vissa andra begränsningar har jag helt enkelt inte råd att skapa en egen ASIC för den här produkten.
En annan kategori av saker som ASIC:er är värdefulla för ligger i motsatt ände av spektrumet: de riktigt avancerade sakerna. Låt mig förklara med en kort anekdot.
För ett tag sedan läste jag artikeln om Googles Tensor Processing Unit (TPU) och tänkte: ”Fan, den vill jag ha”. Så jag började titta på FPGA:er för att se vad som skulle krävas för att bygga något med motsvarande kapacitet.
Jag upptäckte att FPGA:er som ens skulle kunna börja hålla ett ljus mot Googles TPU kostar många tusen dollar vardera – och dessutom krävs det överdrivet dyra programvarulicenser. Vissa stora företag (som Microsoft) kunde samarbeta med FPGA-tillverkare, och förmodligen fick Microsoft en ganska rejäl rabatt. Microsoft skulle alltså kunna skapa intressant hårdvara med hjälp av FPGA:er för att konkurrera med Googles TPU:er. Men med sådana kapabla FPGA:er talar man om något i stil med 17 000 US-dollar för ett enda chip, åtminstone för de flesta människor eller företag.
Spectrum: Vad är det minsta man kan spendera för att skapa en ASIC från grunden? Anta att chipet är mycket enkelt. Jag kan tänka mig att en stor del av kostnaden kan vara bara för programvaran för att konstruera det, eller hur? Och man måste veta vilka konstruktionsregler som ska uppfyllas. Finns sådan information öppet tillgänglig?
Huang: Jag gjorde lite forskning om detta en gång i tiden. Det finns några verktyg med öppen källkod som kanske kan hjälpa dig att komma dit. Konstruktionsreglerna för ”SCMOS” är de mest användbara. Jag tror att det är dessa konstruktionsregler som Open-V försökte använda.
När det gäller konstruktionsprogram kan du använda en verktygskedja med öppen källkod baserad på Magic (Xcircuit, IRSIM, NetGen, Qrouter och Qflow). Eller, om du har råd, kan du använda kommersiella produkter med nära källkod, som de från Cadence.
Jag har använt både Magic och Cadence designflöden. Personligen gillade jag att använda Magic’s chip-layouteditor mer, men Cadence-programvaran är mer järnhård, eftersom den har använts för att designa så många chip. Och Cadences verktyg för att simulera effekterna av parasitmotstånd och kapacitans har varit väl genomtänkt.
Det betyder inte att du behöver använda Cadence eller liknande. Jag tror att man skulle kunna använda Magic för att bygga en del integrerade kretsar som har riktigt breda toleranser – den typ av integrerade kretsar som man kan hitta i LED-drivrutiner och kanske till och med i saker som hörapparater. Det kan vara en liten utmaning att göra RF-design, eftersom verktygen med öppen källkod för att simulera parasitära effekter kanske inte klarar av uppgiften. Men det finns en metodik för att förfina modeller som borde göra det möjligt att utveckla en framgångsrik konstruktion på två eller tre chipkörningar.
Som sagt, ner till omkring 180-nanometertekniken (eller så) kan man komma undan med att använda verktyg med öppen källkod. Mindre än så kräver dock att man gör riktigt lustiga saker med maskbildningen och använder former som inte längre bara är enkla polygoner. Och konstruktionssatserna från olika leverantörer för att åstadkomma detta blir mer och mer slutna.
180 nm är ganska ”stort” med dagens mått mätt. Men om man verkligen vill placera en speciell kombination av kretsar på en enda kiseldiod kan man göra det på det här sättet. Och det skulle kunna leda till en del nya produkter som annars skulle vara omöjliga med diskreta konstruktioner. Var dock medveten om att WL-CSP (Wafer-level chip-scale packaging) gör det möjligt för integrerare av tryckta kretskort att komma ganska nära vad du skulle kunna åstadkomma med din skräddarsydda ASIC.
Hur mycket skulle det kosta att tillverka den skräddarsydda ASIC:n? Det är svårt att uppskatta kostnaden för mask- och chiptillverkning eftersom prislistorna är konfidentiella. Men de berättelser jag har hört tyder på att en enkel ASIC (säg en som är några kvadratmillimeter stor och tillverkad med 250-nm-tekniken) kan kosta några tusen dollar för ett par dussin exemplar.
Det priset är tillräckligt lockande för att jag en gång lekte med tanken på att tillverka en 8- eller 16-bitars CPU som skulle vara helt inspekterbar. Det skulle kunna tilltala de riktigt säkerhetsmedvetna personer som vill vara säkra på att det inte finns något konstigt i den mikroprocessor de använder. Jag tänkte att det skulle kosta mig några tusen dollar att låta tillverka en sådan sak. Det kan jämföras med kostnaden för att utveckla vilken produkt som helst, egentligen. Och det ligger säkert inom ramen för bootstrapping.
Spectrum: Okej, låt oss säga att ett litet nystartat företag använder gratis designverktyg och hittar tillräckligt med pengar för att göra åtminstone ett par chiptillverkningar. Skulle konstruktörerna kunna använda sig av kretsdesigns med öppen källkod som byggstenar, på samma sätt som programvaruutvecklare gör?
Huang: För närvarande finns det ett ganska rimligt förråd av fria och öppna kretsblock som är specificerade på registeröverföringsnivå (RTL), vilket är vad som normalt används vid konstruktion av digitala chip. Detta inkluderar RISC-V-mikroprocessorn men även konstruktioner som lm32, mor1kx och så vidare.
Det finns också en ganska stor mängd ”wishbone-kompatibla” konstruktioner, inklusive saker som Ethernet-bryggor och UARTs. OpenCores-projektet har en ganska rimlig lista över sådana block, varav en del till och med har införlivats i ASIC:er (det mesta är dock inriktat på FPGA:er).
När det gäller blandade signaler och analoga är öppna konstruktioner ganska sällsynta. Det spännande med Open-V var deras vilja att öppna och dela analoga och blandade signalblock. Dessa konstruktioner kan inte tillämpas på mer avancerade tekniska tillverkningsnoder, men åtminstone inom ”SCMOS”-området finns det en rimlig chans att konstruktionerna kan omvandlas till fungerande chip.
Det kan dock dröja länge innan det finns en bra uppsättning analoga och blandade signalkonstruktionsblock som har testats i ASIC:er, tyvärr. Andra saker som kanske aldrig blir riktigt tillgängliga genom öppna konstruktioner är minnesblock som SRAM, DRAM, flash och elektriskt programmerbara säkringar. Detta beror på att dessa saker kräver ingående processkunskap för att kunna exekveras – kunskap som de foundries som tillverkar chip kanske aldrig kommer att släppa.
Allt att säga: En liten aktör skulle säkert kunna konstruera sin egen ASIC och få den tillverkad med inget annat än lite uppfinningsrikedom och några tusen dollar. Men den skulle inte kunna skapa en sofistikerad konstruktion eller använda en avancerad teknikknut.