Autorouter představuje v návrhu desky plošných spojů jednu z důležitých částí návrhového programu. Automaticky propojuje vývody součástek plošnými spoji podle informací o jejich zapojení v tzv. netlistu ze schématu. Původní, velmi jednoduché algoritmy, byly časem nahrazeny důmyslnými postupy při pokládání spojů, takže mnohé desky lze dnes propojit zcela automaticky. Přes všechen pokrok v algoritmech není ale vždy možné autorouter použít, záleží na konkrétním typu zapojení. Tak např. mnohá analogová zapojení, spínané napájecí zdroje nebo obvody s DDR pamětí nezbývá než propojit ručně. Zatímco autorouter se vždy snaží položit co nejkratší spoj, zkušený návrhář desky navíc zohledňuje i mnohé další důležité okolnosti. Nicméně dobrá znalost fungování autorouteru a jeho možností dovolí jeho maximální využití a tím i rychlejší položení spojů.
Dnešní autoroutery kombinují více typů algoritmů, které se navzájem doplňují. Všechny začínají s nejsnazší variantou položení spoje a pokud použitá metoda nevede k cíli, postupně uplatňují další způsoby.
Nejjednodušší autoroutery pokládají plošné spoje na předdefinovaný rastr na volných místech desky. Můžeme si je představit jako kanály pro pokládání spojů. Jakmile autorouter spoj na desku položí, nedokáže ho již odstranit. Pokud vyčerpá všechny volné kanály dříve, než položí veškeré spoje, není schopen dále pokračovat a deska nebude zcela propojena. Na větších a složitějších deskách není autorouter bez použití více vrstev schopen zajistit 100% propojení.
Tento typ autorouteru dokáže v případě potřeby překážející spoj odstranit (Ripup) a na jeho místo položit spoj jiný. Odstraněný spoj se potom pokouší položit někam jinam (Reroute, Retry). Tímto způsobem je již zajištěna vysoká pravděpodobnost úplného položení všech spojů. Může se ale stát, že pro odstraněný spoj už není v dané části desky volné místo. Autorouter tak začne odstraňovat další a další spoje a celý proces se může zacyklit. S úspěšným Ripup-Reroute autorouterem přišel již koncem 80. let pan Bartels z Mnichova. Pod názvem Superouter se dodával s většinou tehdejších návrhových programů.
Při pokládání spojů dokáže Push-Shove autorouter překážející spoj odsunout stranou, čímž vznikne potřebná mezera. Aby udělal místo novému spoji, může se odsunovaný spoj odhodit i přes pájecí plošky a otvory. Sám si přitom dělá volné místo odsunutím dalších překážejících spojů. V horní části obr. 1 je vidět první položený spoj. Díky položení dalšího spoje je pak tento spoj odsunut směrem doprava nahoru přes pájecí plošku atd. Tento princip byl již koncem 80. let uplatněn např. v autorouteru Maxroute od americké firmy Massteck. Podobně jako Superouter měl i Maxroute napojení na různé návrhové systémy DPS.
Obr. 1 Odsunutí překážejícího spoje
Dnešní moderní autoroutery kombinují všechny známé způsoby pokládání spojů. Jejich vlastní algoritmus je navádí při výběru spojů, kterým se mají postupně věnovat. Většinou začínají širšími spoji (např. napájení), potom přecházejí na sběrnice a teprve nakonec přijdou na řadu zbývající spoje. Protože je obtížné najít vhodné řešení pro položení všech spojů najednou, prochází autorouter jednotlivými spoji na desce ve vlnách (passes). Autorouter začne určitým spojem, položí ho na volné místo na desce, přejde na další spoj a postup opakuje. Na začátku, kdy je na desce dostatek volného místa, to jde jednoduše a rychle. Ve chvíli, kdy pro nedostatek místa nemůže autorouter daný spoj položit, použije k uvolnění zablokovaného prostoru ripup-reroute nebo push-shove metodu. Pokud se mu ani potom nepodaří daný spoj položit, přejde na další spoj. Když autorouter postupně projde všechny spoje, opakuje své postupy v dalších vlnách, kdy se pokouší položit dosud nezapojené spoje s větší a větší intenzitou. Počet nezapojených spojů se tak snižuje, až jsou všechny spoje na desce položeny (nebo alespoň všechny ty, které položit lze).
Autorouter skončí svoji činnost buď po položení všech spojů nebo po vyčerpání všech možností, jak zapojit nedokončené spoje. Výsledkem jsou sice položené spoje, ale ty nejsou většinou v optimálním stavu, protože bývají zbytečně dlouhé a mají příliš mnoho via otvorů. Proto se provádí ještě tzv. optimalizace routování, kdy autorouter znovu prochází spoj po spoji a snaží se je zkrátit a minimalizovat počet via otvorů. Aby byl zajištěn co nejlepší výsledek, tento proces se provádí opět v opakujících se vlnách. Optimalizace většinou automaticky navazuje na autoroutování, ale bývá možné ji i vypnout nebo naopak spustit zcela samostatně. V případě optimalizace desky s nepoloženými spoji se na desce uvolní místo, takže má smysl opět spustit autorouter, aby chybějící plošné spoje dokončil.
Skutečnost, že SMT součástky mají pájecí plošky umístěné pouze na jedné straně desky, komplikuje autorouteru tažení plošných spojů. Na rozdíl od klasických součástek s průchozím vývodem zde není možné při zahájení tažení spoje vybrat jednu či druhou stranu desky (nebo některou z vnitřních vrstev), ale pouze jednu stranu desky. Tento nedostatek se eliminuje použitím tzv. fanout, tj. krátkými plošnými spoji vyvedenými z pájecích plošek SMT součástky a zakončenými via otvory. Fanout provádí autorouter zcela na začátku před vlastním autoroutováním, takže pro připojení SMT pájecí plošky jsou potom k dispozici také všechny vrstvy desky. Pokud se takto vytvořené via otvory nevyužijí během procesu routování, autorouter je na konci své činnosti odstraní. Praktické provedení fanoutu bývá možné nastavit, např. s ohledem na směr tažení spoje (ven/dovnitř součástky nebo kombinací obou směrů). Protože fanout může být někdy nežádoucí, jeho použití lze většinou povolit nebo zakázat. Fanout lze obvykle provést buď pro všechny nebo jen určité spoje součástky např. napájení atd.
První autoroutery pokládaly plošné spoje na předdefinovaný rastr (např. 25 mils), který zajišťoval potřebnou izolační mezeru pro danou šířku spoje. Tato metoda se postupem času ukázala jako nevýhodná, protože nedovolovala využít veškeré dostupné místo na desce. Při tažení spoje v diagonále jsou mezery mezi spoji větší než při vertikálním či horizontálním tažení, a to i při stejně velkém rastru. Navíc se při souběžném použití součástek s metrickými a palcovými rozměry jen stěží najde vhodný společný rastr pro tažení spoje k vývodům nebo mezi nimi. Zmenšování velikosti rastru nevedlo k cíli, protože velká síť bodů rastru výrazně zvyšovala nároky na velikost paměti autorouteru a současně zpomalovala proces routování.
Obr. 2 Fanout SMT součástky
Východiskem bylo zavedení tzv. bezrastrového (gridless) pokládání spojů, kdy autorouter bere v úvahu pouze dodržení předepsaných izolačních mezer a ne rastr, po kterém by musel spoj táhnout. Aby tak mohlo být učiněno, bylo potřeba přijít i s novou metodou ukládání výsledků do paměti autorouteru. Tak vznikl tzv. shape-based autorouter, který si informace o desce a položených spojích ukládá formou tvarů (shape) s rozměry překážek a spojů. Typickými bezrastrovými autoroutery byly v 90. letech např. Specctra nebo Pads BlazeRouter (dnešní PADS Router). Rozdíl mezi pokládáním spojů na rastr nebo bez rastru je na obr. 3. V horní části jsou spoje položeny na rastru, zatímco ve spodní části jsou položeny bezrastrově jen na izolační mezery. Je zde jasně patrné, že při bezrastrovém routování jsou spoje kratší a zabírají na desce menší plochu.
Obr. 3 Grid/gridless routování
Některé spoje vyžadují zvláštní přístup k položení plošného spoje. Bývají to např. diferenciální páry nebo spoje s předepsanou délkou. Některé autoroutery proto umožňují definování parametrů i pro takovéto spoje. U diferenciálních párů, kde oba spoje musí být taženy vedle sebe a se stejnou délkou, lze např. nastavit, zda se spoje mohou rozdělit kvůli obcházení překážky a kolikrát to mohou udělat. U spojů s předepsanou délkou, včetně diferenciálních párů, dokáže pro dosažení potřebné délky autorouter spoje zakličkovat (PADS Router – obr. 4).
Obr. 4 Diferenciální pár s předepsanou délkou
Dnešní autoroutery táhnou spoje v kolmém směru (ortogonálně) i diagonálně, některé navíc i pod libovolným úhlem. Ostré rohy kolmých spojů nejsou z hlediska přenosu signálu žádoucí. Tažení spojů pod jakýmkoliv úhlem je nezbytné v případě propojení součástek s vysokou hustotou vývodů nebo tam, kde je potřeba dosáhnout co nejkratších délek plošných spojů (PADS Router – obr. 5).
Obr. 5 Spoje tažené pod libovolným úhlem
Specctra, jeden z nejlepších autorouterů všech dob, je mezi ostatními autoroutery tak trochu výjimečný, a tak si zaslouží se o něm stručně zmínit. Když pánové John Cooper a David Chyan koncem 80. let neuspěli u firmy Mentor Graphics se svojí představou o moderním autorouteru, odešli a založili vlastní firmu Cooper & Chyan Technology (CCT), kde autorouter Specctra vytvořili.
Specctra pokládá spoje odlišným a zcela originálním způsobem. V první vlně položí všechny plošné spoje i za cenu zkratů a jiných konfliktních situací. Potom zjistí vzniklé problémy, označí chybně položené spoje i různé přestupky a začne je řešit použitím všech známých algoritmů routování. Aby byl průběh pokládání spojů co nejrychlejší, táhne Specctra plošné spoje pravoúhle a teprve na konci operace srazí jejich rohy na diagonální. Tento originální přístup vede k velmi rychlému a kvalitnímu výsledku i na nejvíce komplikovaných deskách.
Autorouter Specctra byl dodáván jako samostatný program s možností připojení na různé návrhové systémy. Specctra byla koncem 90. let odkoupena firmou Cadance Design Systems. John Cooper pak založil novou firmu EDAConnect. com a přispěl ke vzniku autorouteru ELECTRA, který s některými omezeními navazuje na vlastnosti autorouteru Specctra, ale za podstatně nižší cenu. (Autorouteru ELECTRA se podrobněji věnuje samostatný článek v tomto čísle časopisu).
Snaha po dokonalejších metodách pokládání plošných spojů na desku dala vzniknout i autorouteru s „přirozenou inteligencí“. Autorouter NeuroRoute od firmy NeuroCad z Harvardu byl rovněž bezrastrový a shape-based, ale měl schopnost se „učit“ z výsledků předchozího pokládání spojů. Zpočátku se tento autorouter dodával samostatně s možností připojení k různým návrhovým systémům. Postupně ale jeho zdrojový kód získalo několik dalších firem, jako např. OrCAD pro svůj OrCAD Layout release 7 nebo Altium pro své programy Protel a PCAD, čímž NeuroRoute jako takový zanikl.
Pokud se spokojíme s tím, že spoje jsou na desce prostě jenom zapojeny, potom lze autorouter použít téměř vždy a bez velkého přemýšlení. V případech, kdy ale máme na provedení plošných spojů určité nároky, je potřeba před spuštěním autorouteru promyslet strategii pokládání spojů. Ta se bude lišit od desky k desce, podle její složitosti. Cílem strategie je dosáhnout optimálního postupu při tažení spojů a nenechat výsledek na rozhodování autorouteru.
Autorouter pokládá spoje podle vlastního algoritmu v určitém pořadí. To nemusí vždy vést k žádanému výsledku a proto moderní autoroutery umožňují předdefinovat pořadí pokládaných spojů podle součástek a jednotlivých netů. Začíná se u kritických spojů a u součástek s vysokým počtem vývodů, protože v té chvíli je na desce více volného místa.
Některé spoje musí být na desku položeny přece jen manuálně. Takové spoje lze jejich nastavením ochránit před dalším působením autorouteru, ať už tím, že si jich autorouter vůbec nevšímá, nebo že nemá dovoleno je přemístit.
U desek s velkým počtem spojů bývá dobré spustit autorouter s nejjednodušším nastavením a sledovat průběh pokládání spojů. Tento proces ukáže, kde je na desce nedostatek místa pro spoje a kde lze tudíž očekávat problémy při skutečně intenzivním routování. Také naznačí potřebné změny v rozmístění součástek před dalším pokračováním v pokládání spojů. Teprve po analýze tohoto předběžného routování a provedení nutných úprav na desce má smysl přikročit k závěrečnému routování plošných spojů.
Návrhář desky má větší kontrolu nad tažením spojů, pokud se autorouter nezabývá celou deskou najednou. V autorouteru bývá možnost vybrat oblast desky nebo určité součástky či spoje pro routování. Položené spoje je potom možné podle potřeby interaktivně upravit a ochránit před dalšími zásahy autorouteru.