česky english Vítejte, dnes je sobota 23. listopad 2024

Formica a kladení spojů na izolační vzdálenost

DPS 1/2013 | Články
Autor: Ing. Petr Horský

Jedním z rysů, v nichž se liší „velké“ systémy pro návrh DPS od „malých“, typicky bývá kvalita interaktivního routeru: ten v těch prvně zmíněných obvykle při ručním vedení spojů dokáže respektovat izolační vzdálenosti a případně i další návrhová pravidla; vedle toho často umí „odtlačovat“ stávající objekty („push-and-shove router“), které se dostávají do konfliktu se spojem právě uživatelem navrhovaným. To přirozeně je netriviální algoritmicky a na složitější desce náročné i výpočetně (což s běžným výpočetním výkonem sice již není problém, ale v 90. letech, kdy takovéto routery postupně přicházely, bývalo obtížné dosáhnout plynulé odezvy v reálném čase).

Formica rozhodně v žádném ohledu nepatří k „velkým“ návrhovým systémům, přesto jsme však v její verzi 4.40 chtěli uživatelům poskytnout maximální část užitné hodnoty plně interaktivního routeru za cenu minimálního přírůstku složitosti programu i jeho ovládání. Zde je vhodné si všimnout, že žádný autorouter ani push-and-shove router nenavrhne nic, co by uživatel nedokázal vymyslet a nakreslit také – pouze by jej to stálo řádově více času. Analýza, čemu uživatel musí věnovat času nejvíce, vychází celkem jednoznačná: Je to kladení spojů na izolační vzdálenost. (V systému Formica si jej sice uživatel může poněkud zjednodušit zachycením osy existujícího spoje ukazatelem a pak přepnutím počátku souřadnic a nastavením modulu návrhového rastru na součet šířky spojové čáry plus izolační mezery, ale již pouhá formulace této věty dává jistou představu, nakolik to stále je pracné; a v případě smíšených šířek spojových čar naprosto neúnosné. Proto také studium reálných desek navržených v předchozích verzích dali přednost volbě takového modulu rastru, který sice neumožňoval izolační mezery minimální, ale byl hrubý natolik, že jim zřejmě dovolil kontrolovat dodržení izolačních vzdáleností vizuálně.) Pro pozorného uživatele přitom je daleko namáhavější umístit ukazatel do bodu, který přesně odpovídá izolační vzdálenosti, než pohledem ověřit, zda některý z právě vkládaných segmentů (typicky bývají dva) není se stávajícími objekty na desce v konfliktu někde jinde. (Zkontrolovat to pro celou desku, avšak pouze off-line, je ovšem kdykoliv možno příkazem Dimensions / Check Violations.) Z této snad málo srozumitelné a bezpochyby dlouhé úvahy vyplývá jednoduché a krátké řešení:

Zatímco ve verzi 4.30 a starších se ukazatel „zachytává“

a) na uzlových bodech aktuálního rastru,

b) na průsečících tohoto rastru s osami segmentů spojových čar a

c) na středech pájecích bodů, ve verzi 4.40 k nim (volitelně) přibývají

d) průsečíky aktuálního rastru s hranicí určenou izolační vzdáleností od již existujících objektů na dané vrstvě desky.

Vedle toho je pro rychlou orientaci uživatele případ (d) indikován graficky, šipkou ukazující k překážce – viz obr. 1c, d –, a v případě (a) jej navíc zobrazení jiného symbolu ve středu ukazatele varuje, pokud by vložením spoje byla porušena izolační vzdálenost – viz obr. 1b.

Formica a kladení spojů na izolační vzdálenost 1a Formica a kladení spojů na izolační vzdálenost 1b

Obr. 1a Ukazatel v uzlovém bodě rastru, vzdálen od překážek

Obr. 1b Ukazatel je v uzlovém bodě rastru, ale diagonální křížek varuje před porušením izolační vzdálenosti

Formica a kladení spojů na izolační vzdálenost 1c Formica a kladení spojů na izolační vzdálenost 1d

Obr. 1c Žlutá trojúhelníková šipka indikuje, že se ukazatel nesoucí segment umísťovaného spoje zastavil právě na izolační vzdálenosti od vodorovné spojové čáry na „červené“ vrstvě

Obr. 1d Po umístění dvojice segmentů je poloha následující dvojice určena šikmým segmentem; tomu odpovídá i orientace žluté šipky 

Skrytou součást tohoto řešení přirozeně tvoří též několik triků:

  •  Při výpočtu hranice jsou jednotlivé prvky překážek (tj. pájecí body a segmenty spojových čar) vždy aproximovány opsanými osmiúhelníky (s hranami orientovanými v celistvých násobcích 45°). To sice nedovolí vždy zastavit až v reálné izolační vzdálenosti od (zejména velkého) objektu, jenže ve skutečnosti právě tato vlastnost umožňuje pohodlné vedení spoje kolem něj – viz obr. 2.
  •  Dvojice umísťovaných segmentů se automaticky překlápí dle orientace hranice překážky (a lze ji opět překlopit do opačné orientace přidržením klávesy Shift), jak ilustruje obr. 1d.
  •  V zásadě stejné algoritmy jako pro segmenty spojových čar se dle potřeby užívají i při přesouvání (kruhových) prokovek.

Formica a kladení spojů na izolační vzdálenost 2

Obr. 2 Vedení spoje kolem kvadrantu kružnice; kdyby se ukazatel nezastavil v izolační vzdálenosti měřené již od jí opsaného osmiúhelníku, nebylo by spoj možno vést bez řady bodů zlomu

Z programátorského hlediska se tímto úloha značně zjednodušuje; zatímco push-and-shove router vyžaduje práci s objekty v celé oblasti, užitý přístup se zajímá jen o situaci překážek v jednom svislém a jednom vodorovném řezu, přičemž hledá souřadnice jediného bodu, tj. polohu ukazatele v izolační vzdálenosti. K doplnění opisované funkce do programu tak stačilo jeho zdrojový text rozšířit o několik set řádků kódu; poměr přidané užitné hodnoty systému k rozsahu potřebného kódu přitom zřejmě vychází daleko příznivější, než by byl u push-and-shove routeru.

Formica a kladení spojů na izolační vzdálenost 3

Obr. 3 Zastavení na izolační vzdálenosti funguje jen lokálně, v místě ukazatele; porušení izolačních vzdáleností podél kladených segmentů musí uživatel kontrolovat sám

Od kreslení spojů v izolační vzdálenosti samozřejmě je ještě velmi daleko k interaktivnímu odtlačování spojů. Formica verze 4.40 však zastavení ukazatele v izolační vzdálenosti užívá nejen v režimu Draw pro kladení nových spojů, ale také v režimech Drag Segment a Drag Vertex pro tvarování již existujících. Uživatel tak sice nemůže nechat existující spoje programem „odhrnout“ automaticky, může je však (oproti předchozím verzím) relativně pohodlně odtlačovat na izolační vzdálenost jeden po druhém.