Hallo zusammen, ich bin gerade dabei, einen Vierlagenprint zu entwerfen, den ich bei seeedstudio fertigen lassen möchte. Nun haben die allerdings unterschiedliche Layer- und Width-Constraints für Innen- und Aussenlagen (6 mil aussen, 8 mil innen). KiCad unterstützt solche layer-basierten Constraints leider nicht. Also habe ich mal Eclipse angeschmissen und ein bisschen daran rumgebastelt. Nun ist es so, dass die bei Kicad (verständlicherweise) sehr zurückhaltend damit sind, Änderungen in den Release-Branch aufzunehmen, und ausserdem sind die gerade sehr stark mit anderen Dingen beschäftigt, und eine Diskussion mit den Verantwortlichen ergab auch, dass man dieses Thema lieber nicht auf die Schnelle angehen will, weil man sich nicht klar ist darüber, ob das Feature überhaupt notwendig ist, wie die Bedienung aussehen sollte, und, ob man vielleicht noch wesentlich komplexere Constraints implementieren sollte und was das sein könnte und wie das UI aussehen sollte. Dafür wollen sie sich erst mal Zeit lassen. Das verstehe ich auch. Allerdings habe ich einen Prototyp, der wohl zwar noch nicht ganz fehlerfrei ist, aber doch schon soweit ist, dass ich ihn wohl produktiv einsetzen kann. Allerdings habe ich noch sehr wenig getestet. Da ich KiCad nur hobbymässig einsetze, kann ich es mir leisten, "produktive Arbeit" und "Beta-Testing" zu vereinen. :-) Nun wollte ich Euch mal fragen, ob Ihr einen Blick drauf werfen könnt/wollt, resp. ob solch ein Branch vielleicht ausser mir noch jemandem hilfreich sein könnte. Also eigentlich sollte jeder, der bei seeedstudio Vierlagenprints bestellt, diesen Branch sehr gut einsetzen können. Kurz zusammengefasst, was meine "Kicad-Spezialversion" anders macht als der Standard-Branch: - Im Layer-Stack-Dialog kann man für jeden Layer eine minimale 'Clearance' und eine minimale 'Width' eingeben. Diese zusätzlichen Constraints sind so zu verstehen: Die Constraints sowohl für das Netz (wie gehabt) als auch für den Layer müssen erfüllt sein. Wenn also das VCC Netz 1mm Minimalbreite und 2mm Abstand hat, und Layer zwei 1.5mm Minimalbreite und 0.5mm Abstand, dann gilt für einen VCC Track auf Layer zwei der jewilsgrössere Wert, also 1.5mm Minimalbreite und 2mm Abstand. - Der DRC sollte eigentlich diese beiden Constraint-Klassen berücksichtigen. Habe ich aber noch nicht exzessiv getestet. - Wenn man einen Track zeichnet, und die Leiterbahnbreite auf "standard" (mit Stern) gesetzt hat, wir die minimale für dieses Netz (wie gehabt) und den aktuellen Layer (neu) ausgewählt (eben: der grössere Wert gilt). Die angedeutete Clearance wird natürlich auch entsprechend gewählt. - Wenn man nun die Lage wechselt, ändert sich ggf. die Leiterbahnbreite automatisch, so dass sie dem neuen Layerconstraint entspricht. - Pads auf allen layern haben nun natürlich u.U. für jede Lage eine andere Clearance. Das habe ich visuell so gelöst, dass immer die Clearance gezeigt wird, die für den aktuellen Layer gültig ist. - Um das Ganze konsistent zu halten, zeigen die Tracks und Pads, die nur auf einer Lage sind (SMD) nun ihre Clearance nur dann an, wenn man sich auf der selben Lage befindet. Das finde ich eigentlich ganz schön, da diese angedeuteten Clearances einerseits sehr praktisch sind andererseits auch ziemlich unübersichtlich werden können, besonders, wenn auf der Rückseite auch noch Pads sind. Und eigentlich interessiert mich ja immer nur gerade die Lage, auf der ich gerade route. Was noch nicht so recht funktioniert, ist die Clearance-Anzeige der Vias. Das habe ich eben festgestellt; dem muss ich mal noch nachgehen. Ach ja: Die Layer Clearances werden natürlich auch gespeichert. Das heisst aber, dass das File dann nicht mehr kompatibel mit dem Original-KiCad ist. Um die Kompatibilität wieder herzustellen, kann man entweder den zusätzlichen Eintrag (layer_constraints) rauslöschen, oder einfach alle layer constraints auf 0 setzen und dann nochmals speichern. Dann lässt er diesen Eintrag weg. Ich habe mal ein Windows-Build gemacht. Gelegentlich werde ich einen Branch auf Launchpad raufladen, dann könnt Ihr Eure eigenen Builds für was auch immer machen. Entweder pcbnew.exe direkt starten oder im Installationsverzeichnis von KiCad die Datei ersetzen. Gruäss Simon
Anbei ist noch der Patch. Er sollte mit (2013-mar-13)-testing laufen. Gruäss Simon
Simon Huwyler schrieb: > unterschiedliche Layer- und Width-Constraints für Innen- und Aussenlagen > (6 mil aussen, 8 mil innen). Zunächst sollte ich Dir meine Anerkennung aussprechen -- Du bist in diesem Forum wohl der erste, der an KiCAD mitarbeitet -- die anderen beschränken sich ja eher auf Meckern. Zu KiCAD kann ich leider nichts sagen, ich nutzte eher gEDA/PCB. Unterschiedliche minimale Leiterbahnbreite für innere und äussere Lagen habe ich bei anderen Firmen eigentlich noch nicht gesehen, mir fällt so spontan auch kein technischer Grund dafür ein Wenn ich es recht verstanden habe willst Du also für das manuelle Routing stets die minimal zulässige Leiterbahnstärke/Clearance verwenden. Nun ja -- wobei ich ich eigentlich eher etwas gröbere Strukturen verwende, sofern genug Platz vorhanden ist. Und bei kontrollierter Impedanz hat man ja auch eher etwas breitere Leiterzüge. Wenn man die Fertigungstoleranzen ausreitzt hat man ja nicht immer völlig fehlerfreie Platinen. >Nun ist es so, dass die bei Kicad (verständlicherweise) sehr >zurückhaltend damit sind, Änderungen in den Release-Branch aufzunehmen Das ist bei gEDA/PCB noch viel mehr der Fall -- ich dachte eigentlich, dass an KiCAD viele Kids herumbasteln. Gruß Stefan Salewski
Salewski schrieb: > Unterschiedliche minimale Leiterbahnbreite für innere und äussere Lagen > habe ich bei anderen Firmen eigentlich noch nicht gesehen, mir fällt so > spontan auch kein technischer Grund dafür ein Ich hätte einen: Impedanzen. Je nach Lagenaufbau macht es Sinn, ein und derselben Signalklasse (z.B.50 Ohm) unterschiedliche LB Breiten zu geben, je nachdem, auf welcher Lage die geroutet werden soll/ muss.
Salewski schrieb: > Zunächst sollte ich Dir meine Anerkennung aussprechen -- Du bist in > diesem Forum wohl der erste, der an KiCAD mitarbeitet Zumindest ein Name ist mir, glaube ich, vom diesem Forum bekannt: Hauptmech. :-) Salewski schrieb: > mir fällt so > spontan auch kein technischer Grund dafür ein ich habe auch ein bisschen blöd geschaut, als ich das gesehen habe. Salewski schrieb: > Wenn ich es recht verstanden habe willst Du also für das manuelle > Routing stets die minimal zulässige Leiterbahnstärke/Clearance > verwenden. Ja. Wobei ich sagen muss, dass die Idee nich von mir ist, sondern von KiCad schon so angeboten wird. Ich habe das Feature einfach entprechend erweitert. Salewski schrieb: > Wenn man die Fertigungstoleranzen ausreitzt hat man ja nicht immer > völlig fehlerfreie Platinen. Die bei Seeedstudio bieten umsonst 100% elektrischer Test an. Aber grundsätzlich hast Du natürlich recht. Ich meine mich zu erinnern, dass Protel (resp. Altium) drei Breitenangaben zulässt: Minimal, maximal und Standard. Das sollte man Kicad vielleicht auch mal beibringen. Sollte sehr einfach sein. Salewski schrieb: > ich dachte eigentlich, > dass an KiCAD viele Kids herumbasteln. uuhh, da tust Du KiCad aber unrecht! :-) Im Gegenteil. Der Chefentwickler ist ein sehr mürrischer Typ, der in guter amerikanischer Manier sehr direkt sagt, was er von einem Beitrag hält. Leider oft in einer extrem "schnudrigen" und arroganten Art. Ich habe mich erst kürzlich in die Mailingliste eingetragen, und seither hat er schon einige, zum Teil professionelle (sprich mit bezahlter Arbeitszeit beitragende) Leute ziemlich arg vor den Kopf gestossen. Uwe N. schrieb: > Ich hätte einen: Impedanzen. Richtig. Nur leider ist für diesen Fall mein Patch nicht geeignet. Mein Patch zielt wirklich auf FERTIGUNGSTECHNISCHE Constraints. Und dafür ist der Approach m.E. perfekt (Eigenlob stinkt, ich weiss :-). Aber für etwas, das eine Chance haben sollte, ins Release zu kommen, muss man das wohl ganz anders aufsetzen. Netzklassen Layer zuordnen oder so. Ich denke, ich werde mal einen Blueprint starten. Hat jemand Lust, mitzumachen? Gruäss Simon
Simon Huwyler schrieb: > Richtig. Nur leider ist für diesen Fall mein Patch nicht geeignet. Das ist aber schade (und wieso eigentlich), denn das ist das Hauptanwendungsgebiet layerspezifischer Constraints. Im Prinzip werden zwar Aussenlagen tatsächlich anders erstellt als Innenlagen, aber kaum ein Hersteller gibt dafür andere fertigungstechnisch bedingte Mindestmasse an, vielmehr werden die Prozesse so eingerichtet, dass bestimmte Grenzwerte eben überall eingehalten werden. Ist auch das vernüftigste. Bei definierter Impedanz ist das anders, aus physikalischen Gründen, die zu einer Impedanz notwendige Leiterbahnbreite hängt vom Lagenaufbau ab und kann auf jedem Layer anders sein. Allerdings ist es bei erwachsenen Layoutprogrammen so, dass das nicht als lagenspezifisch nach aussen in Erscheinung tritt - vielmehr gelten die 50 Ohm Impedanz für das Netz und dass dafür auf einer Lage 0,3 auf einer anderen 0,5 mm erforderlich sind wird intern geregelt. Der Router fährt bei einem Lagenwechsel auf der anderen Lage mit der dort für 50 Ohm definierten Breite fort. Ob es bei Kicad sowas gibt weiss ich allerdings nicht. Salewski schrieb: > ich dachte eigentlich, > dass an KiCAD viele Kids herumbasteln. Das soll doch auch Kids CAD heissen, oder nicht? Gruss Reinhard
Reinhard Kern schrieb: > Das ist aber schade (und wieso eigentlich) finde ich auch. :-) Warum? Die technische Antwort ist: Weil ich nur einen Constraint für den gesamten Layer machen kann. Ok, in den meisten Fällen sollte es schon gehen. Wenn man halt als Minimal Width die Dicke angibt, die für die gewollte Impedanz stimmt. Dann sind einfach alle Leitungen so dick oder dicker (die, bei denen ein Net-Constraint zuschlägt). Motivationstechnische (ui, was'n'Wort) Antwort: Weil das eben mein Problem war/ist :-) Aber eben, Du hast natürlich vollkommen recht. Bezüglich den fertigungstechnischen Toleranzen: Man könnte natürlich auch argumentieren, dass mich ja niemand zwingt, auf den Aussenlagen runterzugehen. Nur leider habe ich ein 0.5mm-Pitch-Käferchen drauf. Und mit 8mil passt das nicht. Natürlich könnte man einfach die Fehler gezielt ignorieren, aber das ist ein Murks. Darum habe ich das so gelöst. Aber die schöne Erkenntnis ist, dass ich mit vernünftigem Aufwand KiCad beibringen konnte, bei Constraintsberechnungen die Lage miteinzubeziehen. Ich denke, wie die Lage jetzt da reinkommt, global wie beim Status Quo oder über Zuordnungen der Netz-Constraints, ist ja eigentlich sekundär. Also ich denke, da könnte man einiges verbessern. Übrigens noch ein "Insider-Tip": KiCad wird wohl bald Push-and-Shove beherrschen! :-) Leute vom CERN arbeiten wohl gerade daran. Mir wurde auch schon nahegelegt, da ja nichts kaputtzumachen. :-) Aber ich denke, das passt wunderbar aneinander vorbei. Gruäss Simon
> Constraint ???
Könnte ihr Lieben mal auf Deutsch erklären, was damit gemeint ist?
Gerne: Constraint = wörtlich: Einschränkung. Hier: Designregel. Also z.B. "Track etc. mit dem Netz VCC und GND müssen mindestens 1mm breit sein und 0.5mm Abstand von anderen Netzen haben."
Simon Huwyler (simi) schrieb: > Gerne: Constraint = wörtlich: Einschränkung. Jaja (Loriotartiges Zustimmen meinerseits) ich weiß schon. > Hier: Designregel. Also z.B. "Track etc. mit dem Netz VCC und GND > müssen mindestens 1mm breit sein und 0.5mm Abstand von anderen Netzen > haben." Sowas verorte ich linguistisch eigentlich eher unter Designrules. Aber jetzt weiß ich bescheid. Danke Simon fürs Bescheidgeben. ;-)
Hast natürlich recht. :-) Design Regeln heisst im KiCad auch "design rules". Und eine Regel kann z.B. sein, dass es eine Einschränkung der Leiterbahnbreite gibt. Das Wort "Constraint" kommt tatsächlich im Dialog gar nie vor. Ist mir nicht aufgefallen. Aber man spricht hier üblicherweise von Width- und Clearance-Constraints. Jetzt haben wir's zusammen. :-)
Hallo Verwirrter. >> Gerne: Constraint = wörtlich: Einschränkung. > Sowas verorte ich linguistisch eigentlich eher unter Designrules. Aber > jetzt weiß ich bescheid. Nun, eine Design Regel muss nicht zwangsläufig eine Einschränkung sein, auch wenn es im allgemeinen darauf hinausläuft. ;O) Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Hallo Verwirrter. um alle restlichen Klarheiten zu beseitigen: Design Rules sind im üblichen Sprachgebrauch was allgemeingültiges, z.B. der Mindestabstand. Constraints sind dagegen spezielle Eigenschaften aller möglichen Designobjekte, z.B. Impedanz > 47 und < 53 Ohm ist eine Eigenschaft eines bestimmten Netzes. In meiner Zuken-Software gibt es daher einen Constraint-Manager, der in allen verfügbaren logischen Ebenen Constraints definieren kann, vom Board über Layer und Bauteile bis zu Pads und Connections. Natürlich kann man Constraints für ein Netz definieren, aber auch für eine Netzklasse, oder für alle Netze, das ist dann eher sowas wie eine Design Rule. Insofern sind Constraints eine Erweiterung der Rules, aber die Constraint-matrix einer Hitec-Platine kann durchaus tausende von Einträgen haben. Es ist daher nicht unbedingt einfach damit umzugehen. Ein einziges Netz kann Limits enthalten für Länge, Widerstand, Kapazität, Impedanz, Breite und in Kombination mit anderen Netzen Übersprechen, Längendifferenz usw. ohne Anspuch auf Vollständigkeit. Beim Arbeiten im Team sind das sozusagen die Leitplanken, die der Hardwareentwickler dem Layouter vorgibt, und angeblich ein Ersatz für technische Besprechungen, aber das würde ich so nicht unterschreiben. Jedenfalls wird das Gedächtnis entlastet. Gruss Reinhard
@ Bernd Wiebus klar ;) @ Reinhard Kern Das da viel geht an speziellem Regelwerk ist mir schon klar. Nur der Begriff "Constraints" war mit bis dato fremd (bzw. eher von FreeCad bekannt). Kommt halt bei eagle oder Diptrace nicht vor (jedenfalls bis jetzt nicht). Netze mit bestimmten Vorgaben geht in Diptrace auch, aber bisher nicht in der von dir beschrieben Form. Längen lassen sich über Kontextmenü für einzelne Leiterzüge dauerhaft zuschalten (siehe Screenshot; man muss nicht unbedingt mit der Maus drüberfahren wie ich das hier gerade tat). Aber mit einer Impedanzvorgabe routen gibt es dort bisher nicht. Das müsste man schon "zu Fuß" über das Formelwerk berechnen oder annähern. In kommenden Versionen soll das aber möglich sein. Wobei die Freeware nur zwei Routinglagen unterstützt. Innenlagen können aber als Plane-Layer für Versorgungslagen (Power) auch breits in der Freeware hinzugefügt und genutzt werden. Will man dort auch noch routen braucht man eine Lizenz für die Standardversion. Dann hat man echte 4 Lagen. Die von dir genannten Layoutsysteme sind halt eine andere Liga und nichts für Gelegenheitsbenutzer. Danke dir! (Verwirrter entwirrt) ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.