Převod PCB návrhů z Formicy 4.30 do KiCadu 10

Systém Formica

Formica je český návrhový systém pro tvorbu desek plošných spojů, který vznikl již v 90. letech minulého století. Přestože jde o starší software, dodnes nachází uplatnění při návrhu profesionálních i amatérských elektronických zařízení a za dobu své existence v něm vzniklo mnoho funkčních návrhů.

Tyto návrhy mohou mít svou hodnotu i dnes, jejich další využití v původním programu je však méně pohodlné a neumožňuje naplno využít možnosti moderního návrhového prostředí.

Postupně tak vznikl program, převodník Formica2KiCad CLI, který dokáže převést soubor desky vytvořený v systému Formica 4.30 do formátu používaného návrhovým systémem KiCad 10. Program jsem napsal v IDE Lazarus s využitím Free Pascalu a jeho zdrojový kód má téměř 4 600 řádků.

Odkaz ke stažení programu i s jeho zdrojovým projektem a návodem k použítí se nachází na konci tohoto článku.


Formica2KiCad CLI

Převodník je určený především pro praktickou migraci starších návrhů. Je vhodný pro situace, kdy existuje archivní návrh desky ve Formice a je potřeba jej dostat do současného prostředí KiCadu bez ručního překreslování celé desky.

Co převodník vytváří

Při převodu vznikají dva hlavní výstupy:

nazev_desky.kicad_pcb
nazev_desky.conversion_report.txt

První soubor je samotná převedená deska ve formátu KiCad 10. Druhý soubor je textový report převodu. Report obsahuje souhrn převodu, statistiky, upozornění a případné informace o prvcích, které bylo potřeba převést heuristicky nebo které vyžadují následnou kontrolu.

Převodník pracuje jako příkazový nástroj pro Windows. Je sestavený jako nativní CLI aplikace pomocí Lazarus / Free Pascal a nevyžaduje instalaci KiCadu pro samotný převod. KiCad je ale potřeba pro následné otevření a kontrolu výsledku.

Jak převodník pracuje

Převod začíná načtením vstupního souboru Formica PCB. Převodník je určený pro textový formát desek Formica 4.30. Pokud je vstupní soubor v binárním formátu, převodník jej rozpozná a oznámí, že takový soubor není podporovaný. V takovém případě je potřeba desku nejdříve uložit nebo exportovat z Formicy v textovém formátu.

Po načtení souboru následuje převod znakové sady. Starší texty ve Formice mohou používat kódování Kamenických, proto převodník provádí převod textů do Unicode / UTF-8 tak, aby se české popisy, reference a další textové prvky správně zobrazily také v KiCadu.

Následně se vstupní data rozdělí a zpracují pomocí S-expression parseru. Převodník postupně načítá hlavní bloky Formica souboru, zejména:

Dimensions
Netlist
Layout
Components

Z těchto částí vytvoří interní datový model desky. V něm jsou uloženy rozměry, vrstvy, sítě, součástky, pady, spoje, texty a grafické objekty. Teprve nad tímto sjednoceným modelem probíhá samotný převod do struktury KiCadu.

Formica2KiCad-conversionBlockDiagram

Převod vrstev

Jedním z důležitých kroků je mapování vrstev. Převodník zjistí, které měděné vrstvy jsou ve Formica desce skutečně použité, a podle toho vytvoří odpovídající vrstvy v KiCadu. Vnitřní měděné vrstvy se tedy nevytvářejí zbytečně, ale jen tehdy, když jsou v původním návrhu opravdu použité.

Speciálně se vyhodnocuje také vrstva Formica 15. Podle kontextu může jít o obrys desky, mechanickou kresbu nebo jinou grafiku. Pokud převodník rozpozná obrys desky, zapíše jej do vrstvy Edge.Cuts, tedy do standardní mechanické vrstvy KiCadu pro tvar desky.

Měděné čáry, které pouze kopírují obrys desky, se potlačují, aby po otevření v KiCadu zbytečně nevznikaly DRC chyby.

Převod součástek, padů a spojů

Součástky z Formicy se převádějí na footprinty v KiCadu. Převodník zachovává reference, hodnoty a podle dostupných dat vytváří odpovídající pady. Geometrie padů vychází z definic ve Formica bloku Dimensions/Pads.

Běžné vývody součástek se zapisují jako pady uvnitř vygenerovaných footprintů. Mechanické neprokovené otvory se zapisují jako footprinty s neprokovenými pady typu np_thru_hole.

Samostatné volné vodivé pady se převádějí jako footprinty Formica:FREE_PAD. Pokud jde o samostatný kulatý vrtaný prokovený objekt, převodník rozhoduje podle jeho skutečného připojení. Pokud takový objekt propojuje routovanou měď alespoň ve dvou měděných vrstvách, může být převeden jako nativní KiCad via. Pokud je připojený jen v jedné vrstvě, zůstává jako samostatný pad nebo testpoint, protože se nechová jako skutečný průchod mezi vrstvami.

Převod grafiky a textů

Kromě elektrických objektů se převádějí také grafické prvky, například čáry, texty, oblouky a kružnice. Texty se převádějí včetně znakové sady, takže české popisy ze starší Formicy mohou být čitelné i v KiCadu.

Oblouky se podle situace zapisují jako grafické oblouky KiCadu. Převodník používá toleranci pro přichycení konců oblouků, aby bylo možné lépe navázat geometrii tam, kde původní data obsahují drobné odchylky.

Pomocné oblouky kolem neprokovených otvorů se potlačují, pokud nejde o skutečnou grafiku desky. Tím se výstup udržuje čistší a přehlednější.

Měděné výplně a zóny

Starší návrhy mohou obsahovat měděné výplně vytvořené způsobem, který neodpovídá dnešním polygonovým zónám. Formica mohla používat například husté scan-line čáry, které dohromady tvoří měděnou plochu.

Převodník se pokouší takové výplně rozpoznat a převést je na KiCad zóny. Podporovány jsou také vybrané inverzní napájecí vrstvy. Pokud kandidát na výplň nesplní pravidla pro bezpečný převod na zónu, zůstane ve výstupu jako běžná měděná geometrie a informace se objeví v reportu.

Tento přístup je záměrně konzervativní. Cílem není za každou cenu převést každou skupinu čar na zónu, ale spíše vytvořit použitelný výstup, který se v KiCadu dá bezpečně zkontrolovat.

Fyzická inference netů

Převodník obsahuje také volitelnou fyzickou inferenci netů. Ta je ve výchozím nastavení zapnutá a lze ji vypnout parametrem:

--no-physical-pad-net-inference

Tato funkce pomáhá u starších návrhů, kde některé části mědi nemají přímo přiřazený net, ale podle geometrie se jednoznačně dotýkají pojmenovaného spoje. Převodník může takovým objektům přiřadit odpovídající síť.

V některých případech může také vytvořit pomocné lokální nety ve tvaru:

FORMICA_LOCAL_n

Ty se používají pro lokální no-net ostrovy, které fyzicky propojují no-net tracky a no-net vodivé pady. Převodník ale záměrně nevytváří pomocné lokální nety tam, kde by hrozilo náhodné připojení záměrně nezapojených SMD pinů.

Existující pojmenované nety z Formicy se pomocnými lokálními nety nenahrazují.

Základní použití převodníku

Nejjednodušší převod jedné desky se provede příkazem:

formica2kicad.exe vstup.pcb -o vystup.kicad_pcb

Pokud není zadán výstupní soubor, převodník jej odvodí automaticky z názvu vstupního souboru:

formica2kicad.exe vstup.pcb

Například pro vstupní soubor:

MojeDeska.pcb

vzniknou výchozí výstupy:

MojeDeska.kicad_pcb
MojeDeska.conversion_report.txt

Program je možné spustit také přes dávkový soubor:

formica2kicad.bat vstup.pcb -o vystup.kicad_pcb

Tento způsob je praktický při spuštění z Průzkumníka Windows nebo z nově otevřeného příkazového okna.

Hromadný převod více desek

Pro převod všech Formica PCB souborů v adresáři je připraven dávkový soubor:

formica2kicad_all_pcb.bat

Ten převede všechny soubory *.PCB a *.pcb v aktuálním adresáři.

Je možné zadat také konkrétní adresář:

formica2kicad_all_pcb.bat C:\Projects\FormicaBoards

Hromadná dávka volá převodník pro každý soubor zvlášť. Po jednotlivých deskách se nezastavuje a závěrečná pauza je až na konci souhrnu.

Užitečné parametry

Převodník podporuje několik voleb, které mohou být užitečné při ladění výsledku:

--report REPORT

Určí vlastní cestu k textovému reportu převodu.

--no-zones

Vypne generování KiCad zón.

--no-inverse-plane-zones

Vypne generování zón pro inverzní napájecí vrstvy.

--no-physical-pad-net-inference

Vypne fyzickou inferenci no-net padů a lokálních ostrovů.

--verbose-report

Vytvoří podrobnější report převodu.

--quiet

Omezí výpis do konzole.

--no-pause

Zajistí, že program nebude na konci čekat na stisk Enter. Tato volba je vhodná zejména pro dávkové zpracování.

Doporučený postup po převodu

Převod starší desky je vždy potřeba chápat jako migrační krok, ne jako náhradu odborné kontroly návrhu. Po otevření výsledného souboru v KiCadu je vhodné zkontrolovat zejména:

obrys desky
vrstvy
zóny a měděné výplně
pady a průchody
neprokovené otvory
záměrně nezapojené vývody
DRC violations
Unconnected pads

U některých starších desek může být určitý počet nezapojených padů očekávaný, například pokud původní návrh obsahoval záměrně nepoužité vývody součástek. Výsledek je proto vhodné porovnat s původním záměrem návrhu a také s reportem převodu.

Omezení

Převodník je určený pro textový formát desek Formica 4.30. Binární Formica PCB soubory nejsou přímo podporované a je potřeba je nejdříve uložit nebo exportovat jako textový soubor.

Některé konstrukce ve starých návrzích mohou být převedeny heuristicky. Týká se to hlavně měděných výplní, staré no-net mědi, mechanických detailů, obrysů, pomocné grafiky a neobvyklých padů. Právě proto se při každém převodu vytváří report, který pomáhá upozornit na místa vhodná ke kontrole.


Formica2KiCad-conversionExample
Ukázka převodu PCB bez uživatelského zásahu.

Stažení programu


Závěr

Formica2KiCad je nástroj pro převod starších desek z Formicy do současného formátu KiCadu. Pomáhá zachovat a znovu zpřístupnit starší návrhy, které by jinak bylo nutné ručně překreslit.

Převodník načte textový Formica PCB soubor, převede vrstvy, součástky, pady, spoje, texty, grafiku, obrysy, otvory a vybrané měděné výplně do struktury KiCad 10. Současně vytvoří report, podle kterého lze výsledek zkontrolovat.

Výsledný .kicad_pcb soubor je určený k otevření v KiCadu, následné vizuální kontrole a spuštění DRC. Po této kontrole může sloužit jako základ pro další úpravy, archivaci nebo přípravu modernizované verze původní desky.

 

Translate »