Rozmisťování součástek na desce během jejího návrhu je velmi kritickou částí návrhu, protože přímo ovlivňuje možnosti položení plošných spojů i vlastní funkčnost osazené desky. Navíc to je krok i časově náročný, a tak je každá pomoc v této fázi návrhu desky vítána. Na obr. 1 je deska s 350 součástkami, které mají být umístěny na horní straně desky. Desky mohou ale mít i mnohem více součástek, a tak jejich manuální rozmístění může trvat i několik dní.
Obr. 1 Součástky připravené pro rozmístění na desku
Přesto, že tzv. autoplacement je součástí snad každého programu pro návrh DPS a jeho algoritmy jsou známé a propracované, je to patrně jedna z nejméně využívaných funkcí těchto programů. Tato skutečnost vyplývá z „vrozené“ nedůvěry návrhářů k automatickým procesům při návrhu DPS. Je pravda, že zdaleka ne vždy lze rozmístit všechny součástky na desce automaticky. Jejich umístění většinou podléhá určitým návrhovým požadavkům, které je nutné dodržet. Mnohé součástky, např. konektory, displeje a ovládací prvky, mívají na desce svoji předepsanou polohu. Mezi součástkami bývají určité vzájemné vazby, které je potřeba respektovat, protože ovlivňují funkci obvodu, a tak je jejich vzájemná poloha důležitá. Nelze tedy jednoduše automaticky rozhodit všechny součástky na desce tak, aby jejich umístění vyhovovalo všem požadavkům.
Nicméně, dobrý automat může při rozmisťování součástek udělat kus práce na každé desce. Podívejme se blíže na některé možnosti automatického rozmisťování, které mohou být velmi užitečné. Jako příklad použijeme autoplacement v programu PADS, ale stejné nebo podobné možnosti lze nalézt i v jiných programech.
Automatické rozmisťování součástek na desce je založeno na algoritmu, který hledá umístění s nejkratšími vzdušnými spoji (airwires, connections, unroutes atd.). Dokáže přitom rozpoznat sběrnice nebo alespoň to, co se v netlistu sběrnicím podobá, a tak zohledňuje umístění navazujících součástek. Snaží se také horizontálně i vertikálně vyrovnat součástky podle jejich manipulačního bodu. Proces rozmisťování probíhá v kolech (passes), kdy v každém dalším kole probíhá optimalizace situace, která vznikla v kole předchozím.
Důležité je, že před spuštěním této funkce je možné nastavit, jak intenzivně se má program rozmístěním součástek zabývat. Lepšího výsledku se pochopitelně dosáhne při intenzivním hledání alternativ, ale to může být časově velmi náročné, protože program zkoumá všechny dostupné možnosti rozmístění. Proto je výhodné při prvním pokusu nezatěžovat autoplacement přílišným zkoumáním dané situace, ale nechat ho práci vykonat jenom v několika málo kolech, které tak pro první představu výsledku proběhnou ve svižném tempu. Teprve když je zřejmé, že by se výsledek rozmístění mohl blížit očekávanému výsledku, vyplatí se upravit nastavení tak, aby autoplacement měl dostatek času vyzkoušet více možností.
Automaticky lze rozmisťovat všechny nebo jen vybrané součástky a to buď na celé desce nebo jenom ve vymezené oblasti. Protože algoritmus založený na nejkratších vzdušných spojích nemusí nutně odpovídat požadavkům na rozmístění, je možné rozmisťovat součástky po předem vytvořených skupinách (clusters) nebo dokonce s předdefinovanou vzájemnou polohou některých součástek (tzv. „unions“).
Ještě jednu záležitost je vhodné při automatickém rozmisťování zvážit – co s blokovacími kondenzátory, kterých bývá na desce poměrně hodně. Protože jsou všechny připojeny na stejné potenciály napájecích vedení, autoplacement není schopen správně rozhodnout, kam je umístit. V takovém případě je lepší je vyjmout ze souboru součástek automaticky rozmisťovaných, např. zafixováním jejich polohy mimo obrys desky. Pochopitelně se tyto součástky musí na desku umístit dodatečně, což bude znamenat ruční editaci již rozmístěné desky.
Lepší variantou práce s blokovacími kondenzátory je jejich přiřazení k odpovídajícím součástkám do tzv. „union“ (viz dále), u kterých je možné svázat jejich vzájemnou polohu.
Pokud spustíme autoplacement s nízkou intenzitou zkoumání dané úlohy a necháme rozmístit všechny součástky na celé desce bez jakéhokoliv omezení, proběhne rozmístění velmi rychle, řádově v jednotkách až desítkách sekund. Výsledek je v případě naší desky (obr. 1) vidět na obr. 2. Z obrázku je hned zřejmé, že mnoho součástek, zejména SMD položky, jsou rozmístěny a orientovány poněkud chaoticky a že některé součástky se dokonce částečně překrývají. Zde je nutné říci, že autoplacement indikuje nedodržení mezer mezi součástkami v důsledku nedostatečného prostoru a pořídí i seznam ovlivněných součástek.
Obr. 2 První automatické rozmístění součástek
K čemu je nám takovéto rozmístění dobré? Přinejmenším k tomu, abychom si udělali představu o správné velikosti desky. To, že se některé součástky dotýkají, ještě neznamená, že je deska malá. Již letmý pohled na zobrazenou desku indikuje, že existují nevyužitá místa, která by bylo možné použít. Naopak, i když se podaří všechny součástky velmi těsně na danou desku umístit, nemusí být tato deska dostatečně velká. Některé součástky, jako třeba konektory, bývají umístěny v určité předepsané poloze a ta brání položení ostatních součástek kolem nich. V takovém případě se musí provést rozmístění s předem položenými kritickými součástkami a teprve potom si lze udělat představu o vhodné velikosti desky.
Takovéto jednoduše provedené rozmístění současně signalizuje hustotu součástek na desce a s tím spojené možné problémy, jak při skutečném rozmisťování součástek, tak i při pokládání spojů. Lze tedy říci, že i zdánlivě nesmyslné automatické rozmístění součástek na desce může být docela užitečné, zejména když proběhlo poměrně snadno a rychle.
Skutečné rozmisťování součástek bývá vždy spojeno s předchozím manuálním rozmístěním těch součástek, které musí na desce zaujmout určitou pozici. Typicky to bývají konektory, ale mohou to být i další součástky, jako jsou displeje či ovládací prvky. Pokud k těmto součástkám přidáme i ty, které sice nemají předepsanou polohu, ale jsou kritické z pohledu pokládání plošných spojů nebo vzájemné vazby mezi sebou. Potom má autoplacement jasněji vymezeno, jak může rozmístit zbývající součástky. Na obr. 3 je znázorněno takové předběžné rozmístění několika součástek. Kromě konektorů s fixní polohou jsou zde rozmístěny i některé další součástky. Pro úplnost je v tomto případě potřeba říci, že konektory jsou uloženy na spodní straně desky, takže nejsou vidět jejich obrysy. Všechny předem položené součástky jsou na desce zafixovány (přilepeny), aby autoplacement nemohl jejich polohu změnit.
Obr. 3 Předdefinovaná poloha kritických součástek
Výsledek automatického rozmístění se střední intenzitou hledání vhodného řešení je zobrazen na obr. 4. I když se autoplacement pořád řídí stejným algoritmem nejkratších vzdušných spojů, je toto rozmístění daleko lepší, protože již vystihuje určitou logiku. Nyní by bylo potřeba projít vizuálně celou desku a zkusit ji analyzovat, jak s daným výsledkem pokračovat. V případě, že se nám jeví dané rozmístění vcelku vhodné, můžeme se vlastními zásahy pokusit o různé opravy a vylepšení. K tomu je možné použít další funkce programu, jako je automatické odsouvání překážejících součástek (nudge), zarovnání součástek do řady (align), prohození vzájemné polohy součástek (swap) atd.
Obr. 4 Autoplacement provedený s ohledem na již umístěné objekty
Může se také stát, že výsledek automatického rozmístění indikuje potřebu posunout předdefinovanou polohu předem umístěných součástek a proces rozmístění opakovat. Vzhledem k tomu, že opakované rozmístění trvá jen několik desítek sekund, nejedná se o žádnou velkou ztrátu času.
Lepší rozmístění součástek nabízí tzv. clusterplacement. Tento princip, známý již od poloviny 90. let, spočívá v rozdělení součástek podle jejich vzájemné vazby do skupin (clusters). Autoplacement potom rozmisťuje na desce nejdříve tyto skupiny jako celky a teprve potom jednotlivé součástky uvnitř těchto skupin. Tak se nestane, že součástka přiřazená do jedné skupiny se objeví někde jinde než má. Při tomto způsobu rozmístění jsou součástky drženy na desce pohromadě tak, jak je potřeba.
Zařazení součástek do skupin (clustrů) podle jejich vzájemné vazby může být provedeno manuálně nebo automaticky. Manuální definování skupin dává pochopitelně lepší výsledek, protože reflektuje hledisko návrháře desky, nebo ještě lépe vývojáře zapojení, který může skupiny definovat již ve schématu. Automatické vytvoření skupin je založeno na netlistu, který sice vypovídá o vzájemném propojení, ale ne o prioritách v rozmístění součástek.
Clusterplacement je velmi flexibilní nástroj. Ne vždy je potřeba rozdělit všechny součástky do skupin. Může se stát, že kritické součástky, které mají být umístěny pohromadě, vytvoří pouze jednu skupinu, zatímco ostatní zůstávají pro rozmístění volné. Je také možné vytvořit skupinu či několik skupin manuálně a zbytek automaticky atd. Seskupení lze kdykoliv modifikovat (např. přesunout součástku z jedné skupiny do druhé nebo ji ze skupiny vyjmout atd.).
Obr. 5 Automaticky rozmístěné součástky pomocí clusterplacementu
Na obr. 5 je vidět výsledek rozmístění pomocí clusterplacementu, kdy byly součástky rozděleny do několika skupin. V porovnání s předešlou situací (obr. 4) je vidět rozdíl v umístění některých součástek, který vyplývá z předdefinování jejich vzájemných vazeb. Opět i v tomto případě platí, že automatické rozmístění provedené se střední intenzitou řešení vyžaduje vizuální analýzu desky a další případné úpravy, stejně jako v předešlých případech. Nicméně pokud je definování skupin (alespoň těch důležitých) provedeno manuálně a správně, potom se jedná o řádově lepší výsledek než jaký je běžný autoplacement schopný vytvořit. I tak bude pro dosažení optimálního výsledku potřeba ručního zásahu. Opět platí, že vzhledem k rychlosti, s jakou je toto automatické rozmístění provedeno, se nejedná o žádnou časovou ztrátu.
Clusterplacement sice umožňuje nadefinovat skupiny součástek, které mají být umístěny blízko sebe, ale bez jejich skutečné vzájemné polohy. Tento nedostatek odstraňuje až vytvoření tzv. union, čili polohových seskupení součástek. Union lze vytvořit pouze manuálně vybráním potřebných součástek a vzájemným sestavením do polohy, v jaké mají být na desce položeny. Jednou nadefinované seskupení (union) představuje jeden celek při jakékoliv akci týkající se umísťování na desce. Posouvat, rotovat, dát na druhou stranu desky a další operace lze provádět vždy jenom s celým seskupením, nikoliv s jeho jednotlivými součástkami. Seskupení pomocí union lze rozmisťovat na desce jak manuálně, tak automaticky, vždy jako jeden celek.
Obr. 6 Definování vzájemné polohy součástek pro Union1
Na obr. 6 je příklad vytvořeného seskupení součástek pod označením Union1. Toto seskupení se vytvoří ze skupiny dostupných součástek (obr. 1) tím, že se vyberou a stranou se vzájemně vůči sobě položí tak, jak by měly být umístěny na desce. Následným vybráním seskupených součástek a aplikováním funkce pro vytvoření union vznikne seskupení pod zadaným názvem Union1.
Pokud spustíme autoplacement znovu v jakémkoliv výše popsaném módu, potom program zajišťuje dodržení vzájemné polohy součástek daného seskupení (union), ať je na desce kdekoliv a bez ohledu na jeho natočení či stranu desky. Na obr. 7 je automaticky umístěné seskupení Union1 zvýrazněno žlutě.
Obr. 7 Automaticky rozmístěné součástky včetně Union1
Typickým použitím seskupení součástek jsou blokovací kondenzátory u integrovaných obvodů, součástky tvořící oscilační obvody, paměti s procesory atd.
V uvedených příkladech byly vždy rozmístěny všechny součástky na celé desce. Na deskách s velkým počtem součástek může být ale výhodnější rozmisťovat menší skupiny součástek postupně a jen na určitá místa desky. Tím, že se položí jenom část součástek, bývá následná úprava rozmístění jednodušší, přehlednější a snadněji realizovatelná, protože až do zaplnění desky je kolem vždy ještě volné místo.
I když se vlastně jedná o obdobu práce s cluster-skupinami, není potřeba clustery vytvářet, protože se jednotlivé skupiny rozmisťují na desce postupně, nikoli současně. Na desce se nejdříve vymezí plocha určená pro rozmístění součástek dané skupiny, např. vytvořením zakázané oblasti (keepout area) pro ostatní součástky. Součástky dané skupiny se vyberou buď přímo z připravených součástek u desky (obr. 1), ze seznamu nebo nejlépe přímo ve schématu (pro dobrý přehled jejich vzájemné návaznosti). Spuštěním autoplacementu se daná skupina rozmístí ve vymezeném místě desky. Nejdříve je dobré rozmístit kritické součástky, protože v prvních fázích procesu je v okolí vždy dost místa pro potřebné manuální úpravy. Oblast s rozmístěnými součástkami můžeme také v případě potřeby dodatečně přesunout do jiné polohy a zafixovat, aby je další rozmisťování již nemohlo ovlivnit.
Automatické rozmisťování součástek na DPS nemůže zcela nahradit dobrého návrháře desky, ale může mu indikovat možnosti rozmístění a tím mu v mnoha případech výrazně ušetřit čas.