Forum: Platinen Routing-Strategie?


von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Hallo zusammen,

Ich stehe des öfteren vor dem Problem, für eine Schaltung mit einem AVR 
eine Platine zu routen. Dabei gibts immer einige/viele Signale, die auf 
einen Port vom AVR gehen sollen, wobei rein hardware-mäßig recht egal 
ist welcher Port/welches Bit, weil ich das eh nachher in Software mache.

Nun muss ich aber im Schaltplan natürlich schon mal Verbindungen 
schaffen, damit ich diese routen kann, um dann draufzukommen, dass 
anders besser gewesen wäre. Und dieses Spiel kann man recht oft 
iterieren...

Momentan helfe ich mir, indem ich im Schaltplan TPs (Testpunkte) setze, 
einen für jeden in Frage kommenden Pin des AVR, und nochmal einen für 
jedes notwendige Signal. Im Routing versuch ich nun die TPs einander 
anzunähern, und wenn ich dann sehe welcher mit welchem am einfachsten zu 
verbinden wäre, ersetze ich die TPs im Schaltplan durch echte 
Verbindungen.

Das ist aber irgendwie nicht ganz das Hellgelbe vom Ei....

Wie macht ihr das?

: Verschoben durch User
von derptank (Gast)


Lesenswert?

Ich musste vor kurzem ca 40 Signale vom einem Display an einen Connector 
routen.
Die Belegnung der Pins des Connectors war relativ egal (hatte nur immer 
wieder Masse Pins dazwischen), deswegen habe ich die Komponenten 
plaziert und dann angefangen die Leitungen zu ziehen. Damit sind alle 
schön als Bündel zusammen gekommen. Nebenbei habe ich die gerade 
geroutete Verbindung im Schaltplan eingetragen.
Zum Schluss habe ich mir dann aus dem Schaltplan noch die Netzliste 
erzeugt und überprüft, ob alles richtig verdrahtet ist.

Also nur die unveränderlichen Verbindungen im Schaltplan eintragen, 
routen und dann den Rest darauf angepasst routen und einzeichnen.

von Dietrich L. (dietrichl)


Lesenswert?

Nur so eine Idee: das Bauteil so erstellen, dass man "Pinswap" (heißt 
bei Eagle jedenfalls so) benutzen kann.
Ich habe allerdings noch nicht damit gearbeitet und kenne auch nicht die 
genauen Möglichkeiten und Grenzen dieser Funktion.

Gruß Dietrich

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Pinswap ist leider nicht wirklich hilfreich: Das kann man verwenden, um 
z.B. einen Widerstand "umzudrehen", da beide Pins gleichwertig sind 
(oder die Eingänge eines NAND-Gatters etc.)

Die Pins eines AVR sind aber nciht wirklich austauschbar, und das 
Lib-Teil ist auch nciht so definiert (aus gutem grund)

von Michael (Gast)


Lesenswert?

Michael Reinelt schrieb:
> Die Pins eines AVR sind aber nciht wirklich austauschbar, und das
> Lib-Teil ist auch nciht so definiert (aus gutem grund)
Solche Pauschalsprüche sind leider wenig hilfreich, allenfalls bei 
strohdoofen Autoplacern und Autoroutern.

Ob Pins vom µC im Layout getauscht werden können, hängt immer noch von 
der in der zugehörigen Software verwendeten Funktion ab.

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Michael Reinelt schrieb:
> Die Pins eines AVR sind aber nciht wirklich austauschbar, und das
> Lib-Teil ist auch nciht so definiert (aus gutem grund)

Aber auf der Steckerseite ist das egal, da kannst du tauschen. Einfach 
den swaplevel des connectors größer null und auf gleiche Zahl setzen und 
mit pinswap tauschen.

Zur Routing Strategie würde ich vorschlagen die Leitungen vom Prozessor 
weg zu ziehen und als parallelen Bus bis zum Stecker zu routen. Dort 
dann mit Pinswap das ganze hin- und her tauschen und anschließend den 
Schaltplan nachführen.

Da eagle kein push and shove kann und der follow me router das einfach 
wild in die Gegend legt ist das ein bisschen und zeit- nervenaufwendig, 
geht aber.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

@Michael: Natürlich hängt es von der SW ab ob die Pins getauscht werden 
können. Aber davon kann das Lib-Part ja nix wissen. Und deshalb sin die 
Pins dort als "nicht austauschbar" konfiguriert (was ja erstmal so 
richtig ist)

@all: ich hab mich undeutlich ausgedrückt: Es geht nicht (nur) um einen 
Stecker, sondern um Signale die von/zu anderen Komponenten gehen/kommen. 
Stecker ist ja einigermaßen easy, weil da hab ich ein Bauteil wo ich 
die Überkreuzungen auflösen muss.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

natürlich musst du selbst wissen, ob 2 Pins wirklich vertauschbar sind. 
Das ist nicht nur von der Bauteildefinition, sondern auch vom Einzelfall 
abhängig. z.B. interessiert es mich bei einem reinen Logikausgang wenig, 
ob die Ports verschieden hohe Ströme können, oder bei einem PLD gibt es 
Ein/Ausgänge, Nur-Eingänge und Nur-Ausgänge - da kann ich also zwischen 
I/O und Ionly tauschen, wenn ich einen Input brauche, sonst eben nicht. 
Ausserdem ist zu beachten, Dass ein Pintausch weitere erfordern kann, 
z.B. wenn man in einem TTL-Baustein auf ein anderes Gatter geht. In 
meinem System gibt es daher Gate Swap und Pin Swap.

Dass in der Library Austauschregeln definiert sind, ist ein Hilfsangebot 
an den Layouter. Wenn man weiss was man tut, kann man sich z.B. einen 
Prozessor so definieren, dass alles mit allem tauschbar ist (naja, GND 
und VCC besser nicht).

Gruss Reinhard

von Peter D. (peda)


Lesenswert?

Ich mache das Vertauschen auch nur händisch. An der CPU stehen die 
Netz-Label und wenn ich sehe, daß Tracks über Kreuz sind, tausche ich 
die Label und "update pcb".
Rückwärts (pcb -> sch) habe ich es noch nicht probiert.


Peter

von Michael L. (michaelx)


Lesenswert?

Also ehrlich,

wenn man vor so viel geballtem "Wissen" nicht kapituliert ...

Die Begründungen, warum an Pinswap einem Stecker sinnvoll ist, aber an 
einem AVR nicht, lassen einem ja die Haare zu Berge stehen. =:-o

Solche Erklärungen an Hand vorhandener Librarys abzuleiten, ist schon 
sehr gewagt.

Ich würde ja viel eher vermuten, dass der Ersteller der AVR-Libs sich 
dabei genau so wenig gedacht hat wie ein anderer bei einem SATA-Stecker, 
bei dem alle(!) Pins auf Swaplevel 1 gesetzt sind. Autsch!

Swaplevel ersetzt nicht das selbständige Denken.

@Peter Dannegger
Pinswap im Board ist kein Problem, da sieht man auch direkt, welche Pins 
man tauschen will/muss. Aber den Schaltplan musst du hinterher trotz dem 
wieder "schön" machen.


Grüße.

von Reinhard Kern (Gast)


Lesenswert?

Michael L. schrieb:
> Aber den Schaltplan musst du hinterher trotz dem
> wieder "schön" machen.

Egal ob man Forward Annotation, Back Annotation oder Handarbeit nimmt, 
in jedem Fall sollten am Ende Schaltplan und Leiterplatte wieder 
übereinstimmen, und zwar nachprüfbar. Es sei denn man mag keine 
Servicetechniker.

Gruss Reinhard

von Michael L. (michaelx)


Lesenswert?

Reinhard Kern schrieb:

> Michael L. schrieb:
>> Aber den Schaltplan musst du hinterher trotz dem
>> wieder "schön" machen.
>
> Egal ob man Forward Annotation, Back Annotation oder Handarbeit nimmt,
> in jedem Fall sollten am Ende Schaltplan und Leiterplatte wieder
> übereinstimmen, und zwar nachprüfbar.

Irgendwie hast du das mit dem "schön" machen nicht verstanden! Das bei 
Änderungen Schaltplan und Board konsistent bleiben, setze ich voraus.

Aber nach ein paar Pinswap sieht der Schaltplan eher aus wie "Kraut und 
Rüben", d.h. man muss die Verbindungen wieder ausrichten.

:-/

von Reinhard Kern (Gast)


Lesenswert?

Michael L. schrieb:
> Aber nach ein paar Pinswap sieht der Schaltplan eher aus wie "Kraut und
> Rüben"

Ja, leider gibt es für Schaltpläne noch keinen Autorouter...

Gruss Reinhard

von 6A66 (Gast)


Lesenswert?

Michael L. schrieb:
> Aber nach ein paar Pinswap sieht der Schaltplan eher aus wie "Kraut und
> Rüben", d.h. man muss die Verbindungen wieder ausrichten.

Deswegen mache ich das anders: Im Schaltplan die Änderungen rein und 
dann Forward annotation - zeichnen muss ich sowieso nochmal dann lieber 
gleich. Ist aber eben auch Philiosophie.

Grüße

von Michael L. (michaelx)


Lesenswert?

6A66 schrieb:
> Michael L. schrieb:
>> Aber nach ein paar Pinswap sieht der Schaltplan eher aus wie "Kraut und
>> Rüben", d.h. man muss die Verbindungen wieder ausrichten.
>
> Deswegen mache ich das anders: Im Schaltplan die Änderungen rein und
> dann Forward annotation - zeichnen muss ich sowieso nochmal dann lieber
> gleich. Ist aber eben auch Philiosophie.
>
> Grüße

Klar, geht genau so. Problem ist nur, u.U. mühsam geroutete Leiterbahnen 
zu verlieren, wenn man im Schaltplan die Leitungen auftrennt, und neu 
verdrahtet, ggf. auch bei Gate- oder Pinswap.

Grüße.

von Reinhard Kern (Gast)


Lesenswert?

Michael L. schrieb:
> Problem ist nur, u.U. mühsam geroutete Leiterbahnen
> zu verlieren

Eben, da mangelt es den CAD-Systemen noch an der nötigen Intelligenz, 
meistens wird die gesamte geroutete Leiterbahn aufgelöst. Meistens 
könnte man aber den grössten Teil lassen wie er ist und nur die letzten 
mm ändern (wegen denen man ja das Swapping macht). Das mache ich dann 
lieber im PCB rein manuell, da kann ich selbst bestimmen, was geunrouted 
(schrecklich) wird und was nicht.

Gruss Reinhard

von Christian B. (luckyfu)


Lesenswert?

Michael L. schrieb:
> Klar, geht genau so. Problem ist nur, u.U. mühsam geroutete Leiterbahnen
> zu verlieren, wenn man im Schaltplan die Leitungen auftrennt, und neu
> verdrahtet, ggf. auch bei Gate- oder Pinswap.

Vernünftige Programme löschen aber nicht den kompletten Leiterzug bei 
einer Forward Annotation.
Außerdem kann man das leicht umgehen indem man die letzten mm zum 
Padanschluss offen lässt.
Wenn ein Layout system eine solche Leitung dann auch löscht gehört ihm 
die Berechtigung, sich Layoutsystem zu nennen, entzogen.

von 6A66 (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Eben, da mangelt es den CAD-Systemen noch an der nötigen Intelligenz,
> meistens wird die gesamte geroutete Leiterbahn aufgelöst.

AD10 kann's, weswegen ich mich auch für die Strategie entscheiden habe. 
Der zeigt dann per online DRC an wo die Netze kollidieren und da kann 
man dann einhaken.
Schön wird's dann erst wenn man in bestehende Netze noch was 
reinfrickeln muss (z.B. einen Schalttransistor als Inverter), dann 
einfach rein in den Schaltplan, man sieht dann schon was noch mal neu 
gemacht werden muss (bleibt halt alles drin was schon mal gemacht 
wurde). Ist bei Änderungen am Layout absolut umproblematisch.

rgds

von Ralf I. (ritro)


Lesenswert?

Ich arbeite seit ca. 10 Jahren mit EAGLE und ich benenne die Signale
z.B. AVR Port A  PA1= Start.
Geht in EAGLE ganz einfach mit "Name" und dann mit "Label" auf den 
Singallayer setzen.
Und ich hab beim Schaltplan zeichnen immer den den Beleungsplan des AVR
dabei, so kann ich die Signale beim routen besser sortieren.
Und ich hab schon beim Schaltplan zeichnen ein Layout im Kopf.

von Reinhard Kern (Gast)


Lesenswert?

Ralf Ihle schrieb:
> Und ich hab schon beim Schaltplan zeichnen ein Layout im Kopf.

Wie unmodern. Der heutige Mensch weiss ja keine einzige Adresse oder 
Telefonnummer mehr, dafür hat man seine elektronischen Assistenten, und 
Layouternachwuchs wird von vielen Firmen gar nicht mehr ausgebildet oder 
eingestellt, weil sie fest daran glauben, dass Autoplazierer, Autorouter 
und Codegeneratoren in Zukunft alles von selbst konstruieren.

Bei den grösseren CAD-Systemen wird Nachdenken längst durch Constraint 
Managment ersetzt, das kommt irgendwann auch bei Eagle und Konsorten.

Gruss Reinhard

von Falk B. (falk)


Lesenswert?

@  Reinhard Kern (Firma: RK elektronik GmbH) (rk-elektronik)

>> Und ich hab schon beim Schaltplan zeichnen ein Layout im Kopf.

>Wie unmodern. Der heutige Mensch weiss ja keine einzige Adresse oder
>Telefonnummer mehr, dafür hat man seine elektronischen Assistenten,

Wenn gleich mir die feine Ironie nicht entgangen ist, haben ICH beim 
Schaltplanzeichen KEINERLEI Layout im Kopf. Warum auch? Es ist der 
SCHALTPLAN! Der stellt die logisch/elektrischen Zusammenhänge dar, NICHT 
die geometrischen! Das kommt im Layout und hat mit dem Schaltplan sehr 
wenig zu tun. Bestenfalls Pinswap, Gate swap und ein paar eingefügte 
Lötbrücken.

von Christian B. (luckyfu)


Lesenswert?

Falk Brunner schrieb:
> Wenn gleich mir die feine Ironie nicht entgangen ist, haben ICH beim
>
> Schaltplanzeichen KEINERLEI Layout im Kopf. Warum auch? Es ist der
>
> SCHALTPLAN!

So sehe ich das auch. Wenn ich einen Schsaltplan zeichne ist dort in 
erster Linie wichtig mit möglichst wenig Aufwand die Funktion der 
Schaltung nachvollziehen zu können. In diesem Sinne kann es hilfreich 
sein, einzelne, wichtige Netze mit Namen zu versehen. Bei 
Spannungsversorgungen mache ich dies z.B. generell, mit dem Zusatz der 
Stromstärke, sodaß man im Layout entsprechende Kupferbreiten vorsehen 
kann. Keinesfalls jedoch benenne ich jedes kleine Netz, denn das 
wiederum würde zum einen eine Menge unnötige Arbeit bedeuten und zum 
anderen das Ergebnis eher unübersichtlicher machen.

Das Layout steht und fällt imho mit der Bauteilplatzierung. Wenn man die 
geschickt anstellt kann man sich beim Routen jede Menge Arbeit sparen. 
Allerdings kann man es sich auch vollkommen erschweren, bis zur 
Unmöglichkeit wenn man diesen Part versaut.

Pinswap oder Partswap mache ich jedoch auch ausschließlich in 
Forwardannotation. Ich sehe, daß der Tausch sinnvoll ist, erledige das 
im Schaltplan und bringe die Änderung danach ins Layout.

von 6A66 (Gast)


Lesenswert?

Christian B. schrieb:
> Das Layout steht und fällt imho mit der Bauteilplatzierung. Wenn man die
> geschickt anstellt kann man sich beim Routen jede Menge Arbeit sparen.
> Allerdings kann man es sich auch vollkommen erschweren, bis zur
> Unmöglichkeit wenn man diesen Part versaut.

Affirmative!
Deswegen haben ich zum Layout den Schaltplan neben mir liegen - aber 
nicht umgekehrt.

Reinhard Kern schrieb:
> Bei den grösseren CAD-Systemen wird Nachdenken längst durch Constraint
> Managment ersetzt, das kommt irgendwann auch bei Eagle und Konsorten.

Constraint management hilft viel, aber das intelligente Nachdenken kann 
es nicht ersetzen. Zumindest die günstigeren Pakete leben davon, dass 
für ein VERNÜNFTIGES Layout der User da selbst etwas reinsteckt. Klar - 
auf einer Europakarte kriegt jeder Placer und Router eine Schaltung mit 
10 Bauteilen unter. Je kleiner dei Bauteile werden, der Platz wird, je 
weniger Sigbnallagen und bei doppelseiteiger Bestückung wird's langsam 
haarig. Das was ich bisher an "Bitte mal drüberscheuen - Layouts gesehen 
habe" ist (recht) trivial gewesen.

Grüße

von Reinhard Kern (Gast)


Lesenswert?

6A66 schrieb:
> Constraint management hilft viel, aber das intelligente Nachdenken kann
> es nicht ersetzen.

Ich finde vor allem dass es in vielen Fällen zu aufwändig ist, 
jedenfalls für mich persönlich: ich weiss, was bei einer CLK-Leitung zu 
beachten ist und auch dass Datenbusleitungen gleich lang sein sollen - 
das aber alles als Constraint einzugeben mit maximaler Längendifferenz, 
minimaler und maximaler Signalverzögerung, maximalem Übersprechen usw. 
usw. ist elendig viel Arbeit für etwas, was ich (bis jetzt jedenfalls 
noch) im Kopf habe. Als sinnvoll sehe ich das an, wenn mehrere Personen 
an einem Projekt arbeiten - aber viel Arbeit bleibt es trotzdem.

Wenn meine Layouts nicht mehr funktionieren, weil ich sowas übersehen 
habe, überdenke ich das neu, aber bisher gab es keine Beanstandungen. 
Ausserdem ist ein Mensch, der einen Datenbus erkennt und als solchen 
gebündelt verlegt immer noch besser als ein Autorouter mit Tausenden 
Constraints.

Gruss Reinhard

von Klaus S. (klaws)


Lesenswert?

Wenn sich der Router die Position der Pins aussuchen darf, dann ist das 
schon Autoplacement. Sowas kann wohl Bartels AutoEngineer - kenne ich 
nicht, und liegt wahrscheinlich auch deutlich ausserhalb meiner 
Preisliga. Eagle kann es definitiv nicht.

So ein Automatismus ist natürlich auch gefährlich. Ich baue noch schnell 
einen neuen Testpunkt in den Schaltplan, schmeisse den Autorouter an und 
klammheimlich werden zwei Pins ausgetauscht. Und ich merke nichts und 
vergesse die Anpassung der Firmware. da wäre es natürlich schon, wenn 
der Autorouter auch eine passende *.inc-Datei erzeugen könnte, in der 
die aktuellen Pinzuordnungen vermerkt sind...und das ganze noch die 
Versionierung angebunden. Ich brauche dann ja eventuell unterschiedliche 
Firmwareausprägungen für verschiedene Board-Versionen...

Ich verwende Eagle, das reicht für mich aus. Meine "Routing-Strategie" 
heisst "zwei Layer". Die Bauteile platziere ich erstmal mit eiwas 
großzügigem Abstand zueinander. Wenn ich dann feststelle, dass der 
Autorouter aufgrund suboptimaler Pinzuordnung Kreuzungen einbauen muss, 
wechsele ich die Pins. Wenn Kreuzungen (und somit auch die Vias) 
wegfallen, gewinne ich Platz auf der Platine und kann anfangen, die 
Bauteile näher zusammenzurücken. Eventuell kommt es nachher sogar 
soweit, dass ich den Top-Layer deaktivieren kann und sogar mit einer 
einseitigen Platine auskomme.

Viele Grüße, Klaus

von 6A66 (Gast)


Lesenswert?

Klaus Stock schrieb:
> Position der Pins aussuchen darf, dann ist das
> schon Autoplacement

Hmmmm?
Ich dachte immer (seit 20 Jahren), dass autoplacement etwas mit 
Platzieren (engl.: to place) der Bauteile auf dem PCB zu tun hat?

Klaus Stock schrieb:
> schmeisse den Autorouter an und
> klammheimlich werden zwei Pins ausgetauscht.

Das dachte ich ist "Pinswap"?

Klaus Stock schrieb:
> da wäre es natürlich schon, wenn
> der Autorouter auch eine passende *.inc-Datei erzeugen könnte,

AD10 erzeugt dazu eine ECR-Liste (Engineering Change Request) die man 
dann prüfen und anstoßen kann, auch im backward annotation Prozess. Wenn 
der Autorouter also irgend was tut sollte das auch wieder im Schematic 
landen. Best case also mit Information an die Person die vorm Schirm 
sitzt. Alles andere ist vom Entwicklungsprozess her sehr bedenklich - da 
gebe ich Dir recht.
BTW: ich bin kein FAN irgeneines Systems, höchstens dessen das den 
nominellen Entwicklungsprozess am besten und maximal fehlervermeindend 
umsetzt.

rgds

von Klaus S. (klaws)


Lesenswert?

6A66 schrieb:
> Klaus Stock schrieb:
>> Position der Pins aussuchen darf, dann ist das
>> schon Autoplacement
>
> Hmmmm?
> Ich dachte immer (seit 20 Jahren), dass autoplacement etwas mit
> Platzieren (engl.: to place) der Bauteile auf dem PCB zu tun hat?

Korrekt. Aber die Aufgabe, herauszufinden, wo welches Signal am besten 
am IC ankommen soll, fällt ebenfalls in diesen Bereich. Die hier 
notwendige "Intelligenz" hat nichts mehr mit den Routingalgorithmen 
gemein, sondern hier sind Platzierungsalgorithmen am Werk.

Selbstverständlich ist es weniger aufwändig, zu einem Pool vorhandener 
Pinpositionen eine Reihe an gewünschten Signalen zuzuordnen (je ein 
Signal wird an einer Pinposition platziert), als sämtliche Bauteile zu 
platzieren. Aber mit einem einfachen Ausprobieren ist es auch nicht 
getan, dafür gibt es zu viele Kombinationsmöglichkeiten (abgesehen von 
simplen Problemen mit wenigen Pins, klar - aber die kann ich auch sehr 
einfach von Hand regeln). Schon bei acht Pins, bei denen sich die 
Software die Signale selbst aussuchen darf, gibt es schon über 40.000 
Kombinationsmöglichkeiten. Damit scheidet "alles ausprobieren und 
nachschauen, wo das beste Routingergebnis rauskommt" aus.

Ich nehme an, dass die aktuellen Autoplacer heuristisch arbeiten. Die 
Freiheitsgrade werden durch Regeln signifikant reduziert. Da die Regeln 
fallspezifisch zu erfassen sind, ergibt sich ein recht hoher manueller 
Aufwand. Hier das "optimale Ergebnis auf einen Knopfdruck" zu erreichen, 
ist noch weiter entfernt als beim Autorouter.

Es gibt natürlich auch simplere Ansätze, wo tatsächlich der Autorouter 
ein schon platziertes Bauteil zur Seite schieben kann, wenn noch ein 
Signal vorbeigeführt werden soll oder Platinenplatz verschwendet würde. 
Keine Ahnung, ob das tatsächlich irgendwo so angewandt wird. Aber dieser 
Router-zentrische Ansatz taugt nichts für den "automatischen Pinswap".


Aber ich denke, dass hier in der Diskussion jetzt munter Groß- und 
Kleinprojekte durcheinandergeworfen werden - und ich lasse mich jetzt 
auch noch auf Diskussionen ein, in welche Kategorie Algorithmen für 
einen "automatische Pinswap" fallen. Das wollte Michael Reinelt bestimmt 
nicht wissen :-)

- Klaus

von Klaus S. (klaws)


Lesenswert?

Ach ja, "Sonderfall" Altium: hier ist Pinswap ein separater Prozess. 
Altium nennt es weder Router noch Placer, sondern Optimizer.

- Klaus

von Christian B. (luckyfu)


Lesenswert?

Ich weiß nicht, ob ich altmodisch oder vielleicht einfach nur dumm bin, 
aber ich habe noch nie einen Automatismus beim Platzieren oder routen 
verwendet (von Push and Shove, Online DRC u.a. Unterstüzungsprozessen 
mal abgesehen). Bisher hat diese Strategie selbst dichteste 
Platzierungen mit geringstmöglichem Lagenverbrauch zustandegebracht. Ich 
kann mir nicht vorstellen, daß ein Autorouter ähnlich komplexe Aufgaben 
lösen kann. Bei einfachsten Platinen ist hingegen der Aufwand, den 
Autoplacer / Router so einzustellen, daß etwas sinnvolles dabei 
herauskommt, jedenfalls in meiner Vorstellung, ebenso groß wie der, das 
gleich von Hand zu erledigen.

Ok, ich muss zugeben, daß ich für mein Leben gern Layouts erstelle, evtl 
blockiert mich diese Vorliebe auch etwas in der Objektivität. Gestützt 
wird die Meinung von Personen, die schon seit 25 Jahren Layouts 
erstellen. Somit bin ich noch nie ernsthaft auf den Gedanken gekommen 
dies anzuzweifeln.

Natürlich sollte man sich aber Manche Verfahren der Autorouter 
anschauen, so nutze ich auch bei Mehrlagigen Platinen die Lagen so, daß 
ich die Signale in einer Vorzugsrichtung erstelle. Dadurch kann man, 
gerade bei der Mitwirkung von Bussen, sehr viel dichter arbeiten als 
wenn man Leitungen kreuz und Quer zieht. Dadurch verbaut man sich dann 
regelmäßig den Weg. Natürlich benötigt dieses Verfahren mehr Via's pro 
Signal, ist somit nicht immer ideal / anwendbar. Gerade bei differential 
Pairs sollte man so wenig wie möglich Lagenwechsel im Signalverlauf 
haben. Da muss man dann eben "improvisieren".

Und dann gibts da noch das Damoklesschwert der EMV... Die zu beherrschen 
ist, besonders wenn nicht nur eine Platine beteiligt ist, mit 
zunehmnender Komplexität auch immer mehr ein Stück "schwarze Kunst".

Allerdings ist klar, daß es einige Zeit und viele Platinen braucht um 
einen "Blick fürs Layout" zu bekommen. Layouten ist halt nix, was man 
sofort kann, aber man muss schon Vorraussetzungen mitbringen.
So sieht man dann eben bei der Platzierung schon, wie man bestmöglich 
Platz sparen kann. Daß kann auch dazu führen, daß man z.B. 
Bauteilgehäuse austauscht, weil man sieht, daß man in einer anderen 
Gehäuseform mit weniger Aufwand das gleiche erreichen kann.

von 6A66 (Gast)


Lesenswert?

Klaus Stock schrieb:
> Die hier
> notwendige "Intelligenz" hat nichts mehr mit den Routingalgorithmen
> gemein, sondern hier sind Platzierungsalgorithmen am Werk.

Klaus Stock schrieb:
> weder Router noch Placer, sondern Optimizer.

Hallo Klaus,

einigen wir uns: das ist philosophisch :)

Klaus Stock schrieb:
> Aber ich denke, dass hier in der Diskussion jetzt munter Groß- und
> Kleinprojekte durcheinandergeworfen werden - und ich lasse mich jetzt
> auch noch auf Diskussionen ein, in welche Kategorie Algorithmen für
> einen "automatische Pinswap" fallen. Das wollte Michael Reinelt bestimmt
> nicht wissen :-)

Gut, das ist richtig. Warum erzähle ich trotzdem etwas? Nicht damit der 
TO AD10 kauft - auch ich würde das für Bastelei NIE tun. Damit aber alle 
die hier mitlesen vielleicht über den Tellerrand sehen können, was es 
gibt, warum und wieso ... Und da denke ich sind neben Bastlern auch 
Profis dabei - im Fachjargon: gegenseitige Befruchtung :)

Hallo Christian,

Christian B. schrieb:
> Ich weiß nicht, ob ich altmodisch oder vielleicht einfach nur dumm bin,
> aber ich habe noch nie einen Automatismus beim Platzieren oder routen
> verwendet

Ich mache jetzt schon Jahre kommerziell Layouts , mit einer langen 
Unterbrechung dazwischen. Und auf verschiedenen Systemen. Früher mal mit 
Cadstar. Da war der Bartes so gepriesen. Da haben wir mal dem PCB 
Dienstleister mein letztes Layout gegebn damit er das durch den Bartels 
durchschiebt. Was rauskam? ich habs in THT ganz ohne VIas auf nem 4 
Lager gemacht, der Bartels hat nen Haufen Vias in 6 lagen geroutet. Klar 
habe ich meinen Zeit gebraucht. Aber eiens habe ich gelernt: Der 
Autorouter mag zwar schneller gehen (Kostenersparnis in der Entwicklung) 
aber das Ergebnis für die Serie wird sehr wahrscheinlich (Bitte keine 
Schläge, ja es mag au8ch Gegenbeispiele geben) manuell besser sein. Ist 
für mich halt ein Tradeoff: Schnelligkeit für die Entwicklung (für ein 
geringe Stückzahl) oder Kostenoptimiert für eine hohe Serienstückzahl in 
manuellere Technik. Ich für meinen Teil bleibe bei manueller Arbeit 
(auch weil ich bisher kein AD10 Autorouter Lauf mit halbwegs 
vernünftigem Ergebis gesehen habe - auch hier: Ich stelle gerne eine 
Umgebung mit Board_outline und Placement zur Verfügung für jemandem der 
mir gerne das Gegenteil beweisen will).

Pinswap: JA! Gateswap: JA - aber auch bitte manuell gesteuert. Dann kann 
ich beim Layout vermeiden dass ich eine Leitung so legen muss dass sie 
mir eine richtige Sperre legt. Aber erst jetzt beim AD10 geht das 
vernünftig forward und backward zu annotieren. Früher wars PITA.

Autoplacement: Das ist nur was wo es etwas bringt, bei mir hat's noch 
nie was gebracht. Bei hochgradigen Arrays vielleicht, ja? Aber das 
letzte Layout das ich gemacht habe hat 32 möglichst identische analoge 
Funktionsblöcke erfordert. Das habe ich ohne autoplacement gemacht und 
platziert war in etwa 1h - etwa 600 Bauteile. Gewusst wie.

Gut, was ist für denn Bastler dabei?
Wer Platz hat und einen vernünftigen Autorouter hat der möge Ihn 
gebrauchen. Aber bitte Hirn einschalten und Ergebnis nachkontrollieren 
und Rahmenbedingungen so einstellen dass das Ergebnis auch fertigbar 
ist. Ansonsten lieber hinsetzen, Hirn einschalten und Layout manuell 
machen. Die Basteleien die ich bisher gesehen habe sind in maximal 8h 
manuell geroutet - mit gutem bis sehr gutem Ergebnis. Und die geliche 
Zeit stecke ich in einen vernünftigen sauberen Schaltplan auch rein (50% 
Schematic, 50% Layout).
Pinswap und Gateswap helfen - aber nur wenn sie vernünftig mit dem 
Schematic zusammenarbeiten ansonsten ist die Gefahr für 
verlorengegangene Änderungen zu groß. Die Hilfe dieser beiden Werkzeuge 
halte ich im Bastelbereich aber für sehr überschaubar - wenn nicht sogar 
der Aufwand (Bauteile müssen entsprechend konfiguriert sein, 
forward/backward annotation, ...) den Nutzen überschreitet.
Autoplacement: Forget it.

Dann lieber ein Paket das manuelles Layout SUUUPEER unterstützt, das 
durchgängig den Prozess SAUBER unterstützt und keine Fehler erlaubt als 
eine Krücke mit vielen Automatismen.

rgds

von Christian B. (luckyfu)


Lesenswert?

6A66 schrieb:
> Dann lieber ein Paket das manuelles Layout SUUUPEER unterstützt, das
> durchgängig den Prozess SAUBER unterstützt und keine Fehler erlaubt als
> eine Krücke mit vielen Automatismen.
>
> rgds

So sehe ich das auch. Bisher hat sich beim AD10 der für mich sinnvollere 
Workflow als mit Eagle ergeben, ähnlich zum Mentor Pads. Es gibt 
freilich Unterschiede zwischen beiden, und das nicht nunr im Preis, auch 
funktional die sind aber eher gering

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

6A66 schrieb:
>> schmeisse den Autorouter an und
>> klammheimlich werden zwei Pins ausgetauscht.
>
> Das dachte ich ist "Pinswap"?

Ja, wäre es auch bei Bartels, und funktioniert durchaus.  Ein Problem
hätte BAE nicht, was man hier bei Eagle hat: dort wird jedes Bauteil
aus der Bibliothek automatisch ins Projekt kopiert, man könnte also
dem (in der Bibliothek nicht pin-swappenden) Controller nachträglich
zu einem (partiellen) Pinswap verhelfen.  Aber: die nachher notwendige
Backannotation ändert zwar im Schaltplan die Nummern der Pins, aber
sie kann natürlich nicht das Schaltplansymbol selbst ändern.  Man
hätte dann also an bspw. dem Anschluss mit dem Symbolnamen "PA5" eine
völlig andere Pinnummer dranstehen ...  Man müsste also am Ende auch
das Schaltplansymbol nochmal mit der tatsächlichen Pin-Nummerierung in
Übereinklang bringen.

Trotzdem hat die Idee natürlich durchaus was, dass man einen Teil der
Portpins eines Controllers im Allgemeinen problemlos beliebig beim
Layouten austauschen könnte.

von 6A66 (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Trotzdem hat die Idee natürlich durchaus was, dass man einen Teil der
> Portpins eines Controllers im Allgemeinen problemlos beliebig beim
> Layouten austauschen könnte.

Es gibt da Systeme - ich nenne jetzt keine Namen mehr um nicht in den 
Verdacht der Webung zu kommen - da definierst Du bei jedem Bauteil was 
wie geswapped werden kann. Z.B. sind die Eingänge eines NANDs die 
Gruppe1, die Gates eines 74xx00 dann Gruppe2. Im Layout kann man dan 
sagen welche Swap-Gruppen enabled sind. Und manuell kann ich dann sagen, 
Tausche Pin x mit Pin y. Das System macht dann entweder einen Pinswap 
(Gruppe1) oder einen Gateswap (Gruppe2). Und dann bachward annotiert und 
alles passt noch. So stelle ich mir den Prozess vor und so geht er. 
Heißt aber: die Bauteile müssen entsprechend definiert sein (Aufwand!)
Ansosnten ist es vielleicht einfacher den Schaltplan umzuverdrahten und 
forward zu annotieren (kommt beides bei mir vor).

Jörg Wunsch schrieb:
> Man
> hätte dann also an bspw. dem Anschluss mit dem Symbolnamen "PA5" eine
> völlig andere Pinnummer dranstehen ...

An einem Controller mit festem Schaltplansymbol im Layout die Pins zu 
swappen und dann rückwärts zu vermuten das Schaltplansymbol würde sich 
ändern ist Käse - da hast Du recht. Entweder bei der Backannotation 
kommt dann ein Fehler raus (Netz ist an falschen Pin angebunden) da 
nicht auflösbar - oder der letzte Wireteil wird automatsich (z.B. 
Diagonal) umverlegt (finde ich auch Käse). Aus diesem Grund denke ich 
ist hier forward annotation besser da zuverlässiger.

rgds

von Klaus S. (klaws)


Lesenswert?

6A66 schrieb:
> Es gibt da Systeme - ich nenne jetzt keine Namen mehr um nicht in den
> Verdacht der Webung zu kommen - da definierst Du bei jedem Bauteil was
> wie geswapped werden kann. Z.B. sind die Eingänge eines NANDs die
> Gruppe1, die Gates eines 74xx00 dann Gruppe2.

Ich hätte gedacht, dass Leute, die AD10 nutzen, an Stelle von 
TTL-Gräbern direkt FPGAs verwenden...und daraufhin ist der 
AD10-Optimizer auch ausgelegt.

;-)

Ich verwende Eagle. Das erste "E" steht für "Easy", nicht für 
"Effizient". Ich nutze den Autorouter weil das manuelle (bzw. follow-me) 
Routing in Eagle mehr Frust als Freude bereitet (zum Vergleich: Altium 
wirbt damit, dass bei ihnen manuelles Routing Spaß bereitet!). Also gehe 
ich hin und versuche den Autorouter zu "überlisten". Das ist fast wie 
bei einem Strategiespiel/Aufbauspiel. Problem: ich muss das Ergebnis 
jedesmal manuell überprüfen. Und braucht mehr Aufmerksamkeit, als wenn 
ich den ganzen Prozess direkt manuell richtig mache. Immerhin: ich fühle 
mich wie ein echter Gewinner, wenn der Autorouter dann irgendwann 
besiegt ist und alles richtig macht. Bis zur nächsten Bauteiländerung, 
dann explodiert wieder alles...

Okay: ich habe als Kind mit Lötstreifenplatinen gearbeitet (wie 
Lochrasterplatinen, aber mit durchgehenden parallelen Leiterbahnen, mit 
einem Messer oder Bohrer leicht zu unterbrechen). Das entsprach 
doppelseitigem Routing mit strikter Vorzugsrichtung (Querverbindungen 
per Drahtbrücke, quer zur Richtung der Lötstreifen). Da habe ich schon 
die Erfahrungen gesammelt, wie man Bauteile nahezu optimal platziert. 
Das ist etwas anderes als bei der Wirewrap-Fraktion: dort werden oft die 
Bauteile in einer sauberen Reihe platziert, dann greift man nach dem 
Verdrahtungswerkzeug, und dann bricht die Hölle los. Und wer glaubt, 
dass ein Autorouter bei so einem Ansatz noch was retten kann, dürfte 
ziemlich enttäuscht werden.

Zurück zum Thema: Die Antwort auf die Frage nach "meiner 
Routing-Strategie" ist sehr schwammig. Es geht schon mit der Platzierung 
los. Durch Erfahrung kann ich (hoffentlich) nahe am Optimum bewegen. 
Meine Erfahrung (man könnte es auch als" erlernten Instinkt" bezeichnen) 
in Worte oder gar konkrete Handlungsanweisungen zu packen ist sehr 
schwierig. Wenn man das könnte, konnte man Heuristiken entwickeln, mit 
denen man wirklich brauchbare Autoplacer und -router entwickeln könnte.

Hat man bisher noch nicht geschafft. Liegt also nicht nur an mir ;-)

- Klaus

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
Noch kein Account? Hier anmelden.