Hlavní navigace

Fedora Electronic Lab: návrh elektroniky v Linuxu

12. 5. 2010
Doba čtení: 10 minut

Sdílet

Návrh elektroniky (Integrated Circuit Design) je finančně náročný, nicméně lze ho již léta dobře dělat i na Linuxu. Pole otevřeného software pro samotný vývoj se ale dá označit za oblast „zde jsou lvi“. Dá se tedy elektronika doopravdy dělat (nebo aspoň vyučovat) na Linuxu a otevřeném software?

Mnoho zkratek pro nic:

  • ICD - Integrated Circuit Design - návrh integrovaných obvodů
  • OS - obligátní Open Source nebo Operační Systém
  • FEL - Fedora Electronic Lab
    • Jediná distribuce se zaměřením na OS pro ICD?
    • Aktivní SIG - vytvoření kompletní platformy, opravy, úpravy SW, podpora projektů
    • http://spins.fedoraproject.org/fel/

Open source je obecně celkem dobře zastoupen v celém spektru software. Existují ale oblasti, kde do značné míry stále dominuje software uzavřený. Jednou z nich je, a to celkem paradoxně, oblast návrhu elektroniky a mikroelektroniky, kde proprietární software tvoří značnou část ceny práce (řádově miliony Kč). Otázkou je, čím je dána tak vysoká cena a zda každý, kdo chce elektroniku vyvíjet, potřebuje takový software. Přesně z tohoto důvodu se v projektu Fedora ustavila skupina (SIG - special interest group) zaměřující se na sdružení software pro tuto oblast a rozhýbání jejího vývoje - výsledkem je tzv. Fedora spin - FEL (Fedora Electronic Library), který je toho času mně jediná známá distribuce s tímto zaměřením.

Elektronika vs. µelektronika

Elektronika
  • plošné spoje (PCB)
  • schemata a diskrétní obvody
Mikroelektronika
  • analogové IC
  • digitální IC
  • programovatelná pole

Jen krátká odbočka, o čem je řeč - elektronikou pojmenovávám hmatatelnou oblast, v podstatě to, co si mnozí představí pod tímto pojmem, jako telefony, přehrávače atd. Tato se kromě líbivého obalu skládá zpravidla z PCB a součástek - ať už diskrétních nebo tzv. integráčů (integrovaných obvodů). Mikroelektronikou rozumím oblast návrhu oněch "integráčů".

obrázek
  • Paradox univerzitního software
  • Komerční software = licenční džungle
  • Oblast otevřeného software - téměř neznámá

Jak jsou na tom tyto dvě oblasti a proč paradoxně? V první řadě vysvětlím ten paradox. Je nepopiratelnou pravdou, že většina myšlenek na poli vývoje software pro mikroelektroniku pochází z univerzit - namátkou jmenujme obecně velmi dobře známý SPICE - simulátor analogových obvodů, nebo různé syntetizátory digitální logiky založené na SIS. Důvodem je to, že naprostá většina programů pro mikroelektroniku je založena na matematice, logice a fyzice. Nejedná se tedy o obvyklý software na přehazování dát z jedné hromady na druhou. Univerzitní software se často díky otevřeným licencím stává základem otevřeného software. Proto by člověk očekával, že open source na tom v této oblasti bude celkem dobře.

Bohužel faktem i zde zůstává, že akademické prostředí sice dokáže vytvářet a implementovat zajímavé myšlenky, jejich rozšíření mimo akademickou obec se ale musí ujmout komerční subjekt. Tak je tomu i zde. Situace ovšem není nejhorší - pro výuku existují v open source dostatečně použitelné alternativy k drahým komerčním nástrojům. Opět bohužel, školy stále provádějí přípravu studentů spíše stylem "naučíme je klikat ve Wordu", místo "naučíme je, jak a proč se formátuje text". A tak na většině univerzit najdeme nainstalovány kompletní balíky software prodávaného komerční sféře za astronomické sumy. Studenty v omezeném výukovém čase v podstatě nevyužitelný. Poté přijdou do praxe a jsou do značně míry dezorientováni v jiném SW a často i licenční problematikou, která je okolo software v této oblasti přímo obludná, protože mnohdy licencuje i jednotlivé funkce aplikace.

Opusťme pole kritiky a nahlédněme, co pro nás OS v tomto směru má. Nejdřív je potřeba si rozdělit oblasti, na které se chceme koukat. Pro elektroniku to je v podstatě kreslení schémat a desek plošných spojů, případně simulace diskrétních obvodů. Pro mikroelektroniku se oblast rozpadá na dvě podskupiny, a to digitální a analogovou oblast. V té digitální máme dál ještě obvody rozdělené na programovatelná hradlová pole a zákaznické obvody. (Rozdělení není nikterak univerzální.)

Co nabízí OS?

PCB a schémata

Jak jsme na tom v oblasti PCB a schémat? Celkem dobře. Tohle je totiž oblast otevřenému software velmi blízká - kutilové a hračičkové, kteří vytvářejí zapojení, desky a přístroje. Typickým příkladem takového přístroje je např. takový LeaveMeAloneBox - názorná ukázka:

Takovéto a mnohem hodnotnější aplikace jistě není problém vytvářet v programu Kicad pocházejícím z jedné francouzské univerzity.

obrázek

Schéma, deska a vizualizace PIC programátoru v Kicadu

V Kicadu si můžete nakreslit schémata, s nimi propojené desky plošných spojů a navíc si můžete udělat i 3D vizualizaci desky - což je něco, co jsem u komerčních nástrojů zatím neviděl - ale možná jsem jen neměl licenci. Nakolik je tento program použitelný? Stejně jako mnohé komerční nástroje. Druhou možností v této oblasti je skupina nástrojů gEDA. Do této kategorie nástrojů patří i nejrůznější simulátory a programátory pro jednochipy a různé mikrokontrolery až procesory - zpravidla nikoli x86. Jejich vývojová prostředí jsou většinou založena na Eclipse a při troše znalosti hardware už se jedná do značné míry o prosté programování.

µelektronika - analog

  • schemata - kicad, xcircuit, fped
  • simulace - ngspice, gnucap, Irsim, qucs - modely
  • layout - Magic
  • DRC - Magic
  • extrakce a LVS - Magic + netgen
  • GDS - Magic
  • alternativy - Electric, Toped
obrázek

Layout hradla nor3 v programu magic

Přesuňme se do složitější oblasti, k návrhu mikroelektronických obvodů. Již jsem zmiňoval programy vycházející ze SPICE. Těch je spousta pod různými licencemi. Pro nás zdá se nejpoužitelnější ngspice s BSD licencí. SPICE se původně používal především jako simulátor diskrétních obvodů, dnes se ale používá i pro simulace integrovaných obvodů, a to především analogových. Vše v něm je otázkou správných modelů součástek. Tím jsem načal téma, které je pro obvodařinu velmi důležité a pro open source poměrně nepříznivé - modely, resp. knihovny prvků a součástek. Pokud totiž chcete dělat jakýkoli návrh, u něhož očekáváte, že bude tzv. vypálen do křemíku, potřebujete knihovny prvků, nejlépe i s jejich layoutem - tedy vzorem, který odpovídá technologii továrny, která bude obvod vyrábět. Pokud bychom měli být až oškliví, dá se říci, že veškeré kreslení schémat a simulace jsou zbytečná věc, pokud dokážete z hlavy nakreslit rovnou layout, neboli podklad pro továrnu k vypálení křemíku, nemusíte se s ničím jiným obtěžovat. "A na layout vám v podstatě stačí GIMP nebo Inkscape." - pokud by uměly export do GDS (viz dále).

Faktem zůstává, že většina editorů schémat a layoutů jsou pouze grafické editory (mnohdy dost mizerné) s přidanými funkcemi, které tomu, co kreslíte, přidělují funkce vrstev, resp. součástek. Každopádně pro studijní účely není zpravidla nutné škádlit fabriku a požadovat po ní modely pro váš nástroj - stejně byste je nedostali, vystačíte s lambda modely a programem Magic. Bohužel značná část programů z této oblasti vypadá poněkud archaicky, což nutno říci do nedávna platilo i pro mnohé komerční aplikace. Jejich vzhled je dán použitým toolkitem, který v této oblasti dominoval a stále dominuje - Tcl/Tk. Magic je dokonce výtvorem stejného autora jako Tcl. Program Magic je tedy layout editor s možností zpětně extrakce netlistu - tedy popisu obvodu nakresleného v obdélníčcích layoutu. Netlist pak můžete zpětně simulovat ve SPICE, Gnucap nebo Irsimu - všechny jsou součástí FEL.

Magic zvládne i DRC - tedy design rule check - kontrolu, že vytvořený layout neporušuje pravidla pro danou technologii. V podstatě dělá to, že kontroluje vzdálenosti obdélníčků. Další úrovní problémů je LVS - layout versus schematic - kontrola, že schéma obvodu vyextrahované z layout odpovídá tomu, které jste původně nakreslili. Opět máme k dispozici OS nástroj - netgen, který "schémata" dokáže porovnat. Pokud všechno sedí a nikdo si nestěžuje víc než je zdrávo, stačí z Magicu uložit GDS, což je jeden z malá formátů, který je téměř univerzálně používaný všemi nástroji napříč komerčním i OS světem, a již nic nebrání vaše dílo zvěčnit v křemíku. (Snad jen cena jednoho běhu skrz továrnu, na kterou byste si museli připravit řádově tisíce EUR.)

Tím jsme probrali letem světem kapitolu bližší návrhu analogových struktur, zbývá nám oblast návrhu digitálních struktur.

µelektronika - digital

  • HDL - GHDL, Icarus Verilog, Verilator, (Alliance)
  • dump - GtkWave, dinotrace, (DrawTiming)
  • RTL, syntéza - Alliance
  • PAR - Alliance
  • DRC, layout, GDS - Alliance
  • Modely pharosc nebo vendor PDK
obrázek

Nedokončený layout ALU amd2901 v GRAALu z balíku Alliance

U něj se většinou vychází z popisu v některém programovacím jazyce pro hardware jako VHDL nebo Verilog. Pokud jste příznivci především příkazořádkového systému, vystačíte si pro návrh, simulaci a ověření s vaším oblíbeným editorem a kompilátorem např. GHDL, který v podstatě přeloží VHDL do Cčka a pak zkompiluje pomocí GCC (stejný postup používají i některé komerční nástroje!). Pro zobrazování průběhů pak existuje spousta různých aplikaci jako GTKwave apod. Tím ovšem práce na digitálních strukturách nekončí, abyste je dotáhli na křemík, musíte provést syntézu a place and route (rozmístění a pospojování cestičkami) a samozřejmě layout. Pro tento účel se asi nejzajímavější jeví Alliance CAD, taktéž francouzské univerzitní provenience, který je poměrně komplexní sadou nástrojů pro tento účel.

Zde je nutno upozornit na jednu věc - všechny tyto nástroje jsou naprosto dostačující, pokud se je rozhodnete používat v akademickém prostředí. Ovšem nečekejte, že vezmete zdrojové kódy původně napsané pro specifický komerční nástroj a prostě je proženete OS nástroji a dostanete stejný výsledek. Zpravidla narazíte už na začátku při překladu HDL jazyka, protože buď váš kód obsahuje struktury specifické pro daný nástroj, nebo OS nástroj neimplementuje kompletní standard jazyka. Nicméně opakuji - pokud je budete používat pro výuku, jsou mnohdy vhodnější než komerční nástroje, protože ukazují celou strukturu procesu i s detaily, na rozdíl od klikacích udělátek, kde kliknete na Simulate, Syntesize, PAR a tím máte vystaráno. (Tedy do té doby, než nastane zádrhel, při kterém je potřeba zjistit, co se děje.)

Ještě bych chtěl rozvinout jednu oblast, a to je zmíněná příkazová řádka. Většina nástrojů v oblasti návrhu a vývoje IC, včetně těch komerčních, má příkazové rozhraní. V komerčním světě se nám ho ale čím dál víc snaží schovat. Pamatuji si ještě doby, kdy nás na škole nutili kreslit jakési modely v AutoCadu. Brzo mě přestalo bavit tahat po stole myš a naučil jsem se používat přímé příkazy pro kreslení, pozicování apod. Bylo to takové malé okénko úplně dole. Nevím, zda tam je dodnes. AutoCad už jsem dlouho neviděl, ale osobně si myslím, že bez příkazového řádku nejde návrh obvodů vůbec dělat, protože klikání je v podstatě nezdokumentovatelné a nereprodukovatelné. Zde si myslím, že mají OS nástroje navrch, ať už použitím Tcl/Tk místo proprietárního makro jazyka, nebo prostou možností jejich volání z příkazové řádky. Věřte tomu nebo ne, ale některé komerční nástroje mají dodnes problém s verzováním zdrojových souborů (záměrně neříkám kódu, protože ne vždy jde o kód) a jsou naprosto nepřipravené ke spolupráci s CVS, SVN apod.

µelektronika - FPGA

Nejtěžší oblast pro OS
  • Návrh a verifikace bez problémů
  • Syntéza, PAR atd. proprietární - závislé na architektuře FPGA, střežené IP výrobce
    • Existují standardy + základní implementace PAR pro Xilinx v Icarus Verilogu
    • Altera - MAP (Odin), PAR v podstatě není
  • Existují aspoň nástroje dostupné zdarma, ale nikoli OS

Vraťme se k designu, zbývá nám část o FPGA. Zde je na tom OS asi nejhůř. Přesněji - v oblasti návrhu, simulace a verifikace problém není. Problém nastává v oblasti syntézy a dále. Důvod je jasný - každá společnost vyrábějící programovatelná pole používá jiný přístup, logiku je potřeba skládat z jiných makrobloků, které jsou mnohdy intelektuálním vlastnictvím daných společností. Zde nevidím příliš prostor pro OS, i když existují základní implementace pro PAR Xilinx v Icarus Verilogu a univerzitní projekt Odin pro MAP (především Altera). Základní nástroje jsou naštěstí dostupné aspoň zdarma u výrobců FPGA.

Okrajové oblasti

Existují i další oblasti vážící se k elektronice. Jednou z nich je např. podpora výrobců mikroelektroniky pro otevřený software. Mnoho výrobců dnes nabízí vývojové kity, jejichž součástí je často i software. Samotná vývojová prostředí jsou dnes často založena na Eclipse (např. TI), mnoho SDK je založeno na Linuxu.

Zajímavá je i oblast otevřeného HW (openmoko, touchbook), která má ovšem své specifické problémy, např. s licencováním, ale především s výrobou. Doba, kdy byste si mohli nechat kusově vyrobit HW za rozumnou cenu, zřejmě jen tak nenastane. Jinak je to v oblasti otevřených kódů popisujících HW. Zde jsou možnosti podobné jako u SW. Příklady lze nalézt na opencores.org.

Poslední oblastí, která do praktické elektroniky zasahuje spíše okrajově, je Octave. Octave je software pro matematické výpočty a modelování s jazykem hodně podobným Matlabu (do značně míry kompatibilní). K jeho spuštění stačí linuxová konzole a gnuplot.

Nevýhoda je, že k němu neexistuje takové množství knihoven a doplňků jako k Matlabu. Za výhodu bych označil, že studenti nemohou zdaleka tak snadno opisovat z webu.

CS24_early

Závěrem

Z napsaného jasně plyne, že nástroje pro vývoj elektroniky existují. Pro akademické prostředí, malé firmy nebo kutily by neměl být velký problém si tyto nástroje osvojit. Nedostatkem zůstává kompatibilita s komerčními nástroji, která ale v této oblasti není vždy nutná.

Text vychází z obsahu přednášky podané na konferenci LinuxExpo 2010.

Byl pro vás článek přínosný?

Autor článku