Neu im PCB-Design – warum gibt es keine Komponenten für die automatische Platzierung?

Die Schaltungsdesign-Software, die ich gesehen habe, hat die Fähigkeit, Leiterbahnen usw. automatisch auf einer Leiterplatte zu routen.
Aber warum ist diese Software nicht in der Lage, Komponenten automatisch auf einer Leiterplatte zu platzieren, um beispielsweise die Gesamtgröße der Leiterplatte zu minimieren?
Ist das einfach zu kompliziert, um es zu automatisieren?

Autorouter sollten in der Lage sein, Komponenten basierend auf Einschränkungen (z. B. „Taste muss hier hin“, „LED kann überall in diesem Bereich sein“) optimal zu platzieren. Sie sollten auch in der Lage sein, die optimalen Pins für Teile auszuwählen, die viele gleichwertige Pins haben (dh "verwenden Sie einen beliebigen io-Pin mit PWM"). Leider habe ich noch nie einen gesehen, der eine dieser Funktionen erfüllt. Vielleicht eines Tages.
Ich denke, Altium hat einen Autoplacer, aber einige Komponenten sollen an strategischen Stellen auf der Platine platziert werden, und die Software hat keine Ahnung, was strategisch ist und was nicht. Und wenn Sie die Gesamtplatinenfläche minimieren, können Sie ein sauberes Routing unmöglich machen. Ich habe noch nie Autoplacer verwendet und ich benutze Autoroute selten, und wenn ich Autoroute mache, dann für ausgewählte Signale wie Masse.
Platzierung (und Ausrichtung, Gate-Swapping, Pin-Swapping) ist wirklich, wirklich wichtig. Es ist das Wichtigste, um ein gutes Routing zu erhalten. Ich denke, ein intelligenter Autoplacer sollte mit der Platzierung des Schaltplans beginnen, es sei denn, der Schaltplan ist einer dieser modernen Abscheulichkeiten "Boxen umgeben von Netzlisten".
Aus einem Hintergrund kommend, der kein Schaltungsdesign ist, scheint es mir, dass das Rattennest ausreichen sollte, um alle Komponenten optimal zu gestalten, möglicherweise mit einigen Einschränkungen. Werden die meisten realen Schaltungen manuell entworfen?
Diptrace hat ein automatisches Layout. Es ist aber erschreckend.
Kurz gesagt, das optimale Layout von Komponenten - auch ohne alle Überlegungen, die daraus resultieren, dass es sich um eine tatsächliche, nicht ideale Schaltung handelt - ist ein sehr schwieriges CS-Problem. Tatsächlich ist es ein Beispiel für das Problem des Handlungsreisenden, und als solches ist eine optimale Lösung nicht machbar.
Verwandte Threads: hier und hier . Beides sind Design-Reviews von PCBs für Einsteiger, die automatisch geroutet wurden.
Bei dieser Frage frage ich mich, warum diese Autorouter / Autoplacer so schlecht sind! Warum investieren die Leute nicht mehr Forschung und Mühe, damit sie funktionieren? (Vielleicht tun sie das, und all diese Funktionen sind in proprietären Paketen versteckt ...?) Es kann nicht so schwer sein, ein kleines Kontrollkästchen "Diese Kappe gehört zu diesen Power-Pins" hinzuzufügen ...
@Gregd'Eon Das frage ich mich auch. Sicherlich können Auto-Platzierer mit mehr Arbeit die Rolle von Entkopplungskappen verstehen und Schaltungsrauschen usw. simulieren
@Adam Ja, ich denke, das ist eine andere Frage, die wir nie beantworten werden. Warum ist jede PCB-Design-Software so schlecht, dass sie nur geringfügig besser ist als Bleistift + Papier?
@Navin, wenn du das glaubst, würde ich gerne wissen, wie viele komplexe Designs du mit CAD entworfen hast und wie viele mit Bleistift und Papier?
@NickJohnson: Praktisch nicht unmöglich. Während die Berechnung des wirklich optimalen Ergebnisses rechenintensiv ist, gibt es Algorithmen, die in sehr vernünftiger Zeit "gut genug" Ergebnisse liefern können. Eine Annäherung an die optimale Lösung von 95 % bis 98 % reicht für die meisten Szenarien aus. Zweitens kann es je nach Anzahl der Komponenten möglich sein, die optimale Lösung zu finden, wenn Sie bereit sind, Ihren Computer eine Weile laufen zu lassen.
@whatsisname Ja, Sie können gute Annäherungen an den grundlegenden TSP erhalten. Dies ist jedoch mit den Designbeschränkungen einer tatsächlichen Schaltung viel schwieriger zu bewerkstelligen.
@NickJohnson: Dieser Teil ist wahr, ja, da es viele wichtige Informationen gibt, die in der Spezifikation nicht für die Software angegeben sind.
@NickJohnson Nur Kommentar: Irgendwo im Bereich vor 10 bis 30 Jahren (gibt Ihnen einen gewissen Spielraum) Ich erinnere mich, dass ich einen Bericht gelesen habe, dass das TSP gelöst wurde - was auch immer "gelöst" in diesem Zusammenhang bedeutet. Ich würde vermuten, dass "gelöst" bedeutet, dass ein Algorithmus oder eine Methode beansprucht wurde, die optimale Ergebnisse für eine Reihe von Einschränkungen lieferte. | Danach sind sie zweifellos zum N-Körper-Problem übergegangen :-).
Schon vor langer Zeit hatten PCD-Pakete ein rudimentäres Autoplace, das NICHT versuchte, Komponenten optimal zu platzieren, aber das nützlich war, um zu verhindern, dass alles auf einem großen Haufen endete. In den alten DOS-Protel-Tagen schrieb ich ein Programm, das die textbasierte Schaltplan-Ausgabedatei verarbeitete, um Komponentenkennungen auf dem Siebdruck zu verschieben und in der Größe zu ändern, sodass sie zB innerhalb des Komponenten-Footprints lagen und keine Löcher überdeckten. Ich habe dies hauptsächlich für axiale Komponenten mit zwei Durchgangslöchern wie Widerständen verwendet. Erweitern Sie dies mit einem Regelsatz zum Verschieben ausgewählter Komponenten an geeignete ....
....relative Standorte wären nur eine Frage der Umsetzung. Zu definieren, was „es“ war, wäre der schwierige Teil. Ich weiß nicht, ob Ihnen modernere Software den Grad an Zugriff auf und Verwaltung von Komponentendeskriptoren und -eigenschaften bietet, den die textbasierte DOS-Software (ziemlich unbeabsichtigt) hatte.
@Adam Du unterschätzt. Woher weiß es, welche Kappen zu welcher Komponente passen? Welche ICs sind am rauschempfindlichsten oder machen das meiste Rauschen und erhalten daher Priorität? Oder haben Sie einfach erwartet, dass es auf das niedrigste durchschnittlich niedrigste Rauschen auf der ganzen Linie abzielt, Gipfel verdammt noch mal, solange es tiefe Täler gibt, damit es sich mittelt, und erwarten, dass es funktioniert? Und wie haben Sie erwartet, dass es Rauschen simuliert, BEVOR die Leiterbahnen gelegt werden und ohne etwas über die ICs zu wissen?

Antworten (6)

Ich habe kürzlich einige PCBs entworfen und würde Ihnen empfehlen, KEINEN Auto-Placer oder Auto-Router für Ihr Endprodukt zu verwenden. (Proteus hat einen Autoplacer.)

Zunächst einmal - Ihre Software ist so intelligent wie ein Regenwurm, wenn es um die automatische Platzierung oder das automatische Routing geht. Mit anderen Worten, es ist dumm wie eine Kartoffel.

Auto-Routing würde nicht wissen, welche Platzierung Ihnen ein besseres Leiterbahnmuster liefert, wodurch Sie nicht nur ein effizientes Design erstellen, sondern auch das Rauschen in der Schaltung minimieren können. Ebenso weiß Auto-Routing nicht, dass Sie durch leichtes Verschieben einer Komponente nach links oder rechts eine Spur besser routen können. Diese Tools geben Ihnen nur ein Design, das entsprechend der Schaltung korrekt ist. Aber wenn es um die Leistung in der realen Welt geht, liegen die Dinge anders.
Zum Beispiel:

  • Entkopplungskondensatoren sollten physisch nahe am IC sein.
  • Es sollten Schleifen mit der geringsten umschlossenen Fläche vorhanden sein.
  • Die Grundplatte sollte so solide wie möglich sein.
  • In der Nähe Ihres Quarzoszillators usw. sollten sich keine Störsignale befinden.

Ihre Software wird diese Konzepte nicht berücksichtigen, da diese in Ihrem Schaltplan nicht erwähnt werden. Sie werden es erst wissen, wenn Sie die Leiterplatte hergestellt haben und sie nicht die ganze Zeit wie erwartet funktioniert. Ich sage nicht, dass es nicht funktionieren wird. Es könnte zu 90 % funktionieren, aber Sie müssen auch diese 10 % berücksichtigen.

Mein Vorschlag ist, dass Sie einige PCB-Designkonzepte lernen und versuchen sollten, sie selbst zu platzieren und zu routen. Sie können Ihren Schaltplan und Ihr Platinenlayout jederzeit in Foren posten und Experten geben Ihnen ihre Meinung/Vorschläge.

+1 für den Regenwurm und die Kartoffel. Jedes Mal, wenn ich Auto Placer und Autorouter benutzte, hatte ich die kritischen Teile erledigt und es mit dem einfachen Teil belassen, aber selbst das war zu viel verlangt: 60 % der Platine waren nach dem letzten Durchgang platziert und geroutet. Lieber alles selbst machen, außer vielleicht riesige Anforderungsdesigns mit viel Freiraum.
@Mister - Ja, du hast Recht. Sogar ich verwende ab und zu Autorouter, um eine Idee für das Routing zu bekommen, und beende die kritischen Abschnitte. Allerdings verwende ich heutzutage Eagle und es hat keinen Autoplacer.
Tippfehler in meinem obigen Kommentar: "für riesige LOW * -Anforderungsdesigns". Offensichtlich funktioniert eine digitale Hochfrequenzfrequenz nicht gut mit Autorouting und Autoplacing ...
Ich sehe keinen theoretischen Grund, warum ein Autorouter nicht alle oben genannten Einschränkungen und Best Practices beim automatischen Platzieren von Teilen berücksichtigen könnte. Tatsächlich sollte ein idealer Autorouter besser als ein Mensch in der Lage sein, die optimale Platzierung zu finden, die diese Ziele erfüllt. Es ist sicherlich ein schwieriges Problem, aber nicht unmöglich, und ich wette, dass wir bald Cloud-basierte Auto-Router mit Auto-Placern sehen werden, die selbst die besten Menschen schlagen können.
@bigjosh - Dein Kommentar macht sehr viel Sinn. Das richtige Routing und die richtige Platzierung hat ein paar Richtlinien, die es Computern ermöglichen sollten, wenn sie auf einfache Logik heruntergebrochen werden, einen Menschen zu übertreffen. Alles, was übrig bleibt, sind vielleicht Billionen von Berechnungen - Tausende von vollständig gerouteten Platinen prüfen und die optimale Lösung finden. Bei Cloud-basierten Systemen sollte das nicht allzu schwierig sein. Hoffen wir, dass bald ein Open-Source-Projekt startet, um dies Wirklichkeit werden zu lassen. Es könnte insofern besser sein als Menschen, als Menschen nicht wirklich mehrere Iterationen durchführen, sobald sie eine funktionierende Lösung gefunden haben - zumindest ich nicht.
Das Platzieren und Routing auf einer einlagigen Leiterplatte kann VIEL Zeit verschwenden, wenn Sie es manuell tun. Ich möchte, dass die Anwendung mir sagt, wie ich die Komponenten platzieren muss, um bei DIY-Projekten so wenig „Luftdrähte“ wie möglich zu erhalten. Natürlich sollte es mir erlauben, Einschränkungen hinzuzufügen, wie z. B. das Festlegen der Platzierung bestimmter Komponenten.
@dan - Ich denke, wir alle wollen diese Funktion. Derzeit bietet jedoch kein CAD-Paket eine zuverlässige Lösung dafür. Wie Bigjosh sagte, es ist theoretisch möglich, aber ab jetzt ist es besser, wenn Sie die Platzierung selbst vornehmen.
@Whiskeyjack Mehrere Programme verfügen über eine automatische Platzierung und ein automatisches Routing. Ob es gut genug ist, muss wohl jeder selbst entscheiden. Ich persönlich platziere die "wichtigen" Komponenten manuell und lasse den Rest vom Programm platzieren (+ Auto-Routing).

Eine Sache, die Sie nicht berücksichtigen, ist, dass ein Schaltplan nicht genügend Informationen enthält, um eine Platine richtig zu belegen .

Grundsätzlich erfordert das PCB-Layout die Berücksichtigung und Anpassung an einige Dutzend Layout-Anforderungen pro Teil , von denen keine im Schaltplan kodifiziert ist. Betrachten Sie nur die Bypass-Kondensatoren. Damit ein automatisiertes System den Bypass-Kondensator für jede Komponente richtig platziert, müssten Sie einige zusätzliche Anweisungen im Schaltplan haben, die dem Autorouter vorschreiben, dass die Leiterbahn zwischen den beiden Knoten eine bestimmte Länge unterschreiten muss.
Vermutlich benötigen Sie dann weitere Anweisungen, um die Priorität der Längenminimierung für verschiedene Netze zu codieren, etwas, um differenzielle Paare / kontrollierte Impedanz, Schutzspuren (falls erforderlich) usw. vorzuschreiben ...
Grundsätzlich gibt es viele zusätzliche Variablen, die die Platzierung steuern, die in Schaltplan-/Ratsnest-Dokumenten normalerweise überhaupt nicht codiert sind.

Selbst wenn Sie davon ausgehen, dass Sie alle oben genannten Designbeschränkungen haben, ist die schiere Größe des Problemraums für ein gemeinsames Layout enorm . Es ist das Äquivalent zu dem Versuch, eine Gleichung mit Tausenden von Eingaben zu lösen, wobei jede Eingabe einen anderen, nichtlinearen Effekt auf alle anderen hat. Tatsächlich ist das Problem aus einer Brute-Force-Perspektive völlig unlösbar. Jede Lösung muss daher eine Art heuristischen Mechanismus beinhalten, der seine eigenen Komplexitäten hat.


Realistisch gesehen liegt der Hauptgrund dafür, dass es nicht zumindest bessere Autorouter gibt, darin, dass es einfach keinen Markt gibt. Der EDA-Markt ist im Vergleich zu vielen anderen Nischenmärkten für Spezialsoftware vergleichsweise klein, und selbst der beste Autorouter aller Zeiten wird sich nicht einmal einem realen Layout eines echten Menschen nähern.

Wenn ich mich inmitten eines besonders langweiligen Layouts befinde, fantasiere ich normalerweise, zu versuchen, meinen eigenen Autorouter zu entwerfen, indem ich etwas mit Vektorfeldern und simuliertem Glühen mache, aber selbst das würde nur ein lokales Optimum erreichen und nicht ein allgemeines optimales Layout.

Mein Router hat einen Placer und Unterstützung für "Räume". Damit können Sie Bereiche zeichnen und Teile "Räumen" aus dem Schaltplan zuweisen. Der Autoplacer gruppiert sie in dem Raum, dem das Teil zugewiesen ist. Ziemlich sicher, dass dieser Anschluss unterstützt wird, sollte auch an diesen Ort gehen. Es gibt auch ein Tool, das eine automatische Entkopplungsplatzierung und Teileauswahl/-optimierung basierend auf Simulationsergebnissen durchführen kann. Es ist zwar nicht billig :) aber es funktioniert.

Der Autoplacer kann Ihnen ein wenig Zeit sparen, indem er alles so zusammenstellt. Aber ich ziehe es immer noch vor, den Schaltplan dem Layout-in-Place-Modus zu prüfen.

Genau wie beim Autorouter erhalten Sie heraus, was Sie an Einschränkungen eingeben und wie gut Sie es verwenden können. Wenn Sie nur versuchen, Ihren Auto-Router zu verwenden, ohne ihn richtig einzuschränken, leitet er einfach überall hin. Wenn es richtig eingerichtet ist, verwenden wir es, um große DDR-Abschnitte mit passender Länge korrekt zu routen. Auf viel größeren und dichteren Boards ist es fast eine Notwendigkeit und sicherlich eine Voraussetzung für einen Layout-Dienstleister, der die Geschwindigkeit benötigt. Diese Dinge sind es jedoch möglicherweise nicht wert für jemanden, der nur ein paar kleine Boards im Jahr macht.

Was ist Ihr CAD-Paket?
Die High-End-Version von Allegro, die Entkopplung von Sigrity ist jetzt im Besitz von Cadence. Ich mag Pads auch. Dieser neue pfadbasierte Autorouter, der wie Handrouting aussehen soll, sieht interessant aus.
Ich hatte eine Vermutung, dass dies Cadence sein könnte. Ich habe es für eine Einführung in das IC-Design verwendet, es ist in der Tat ein ausgezeichnetes Paket, und ich glaube, dass sein Autorouter und Autoplacer nur effizient sein könnten, wenn die Einschränkungen richtig formuliert sind (was auf Erfahrung / Training hinausläuft).
Gut gesagt. Das Platzieren von Teilen und das Routing ist nicht unmöglich, es ist nur viel schwieriger und unschärfer als die schematische Erfassung. Zunächst einmal ist der Schaltplan weit von einer vollständigen Eingabe zum automatischen Platzieren von Teilen entfernt. Normale PCB-Pakete sind für die Verdrahtung und nicht für die automatische Platzierung ausgelegt.

In den Jahren 1974-1975 arbeitete ich in der Abteilung Design Automation bei Honeywell. Das Problem hat sich seitdem nicht geändert:

  1. Eine Optimierung ist rechnerisch nicht machbar. Wie die meisten globalen Optimierungsprobleme ist es NP-vollständig, was bedeutet, dass die Komplexität der Berechnung schrecklich schnell wächst. Da man nicht Billionen Jahre (oder schlimmer) warten kann, können wir die optimale Lösung als unmöglich ansehen.
  2. Dem Programm ist nicht klar, was Sie optimieren möchten. Logische Gruppierung nach Ihrem Modell der Kreisorganisation? Spurlänge? Vorstandsbereich? Parasitäre Kopplung? Ausbreitungsverzögerung? Wärmeableitung (maximale Temperatur)? Thermal Bleed von Abschnitten mit höherer Leistung zu temperaturempfindlichen Komponenten? HF-Emission? Lärm? Mechanische Eigenschaften (z. B. das Platzieren massiverer Komponenten in der Nähe der mechanischen Stützen? Betriebseigenschaften, z. B. das Anordnen von integrierten Anschlüssen nicht dichter als menschliche Finger bewältigen können? Äußere Einschränkungen, wie z. B. die Position der Anschlüsse oder das Einpassen in den verfügbaren Platz (keine Konflikte mit Gehäuse, Ventilatoren usw.)

Es gibt KI-basierte Ansätze, um mit solchen Problemen umzugehen. Irgendwann ist es für den Designer jedoch einfacher, Dinge einfach auszuprobieren und Feedback von der Software zu den Designkriterien zu erhalten, an denen er interessiert ist. Der KI-Software alles mitzuteilen, was Sie wissen, kann eine endlose, undankbare Aufgabe sein. Letztendlich muss die Software Sie, den Designer, und Ihre Kompromisse zufrieden stellen.

Am besten funktioniert dies also, wenn man es als Zusammenarbeit zwischen Designer und Software betrachtet, wobei der Designer die endgültigen Entscheidungen trifft. Die Software kann Informationen über die Eigenschaften bereitstellen und Möglichkeiten zur Verbesserung einer interessierenden Eigenschaft vorschlagen und dabei helfen, die Folgen einer Änderung zu untersuchen.

Aber ich sage voraus, dass wir niemals ein vollautomatisiertes Layout sehen werden – solange wir Menschen haben, die sich das Ergebnis ansehen und sich darum kümmern.

Soviel zur Singularität...
@PeterMortensen Menschliche Meinungen spielen nach der Singularität keine Rolle mehr.
Ich denke, Punkt 2 ist wirklich der einzig relevante Teil der Antwort. Es gibt viele Algorithmen, die sehr schnell NP-vollständige Probleme mit signifikanten Problemgrößen bis zu einem "gut genug"-Grad mit einem sehr akzeptablen Zeitaufwand lösen können, wobei gut genug oft innerhalb von 2-3% des Optimums liegt.
Das ist ein guter Punkt über "gut genug"! Um jedoch technisch völlig korrekt zu sein, sollten wir das Wort "lösen" sorgfältig qualifizieren (wie Sie es getan haben). Die Kosten für CPU und Speicher WARen damals jedoch ein großes Problem. Aber obwohl die Problemgrößen gewachsen sind, ist unsere Rechenkapazität noch weiter gewachsen.

Meine Software hat einen Placer. Ich habe es einmal laufen lassen, nur um zu sehen, was passieren würde. Es ging reißend durch das Brett und bekam alle Komponenten darauf. Als ich es mir ansah, waren überall Teile. Der IC befand sich in einer Ecke und seine Entkopplungskappe in der anderen. Der kritische Pfad verlief im Zickzack hin und her über das Brett.

Mein Punkt hier ist, dass die Platzierung der schwierigste Teil des Layouts ist, um es richtig zu machen. Da sind zunächst die mechanischen Einschränkungen. Der ME/Industriedesigner möchte, dass Ihr Anschluss/Schalter/Pot/LED/welche andere externe Schnittstellenkomponente an einer bestimmten Stelle von der Platine kommt. Einige Komponenten sind möglicherweise zu groß, um sie in bestimmten Bereichen innerhalb des Gehäuses zu platzieren. Es kann Teile des Stromkreises geben, die einen gewissen Abstand zur Isolierung einhalten müssen.

Software kann so konfiguriert werden, dass sie mit einigen dieser Faktoren umgeht, aber sie wird niemals so gut funktionieren oder Probleme visuell so erkennen können, wie es ein Mensch kann. In einer perfekten Welt sollte, wenn Sie die Platzierung richtig machen, Strom, Masse und kritische Pfade leiten, ein schneller Durchgang des Autorouters in der Lage sein, das Layout fertigzustellen.

Ich mag diese Antwort, obwohl es immer noch in gewissem Maße so aussieht, als ob die Software nicht der Aufgabe gewachsen ist, die sie sein sollte.
@Adam Wenn Sie mehr Erfahrung sammeln, werden Sie es besser verstehen. Der Platzierungsprozess ist unglaublich komplex, und ein Rattennest erzählt nur einen Teil der Geschichte. Nehmen Sie zum Beispiel Entkopplungskappen, woher soll der Bestücker wissen, wo er diese anbringen muss? Soweit es angeht, können diese Kappen alle zusammen an einer beliebigen Stelle platziert werden.
Entfernungsbeschränkungen scheinen dafür eine praktikable Option zu sein.
Wie heißt deine Software?

Ich habe bereits Autoplacer verwendet, und sie sind in der Tat so dumm wie ein Steinhaufen. Das einzige, wofür Sie sie vernünftig verwenden können, ist, einen Haufen Fußabdrücke zu entwirren, die alle an derselben Stelle auf Ihrem Board importiert wurden. alles andere ist einfach zu viel verlangt.