Všetko čo sme doteraz robili – kreslili schémy, nastavovali atribúty – smerovalo k jednému cieľu – k použitiu netlisteru. Netlister je nástroj, ktorý dokáže s našou schémou urobiť niečo užitočné. Vytvoreniu DPS sa budeme venovať na inom mieste, tu si popíšeme princíp netlistera a jeho použitie k niektorým každodenným úlohám.
Koncept netlister
Netlister je nástroj, ktorý vezme jednu alebo viac schém, spracuje ich a vytvorí užitočný výstup. Netlister je koncipovaný ako univerzálny nástroj – jednotlivé funkcie (nazývané backend) sú vytvorené ako skripty vo funkcionálnom jazyku scheme a je možné kedykoľvek pridať ďalší typ spracovania alebo výstupu.
Netlister (gnetlist) má v súčasnosti definovaných 37 výstupov. Niektoré z nich samostatne nemajú veľký význam a iba spolu s ďalšími výstupmi vytvárajú zmysluplný výstup. Napríklad program gsch2pcb využíva tri výstupy na prípravu PCB: PCB na vytvorenie netlistu, pcbpins na vytvorenie príkazového súboru na premenovanie vývodov a gsch2pcb na vytvorenie predlohy DPS.
Nebudeme sa venovať všetkým. Väčšina z nich je zdokumentovaná (viac alebo menej) na http://www.geda.seul.org/wiki/geda:documentation. Tu sa pozrieme iba na možnosť kontroly správnosti našej schémy a na prípravu zoznamu súčiastok. Ako príklad použijeme nasledujúcu (dosť nezmyselnú) schému:
Kontrola správnosti schémy
Prvým typom kontroly je kontrola, či sú prepojené všetky súčiastky tak, ako majú byť. Pri tejto kontrole môžme netlister využiť na to, aby nám vytvoril netlist v čitateľnej a zrozumiteľnej podobe. V tomto netliste môžme skontrolovať zapojenie, môžme skontrolovať či sú prepojené správne siete a či náhodou nie sú prepojené aj siete, ktoré nemajú byť prepojené.
Netlister spustíme príkazom:
gnetlist -g geda -o test.log test.sch
Parametrom -g geda určujeme typ výstupu – v tomto prípade typ geda predstavuje netlist určený pre ľudské oko. Parameter -o test.log určuje výstupný súbor, do ktorého sa výstup zapíše. Ak neurčíme výstupný súbor, vytvorí sa výstupný súbor s názvom output.net. Nakoniec vymenujeme všetky súbory, ktoré tvoria schému. Netlister spracováva viac vymenovaných súborov ako by to bola jedna schéma.
Takto vyzerá výstup, vytvorený z našej schémy (kompletný výpis súboru test.log):
START header gEDA's netlist format Created specifically for testing of gnetlist END header START components U1 device=7400 Q1 device=BC847 R4 device=R0217 R3 device=R0805 R2 device=R0805 R1 device=R0805 END components START renamed-nets NET1 -> NET2 END renamed-nets START nets NET4 : U1 9, U1 4 NET3 : U1 6, U1 3 GND : U1 7, Q1 1, R4 2 Vcc : U1 14, Q1 3, R3 2 unnamed_net1 : R2 1, R1 1 NET2 : U1 2, U1 5, U1 10, Q1 2, R4 1, R2 2, R3 1, R1 2 END nets
Kontrola elektrickej správnosti
Druhým typom kontroly je kontrola elektrickej správnosti (DRC – Design Rule Check). Táto kontrola preverí, či nedochádza k elektrickým konfliktom v zapojení. Tento typ kontroly vyžaduje precízne pripravené symboly, hlavne piny musia mať správne nastavený atribút pintype. Ďalej táto kontrola odhalí nezapojené piny, siete kde sú všetky piny vstupné a podobne.
Kontrolu je možné čiastočne ovplyvniť špeciálnymi symbolmi, ktoré majú nastavený atribút device=DRC_Directive. Viac o týchto symboloch nájdete v článku gEDA: Tvorba symbolov pre gEDA.
Kontrolu spustíme príkazom:
gnetlist -g drc2 -o test.log test.sch
A takto vyzerá výstup (opäť kompletný výpis súboru test.log):
Checking non-numbered parts... Checking duplicated references... Checking nets with only one connection... Checking pins without the 'pintype' attribute... Checking type of pins connected to a net... ERROR: Net NET4 is not driven. ERROR: Pin(s) with pintype 'output': U1:6 U1:3 are connected by net 'NET3' to pin(s) with pintype 'output': U1:6 U1:3 Checking unconnected pins... ERROR: Unconnected pin U1:1 ERROR: Unconnected pin U1:8 Checking slots... Checking duplicated slots... Checking unused slots... WARNING: Unused slot 4 of uref U1 Found 1 warnings. Found 4 errors.
Vidíme, že v našej schéme máme veľa chýb:
- Sieť NET4 prepája iba vstupné symboly
- Máme natvrdo spojené výstupy hradiel (sieť NET3)
- Máme niekoľko nezapojených vstupov a výstupov
- Zo súčiastky, ktorá má 4 sloty sme použili iba 3 – pri návrhu DPS bude toto mať hradlo nepripojené vstupy a výstupy
Samozrejme, žiadna kontrola nám neodhalí zlý návrh – napríklad v našej schéme (odhliadnuc od jej celkovej nezmyselnosti) chýba prívod napájania (nejaký konektor alebo terminály).
Zoznam súčiastok
Najprv musíme zadefinovať, ktoré atribúty sa majú do zoznamu súčiastok zahrnúť. Okrem štandardných zdokumentovaných atribútov môžme do zoznamu zahrnúť aj atribúty, ktoré sme si zadefinovali sami, napríklad skladové číslo, objednávacie číslo, dodávateľa, triedu presnosti a podobne.
Atribúty, ktoré chceme zahrnúť do zoznamu uvedieme v súbore attribs. Tento súbor sa musí nachádzať v pracovnom adresári, odkiaľ spúšťame netlister. Atribúty môžu byť vymenované v jednom riadku alebo každý na novom riadku. Typický súbor attribs vyzerá takto:
device value
Všimnite si, že atribút refdes nie je uvedený. Ten sa totiž zobrazí vždy, takže nie je potrebné ho uvádzať
Teraz môžme spustiť vytvorenie zoznamu. Máme dva typy zoznamov. Prvý typ, jednoduchší, získame príkazom:
gnetlist -g bom -o test.bom test.sch
V súbore test.bom nájdeme zoznam súčiastok:
refdes device value U1 7400 unknown Q1 BC847 BC847 R4 R0217 1k R3 R0805 1k R2 R0805 1k R1 R0805 5k
Všimnime si, že každá súčiastka je na zvlášť riadku. Ak by sme chceli zoznam, v ktorom budú všetky súčiastky s rovnakými atribútmi zhrnuté na jednom riadku a bude tam uvedený ich počet (čo je trochu obvyklejší spôsob), môžme si vytvoriť zoznam súčiastok druhého typu:
gnetlist -g bom2 -o test.bom test.sch
V súbore test.bom nájdeme zoznam súčiastok v takomto tvare:
refdes:device:value:qty R1:R0805:5k:1 R2,R3:R0805:1k:2 R4:R0217:1k:1 Q1:BC847:BC847:1 U1:7400:unknown:1
Tento zoznam nie je síce pekne čitateľný, ale vieme si ho poľahky upraviť.
Pokiaľ nechceme niektorú súčiastku v zozname súčiastok, pripojme k jej symbolu atribút nobom=1. To ju vyradí zo zoznamu. U -g bom2 stačí existencia atribútu nobom. U -g bom musí mať hodnotu nobom=1 – ak má inú hodnotu, tak sa súčiastka do zoznamu zaradí. Takže univerzálnym riešením je pripojiť atribút nobom=1 alebo atribút nedefinovať.
Text „unknown“ zodpovedá situácii, ak sa daný atribút pri symbole nenachádza. Riešením je nahradenie tohoto textu vo vygenerovanom výstupe alebo pridaním neexistujúceho atribútu (programom gattrib je to rýchlo a bez problémov) – v našom prípade pridáme k súčiastke U1 atribút value=- (ku komponentu so slotom slot=1).
Posledná poznámka k výstupnému súboru: ak špecifikujeme ako výstupný súbor „–“ (-o –), výstup sa vypíše na obrazovku miesto do súboru. Toto ale platí len pri zozname súčiastok (bom aj bom2).
Zdroj
http://geda.seul.org/wiki
http://www.geda.seul.org/wiki/geda:gnetlist_ug