Niekompatybilność plików z wersji testowych

Rozwinięcie problemu

Niektórzy użytkownicy wersji testowych (jak i tzw. Nightlies) z pewnością zauważyli, że próby otwarcia plików .kicad_pcb zapisanych przez nie w wersjach stabilnych są skazane na niepowodzenie. Jest to związane z drobnymi zmianami w formatach plików, które uwzględniają nowe opcje pojawiające się w wersjach testowych, których wersje wersje stabilne po prostu nie rozumieją.

Problem nr. 1 – Parametry trasowania par różnicowych

Pierwszy problem może wystąpić podczas odczytu plików, które tylko zostały otwarte i ponownie zapisane przez wersję testową. Dodaje ona do każdej sekcji net_class dwa dodatkowe parametry określające reguły trasowania par różnicowych (wartości mogą się różnić):

(diff_pair_gap 0.25) 
(diff_pair_width 0.2)

Aby wyeliminować ten problem, należy odszukać te parametry we wszystkich sekcjach net_class i po prostu całkowicie usunąć te linie. Po tej operacji pliki powinny dać się odczytać ponownie w wersjach stabilnych.

Problem nr. 2 – Parametry pól lutowniczych

Drugi problem jest znacznie poważniejszy, gdyż wymaga nieco większej interwencji w pliku .kicad_pcb a możliwe, że także w plikach .kicad_mod.

Okazuje się, że do kształtów pól lutowniczych został dodany nowy kształt w postaci zaokrąglonego prostokąta. Dlatego edycja samego pliku z obwodem drukowanym może nie wystarczyć, jeśli takie pola występują również w bibliotekach footprintów. Poniżej znajduje się przykład takiego pola:

(pad 1 thru_hole roundrect (at -1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask)(roundrect_rratio 0.25))

Aby wyeliminować ten problem można skasować taką linię, ale pozbywamy się wtedy pola lutowniczego, które po ponownym otwarciu piku należy dodać. Lepiej jest zamienić treść linii na taką, która zostanie poprawnie zinterpretowana. Pierwszą możliwością, jest zamiana pola z zaokrąglonego prostokąta na zwykły prostokąt:

(pad 1 thru_hole rect (at -1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask))

Zamieniamy w tym celu słowo roundrect na rect i wycinamy ostatni parametr roundrect_rratio.  Druga możliwość to zamiana pola na okrągły:

(pad 1 thru_hole circle (at 1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask))

Tym razem zamieniając słowo roundrect na circle i tak jak wyżej pozbywając się ostatniego parametru.

Przy tego typu problemie warto też przeanalizować footprinty w bibliotekach jakie zostały wykorzystane w tym projekcie, aby ustrzec się przed dalszymi błędami wynikłymi z użycia tej biblioteki. Dlatego przy tej edycji warto spojrzeć na linię znajdującą się nieco wyżej:

(module Wire_Pads:SolderWirePad_RR_2x_0-8mmDrill ...

Wskaże ona nam w jakiej bibliotece i w jakim footprincie znajdziemy problematyczne pole.

Po edycji typu pól lutowniczych w pliku .kicad_pcb obowiązkowe jest przeprowadzenie ponownego procesu wypełniania stref oraz przeprowadzenia kontroli reguł projektowych DRC.

Problem nr. 3 – Dodatkowy parametr hide

Ten błąd może się pojawić po zapisaniu projektu z obwodem drukowanym w testowej kompilacji BZR7525. W sekcji module może pojawić się dodatkowy parmetr hide występujący na końcu linii. Zwykłe usunięcie tego parametru rozwiązuje problem.

Ponieważ parametr ten należy także do prawidłowej składni formatu plików .kicad_pcb w wersji 4.0.x i jego wystąpienie w innych miejscach zwykle jest prawidłowe należy bardzo uważać aby nie usunąć całkowicie poprawnego parametru. Dlatego należy się bezwzględnie posiłkować danymi z okna błędu, gdzie wskazano w której linii występuje niezrozumiały parametr.

ps. Błąd ten został zgłoszony i obecnie może już nie występować. Osoby, które zainstalowały ostatnio wersję stabilna programu mogły zainstalować już wersję odporną na ten błąd.

Na zakończenie

Każda modyfikacja plików za pomocą edytora powinna odbywać się po uprzednim zapisaniu kopii zapasowej (!!!) edytowanych plików.

Należy również pamiętać, by do edycji plików używać edytora, który poprawnie rozpoznaje pliki z kodowaniem UTF-8 (bez BOM), np. Notepad++. Inaczej edycja może zakończyć się komunikatem o rzekomym błędzie w pierwszej linii.