V minulém čísle časopisu jsem popisoval problematiku „Escape Routingu“, a protože jde o zajímavý, složitý a hlavně aktuální úkol – optimálně propojit mnohavývodové součástky – zaměřím se v tomto článku na praktickou ukázku jeho použití. „Escape Routing“, metoda routování desky, je zabudovaná do autorouteru CS-ROUTER, který má prozatím návaznost na programy EAGLE (v 6.0 a výše) a PADS (v 9.3 a výše). Návazností se rozumí oboustranná možnost přenosu dat navrhované desky mezi CS-ROUTERem a dalšími programy. U systému EAGLE slouží k přenosu dat soubor.BRD ve formátu xml, u systému PADS to je textový soubor .ASC. Po ukončení práce autorouteru nebo jeho částečného řešení se zmíněné soubory obohatí o sekci navržených spojů nebo jejich částí, takže vlastní návrhové systémy pak mohou pokračovat v další práci na desce podle potřeby.
Obecně se má za to, že složitější propojovací úlohy na desce se řeší ručně, návrhář ví lépe než kterýkoliv algoritmus, kudy, jak a v jakém tvaru táhnout spoje. Při routování nastává mnoho situací, které algoritmus neumí vyhodnotit a korektně řešit v porovnání s pouhým vizuálním pohledem návrháře. Nicméně nastávají situace, zejména u mnohavývodových součástek s převážně maticovým uspořádáním vývodů, kdy je situace natolik nepřehledná a složitá, že právě návrhový algoritmus s možností mnohatisícových testů při hledání přijatelného řešení může vést k cíli rychleji a lépe. „Escape Routing“ se v takových případech může jevit jako rychlejší a mnohdy i jediná schůdná cesta k řešení úlohy položení spojů.
Jak již bylo zmíněno v minulém článku, popisovaný „Escape Routing“ má různá použití. Předně dá návrháři informaci, jak a jestli vůbec je dané propojení řešitelné – dává představu o počtu potřebných vrstev desky i typech via otvorů potřebných pro optimální propojení mezi vrstvami. Pokud je řešení v podobě navrženého spojového obrazce použitelné, byť i po malých úpravách, znamená to pro návrháře desky podstatné ulehčení práce.
„Escape Routing“ nabízí částečné řešení položení spojů, protože jeho úlohou je vytáhnout všechny spoje od vývodů součástky k její vnější hranici. To ovšem samo o sobě představuje tu nejdůležitější a současně nejtěžší práci. Navržení zbývající části spojového obrazce je potom ponecháno na práci návrháře nebo autorouteru v některém ze zmíněných systémů. Autorouter CS-ROUTER umí pochopitelně dotáhnout spoje od hranic součástky až do konce také, ale to není předmětem tohoto článku.
Obr. 1 Deska načtená do CS-ROUTERu
Na obr. 1 je vidět počáteční situace po načtení desky do CS-ROUTERu. Na desce je několik součástek s mnoha vývody, jejichž vzájemné propojení je definováno vzdušnými vodiči. Navrhovaná deska je 8vrstvá, 4 vrstvy signální, 4 napájecí, a používá 3 druhy via otvorů k propojení vrstev 1–4, 1–6, 1–8. Pro další přiblížení postupu routování si vybereme menší ze součástek s maticovým uspořádáním a její propojení s okolím – viz obr. 2. I tento výběr bude dostatečně ilustrovat práci autorouteru v režimu „Escape Routing“.
Obr. 2 Součástka vybraná pro částečný Escape Routing
Nejdříve tedy o „Escape Routingu“ – vyvedení segmentů spojů na hranici součástky. Budeme se odvolávat na pojmy zavedené v minulém článku (planarita, fanout). Kroky jsou následující:
V prvním kroku musíme obsloužit napájecí a zemnicí vývody a spojit je přes via otvory s odpovídajícími vnitřními napájecími plochami. Kdybychom to neudělali teď, může se stát, že segmenty následujících spojů obsadí místo v kanálech mezi vývody a na pozdější vytvoření průchodu už nezbude místo.
Druhý krok spočívá ve vytvoření dočasných fanoutů (krátkých spojů od vývodů zakončených via otvorem). Tento krok umožňuje budoucí propojení vývodů s ostatními vývody v rámci spoje. Opět zde platí, že kdybychom to neudělali hned, může být vývod zablokován následně vytvořenými segmenty a průchod na jinou vrstvu se již nepodaří realizovat.
Nyní již následuje práce algoritmu. Ještě než si ji blíže popíšeme, musíme se zmínit o tom, že některé „escape“ procedury řeší vyvedení segmentů spojů od vnitřních vývodů matice bez cíleného směrování. Může se tak stát, že se spoj vyvede na hranici opačné strany součástky, než je potřeba. Zde popisovaný algoritmus, používaný v CS-ROUTERu, se snaží o optimální vyvedení částečného spoje tak, aby byl co nejblíže k vývodům navazujících součástek.
Algoritmus vybere postupně dvojice součástek s největším počtem vazeb (zřejmé z obrázku č. 2). Prostým pohledem je vidět, že super řešením by bylo zrealizovat nekřížící se propojení všech cest definovaných nalezenými vazbami na co nejmenším počtu vrstev. A na tom je založen algoritmus. Připomeňme, že jedna věc je nalezení maximálního počtu planárních spojení, druhá věc je omezení, které algoritmu kladou návrhová pravidla (šířka spojů, délka spoje, mezery a geometrie vývodů v matici součástek). Problémem jsou také via otvory pro napájení vytvořené v prvním kroku, stejně jako dočasné fanouty z následujícího kroku. Ze všech vzdušných spojů (vazeb) vybraných dvojic je vytvořena tzv. matice křížení.
V podmínkách, které jsem popsal, se postupně vybírají z vazební matice řádky (spojení), které mají minimální počet křížení s ostatními, přičemž je brána do úvahy délka takové spojky. Zrealizovat pak takový spoj znamená zrušit dočasný fanout u vývodů, které spoj propojuje, a propojovacím algoritmem nalézt cestu na hranici součástky. V matici existuje vždy množina nezávislých spojek, tj. těch, které se nekříží (viz minulý článek) a které při vhodném routování tvoří základ planárních spojek. V dalším procesu se buď podaří navrhnout spojku bez průchodu a na téže vrstvě, čímž se množina planárních spojek zvětšuje, nebo je nutné použít další vrstvu k nalezení cesty pomocí via otvoru.
Z obr. č. 2 je patrné, že:
Obr. 3 Escape Routing – součástka se spoji vyvedenými k vnější hranici součástky
Výsledkem popsaného procesu vznikne řešení, je uvedeno na obr. č. 3. Spoje jsou vyvedeny pouze na hranici součástky, přičemž zobrazené vzdušné vodiče jsou ty původní. Z obrázku je také vidět, že většina částečných spojů je vyvedena skutečně v potřebném směru budoucího kompletního spojení. Některé částečné spoje ale nejsou optimálně vyvedeny ve směru budoucího spoje, což je způsobeno překážkami ve formě skrytých fanoutů. K úpravě tohoto stavu je potřeba provést optimalizaci, která se provede v následující fázi výpočtu algoritmu, pokud autorouter pracuje dále na kompletních spojích. CS-ROUTER tyto částečné spoje při návrhu kompletních spojů zruší a navrhuje je znovu, přičemž dojde k optimalizaci tvaru a délky. Tímto způsobem je celá množina bývalých částečných spojů postupně upravována na optimálnější tvar, neboť router pracuje v několika krocích, kdy po prvním inicializačním následuje optimalizace.
Obr. 4 Výpis dat z desky, na základě kterých se autorouter rozhoduje
Výpis z dokumentace u desky, který používáme jako příklad, je na obr. č. 4. Je tam uveden výpis důležitých součástek (s větším počtem vývodů a větším počtem vazeb na ostatní součástky). Z výpisu je patrné, že nejvíce vazeb s ostatními součástkami má součástka U2, celkem 144, a z matice vazeb zjistíme, že tyto vazby jsou se součástkami J3, U13,U12, U5, J1,U3, U4. Data z této dokumentace se vyhodnocují a použijí pro další rozhodování při routování.
Obr. 5 Escape routing u centrální součástky
Konečně obr. č. 5 zobrazuje konečné řešení, kdy autorouter dořešil kompletně spojový obrazec s využitím předchozího kroku – „Escape Routingu“ s vyvedením spojů na hranici součástky. Vzhledem k tomu, že deska má 4 signální vrstvy a vykreslení všech vrstev nad maticí vývodů by byl velmi hustý barevný obraz, je zobrazena pouze množina planárních spojek na první vrstvě, vodiče na ostatních vrstvách jsou při vykreslení vypnuty. Různé typy průchodů jsou na obr. 5 barevně odlišeny.
Obr. 6 Kompletní propojení součástky A4 s A1, A2, A3 (kvůli přehlednosti zobrazena pouze 1. vrstva – planární spojky)
Pro zajímavost je na obr. 6 ukázáno „Escape Routing“ pro centrální součástku desky, kde jsou pro jednoduchost opět ukázány pouze některé vrstvy.
Z popsaných dat a obrázků je evidentní složitost problému, zvláště když matice pinů u dnešních součástek přesahuje bez problémů 1000 vývodů. Je tedy na místě pokračovat ve vývoji, sledování trendů a přizpůsobovat algoritmická řešení současným potřebám.