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