Hallo Leute, wer kann mir mal einen Tipp geben, wie ich möglichst effizent ein Layout mit Kicad entwerfe, das aus vielen identischen Schaltungen besteht? Soll heißen, 16 gleiche Schaltkreise (Slaves), die mit einem Master über SPI verbunden sind, auf einer Leiterplatte. Die Slaves sollen als 4x4 Matrix auf der LP angeordnet werden und der Master etwas abseits davon, aber ebenfalls auf derselben Leiterplatte. Allerdings hat jeder Slave seine eigene Seite im hierarchischen Schaltplan und auch eigene Bauteilbezeichnungen. Jemand ne Idee, wie ich den Place&Route-Aufwand klein halten kann? Ich hoffe, dass das nicht zu verwirrend war und klar ist, was gemeint ist..?
Sven L. schrieb: Hallo Sven. > wer kann mir mal einen Tipp geben, wie ich möglichst effizent ein Layout > mit Kicad entwerfe, das aus vielen identischen Schaltungen besteht? Soll > heißen, 16 gleiche Schaltkreise (Slaves), die mit einem Master über SPI > verbunden sind, auf einer Leiterplatte. Für den Schaltplan solltest Du Dir einmal http://www.mikrocontroller.net/wikifiles/4/41/BuildingBlocksKiCAD-EXPERIMENTELL.zip über "Building blocks" durchlesen. Für das Layout empfehle ich Dir, einen Slave separat zu routen und auf einem "extra Board" abzuspeichern. Dieses importierst Du wieder 16 mal (mit "Append Board" unter File/Datei) in Dein Board mit dem Master, und plazierst sie. Beachte, dass das importierte Board brutal an seinen ursprünglichen Platz gesetzt wird. Vieleicht darum das "Slave-Board" vor dem Abspeichern etwas ausserhalb plazieren. Jetzt noch die Annotation von Hand neu machen, wobei Du die schon vorhandenen Module löschen musst. Das ist leider etwas umständlich. Dann liest Du die originale Netzliste in PCBnew ein. Dabei werden dann die Verbindungen hergestellt, entsprechend den Referenzen im Schaltplan und im Layout. Natürlich kannst Du anschliessend auch weitere Änderungen an den Slaves dürchführen, gemäß Schaltplan. > Die Slaves sollen als 4x4 Matrix auf der LP angeordnet werden und der > Master etwas abseits davon, aber ebenfalls auf derselben Leiterplatte. > Allerdings hat jeder Slave seine eigene Seite im hierarchischen > Schaltplan und auch eigene Bauteilbezeichnungen. Gut, das Du dafür schon hierarschiche Schaltpläne verwendet hast. ;O) Das macht das ganze einfacher. Trotzdem solltest Du Dir obiges über "Building blocks" durchlesen. Die Denkweisen kannst Du vergleichbar in PCBnew einsetzten. Das Routen des Slave kannst Du machen, indem Du einen der hierarschichen Slave Schaltpläne aus dem Projektordner verwendest, um eine separate Netzliste zu erstellen, und für die dann routest. > Jemand ne Idee, wie ich den Place&Route-Aufwand klein halten kann? s.o. > Ich hoffe, dass das nicht zu verwirrend war und klar ist, was gemeint > ist..? Ich hoffe, ich habe es begriffen. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Bernd Wiebus schrieb: > Sven L. schrieb: > > Hallo Sven. Hallo Bernd, da hätte ich mir die separate Nachricht an dich ja fast sparen können. ;D > Für den Schaltplan solltest Du Dir einmal > http://www.mikrocontroller.net/wikifiles/4/41/BuildingBlocksKiCAD-EXPERIMENTELL.zip > über "Building blocks" durchlesen. Werde ich gleich nochmal machen, ja. > Für das Layout empfehle ich Dir, einen Slave separat zu routen und auf > einem "extra Board" abzuspeichern. Dieses importierst Du wieder 16 mal > (mit "Append Board" unter File/Datei) in Dein Board mit dem Master, und > plazierst sie. Beachte, dass das importierte Board brutal an seinen > ursprünglichen Platz gesetzt wird. Vieleicht darum das "Slave-Board" vor > dem Abspeichern etwas ausserhalb plazieren. Jetzt noch die Annotation > von Hand neu machen, wobei Du die schon vorhandenen Module löschen > musst. Das ist leider etwas umständlich. Dann liest Du die originale > Netzliste in PCBnew ein. Dabei werden dann die Verbindungen hergestellt, > entsprechend den Referenzen im Schaltplan und im Layout. Natürlich > kannst Du anschliessend auch weitere Änderungen an den Slaves > dürchführen, gemäß Schaltplan. Eben genau dieses "manuelle" Gewurschtel wollte ich möglichst vermeiden. Aber wenn auch Du keine andere Lösung hast, dann werd ich es wohl so machen müssen. Ich glaube, jemand hatte schon für genau diese Problematik ein neues Projekt ins Leben gerufen (gerade erst gefunden): http://code.google.com/p/kicadocaml/ Man beachte die Beschreibung "hiding modules based on schematic sheet, module placement based on schematic location or simulated annealing, and arraying of components that are on duplicated schematic sub-sheets" Bei Altium nennt sich die Geschichte "multi-channel design": http://wiki.altium.com/display/ADOH/Creating+a+Multi-channel+Design
Sven L. schrieb: Hallo Sven. > > Hallo Bernd, da hätte ich mir die separate Nachricht an dich ja fast > sparen können. ;D ;O) Ich gehe aber mal davon aus, das hier jede Menge Leute sind, die sich viel besser damit auskennen als ich. Vieleicht meldet sich davon ja einer. > Eben genau dieses "manuelle" Gewurschtel wollte ich möglichst vermeiden. > Aber wenn auch Du keine andere Lösung hast, dann werd ich es wohl so > machen müssen. > Ich glaube, jemand hatte schon für genau diese Problematik ein neues > Projekt ins Leben gerufen (gerade erst gefunden): > > http://code.google.com/p/kicadocaml/ Danke für den Tip. Mit Ocam kenn ich mich nun überhaupt nicht aus... Es ist wäre eh einfacher, die Reannotation nicht in PCBnew zu machen, sondern mit einem Texteditor im File direkt, es fehlt aber etwas die Übersicht....darum gärt in mir schon eine dumpfe Idee eines Python Skriptes, dass das Renaming per Liste erlaubt. Jedenfalls halte ich eine vollautomatische Zuweisung ohne ein paar Absicherungen für nicht sinnvoll machbar. D.h. das Programm/Skript müsste dafür davon Ausgehen können, dass ein Bestimmtes Layout auch für andere Subschaltpläne EXACT gelten soll. Eine Liste könnte zwar automatisch erstellt werden, sollte aber von Hand überprüft und gegebenenfalls geändert werden können. Leider hab ich gar nicht so viel Zeit, wie ich Ideen habe. > Man beachte die Beschreibung "hiding modules based on schematic sheet, > module placement based on schematic location or simulated annealing, and > arraying of components that are on duplicated schematic sub-sheets" > Das mehrfache einlesen könnte auch per Python Skript passieren. Nur wenn Du für jeden Slaveblock schon ein extra Schematic hast, würde ich als Programm davon ausgehen, dass sie sich schon "irgendwie" unterscheiden, abgesehen von der Referenz/Annotation. WAS ist also für ein Programm/Skript das Kriterium, dass das zulässig ist, und das gleiche Positionen (Was ist, wenn ein Schematic leicht verändert/verschoben ist?) auch gleiche Module, gleiches Routing bedeuten? Vollautomatisch ist also etwas Problematisch, aber ein halbautomatisches Verfahren mit Listen ist vermutlich recht problemlos machbar, und mit Sicherheit sehr flexibel. Ausserdem könnte man dann auch ein komfortableres Annotationsverfahren vorsehen, das weit über die jetzigen Kicad Möglichkeiten hinausgeht, z.B. mit längeren alphanumerischen Pre- und Suffixen. > > Bei Altium nennt sich die Geschichte "multi-channel design": > > http://wiki.altium.com/display/ADOH/Creating+a+Multi-channel+Design Danke für den Tipp! Leider kenne ich Altium nicht. Aber wenn Du das aus dem Programm heraus direkt vorsiehst, sieht die Sache anders aus. Es ist vermutlich einfacher zu implementieren, weil die passenden Informationen vom Schaltplan mitgeliefert werden. Wenn Du irgendwo fixiert hast, das Subschaltplan B bis auf die Annotation eine exakte Kopie von Subschaltplan B ist, kannst Du auch einfacher sagen, dass das Layout in dem Bereich auch eine Kopie ist....das gilt aber nur für das erste Anlegen. Wenn Du irgendein Bauteil leicht versetzt, um z.B. einer Befestigungsbohrung auszuweichen, ist das ganze schon eine Einbahnstrasse. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Bernd Wiebus schrieb: > ;O) > Ich gehe aber mal davon aus, das hier jede Menge Leute sind, die sich > viel besser damit auskennen als ich. Vieleicht meldet sich davon ja > einer. Ich denke, dass Du schon ein recht kompetenter Ansprechpartner dafür bist, da Du ja auch Tutorials zu Kicad geschrieben hast. Daher vertrau ich deinen Ausführungen voll und ganz. ;P >> http://code.google.com/p/kicadocaml/ > > Danke für den Tip. Mit Ocam kenn ich mich nun überhaupt nicht aus... Naja, ich hatte es auch nur ergoogelt und noch nicht ausprobiert. Zu schade, dass sich Leute so viel Arbeit machen (OpenGL Unterstützung) und das ganze Projekt dann einschläft bzw. nicht in Kicad importiert werden kann (Ocaml/C++). Das gilt m.E. auch für GEDA PCB und Kicad. Welch eine Verschwendung von Manpower... naja, Auswahl ist auch immer gut. > Leider hab ich gar nicht so viel Zeit, wie ich Ideen habe. Ja, das Problem kommt mir verdammt bekannt vor... ^^ >> Bei Altium nennt sich die Geschichte "multi-channel design": >> >> http://wiki.altium.com/display/ADOH/Creating+a+Multi-channel+Design > > Danke für den Tipp! Leider kenne ich Altium nicht. Tja, da sind wir schon zu zweit. Welcher Hobbyist hat schon die Kohle dafür? D.h. im Studium hatten wir mal was mit Altium gemacht, aber keine Layouts, nur nen FPGA damit programmiert. Andererseits bin ich "fast" voll zufrieden mit den Möglichkeiten, die Kicad bietet. Es fehlen eben nur noch so "Kleinigkeiten", wie eine Unterstützung beim Routing von differenziellen Signalen (Impedanzen, Laufzeiten).... @_@ Das wäre doch mal was für Googles "Summer of Code" Initiative. Grüße, Sven
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.