PCB (Auto-)Routbarkeit

Hintergrund

Ich arbeite an einem ziemlich dichten gemischten PTH / SMD-Komponenten-PCB-Design (plattiert durch Loch / Oberflächenmontage). Ich verwende Eagle CAD für die schematische Erfassung / das Layout und verwende die Auto-Router-Funktion zum Routen. Es ist eine zweischichtige Platine, und ich versuche, alle SMD-Komponenten auf der gleichen Seite der Platine zu halten, um die Herstellung zu vereinfachen.

Erfahrung

Normalerweise platziere ich meine Komponenten an Orten, die ich im Hinblick auf die Schnittstellennähe für sinnvoll halte, drehe QFP-Pakete um 45 Grad, wo es sinnvoll erscheint, setze das Routing-Raster auf 1 mil (dh das Minimum?), setze die DRC-Mindestspurbreite auf das von meinem Hersteller zugelassene Minimum, klicken Sie auf Los, fangen Sie ein Auge zu und sehen Sie, wie es sich am Morgen herausstellt (oder dass es fehlgeschlagen ist). Es gibt viele Einstellungen im Auto-Router und DRC, mit denen ich ehrlich gesagt nie herumspiele, weil ich nicht verstehe, wie sie sich auf die Routbarkeit auswirken (ist das ein Wort?), was zu meiner Frustration beitragen kann.

Frage

Ich habe Eagle zu diesem Zeitpunkt häufig verwendet und bin sehr zufrieden damit, aber es scheint oft eine echte Herausforderung zu sein, die automatische Route zum Abschluss zu bringen, und die Routing-Fähigkeit scheint sehr empfindlich auf die Platzierung von Komponenten zu reagieren. Es wird oft bis zu 98+% geroutet und dann aufgegeben. Was sind einige Faustregeln / Richtlinien / Ratschläge, wie man dem Autorouter helfen kann, die Arbeit zu erledigen?

Antworten (5)

Der Eagle-Autorouter ist ein anständiges Tool, und ich verwende es häufig. Wie bei jedem Tool müssen Sie jedoch wissen, wie man es gut einsetzt und seine Grenzen versteht. Wenn Sie nur erwarten, alles auf den Autorouter zu werfen, werden Sie enttäuscht sein. Kein aktueller Autorouter, und wahrscheinlich noch für einige Jahre, kann dies für irgendetwas anderes als erfundene oder Spielzeugprobleme tun.

Sie sagen, es gibt Einstellungen im Eagle-Autorouter, die Sie nicht verstehen und mit denen Sie niemals herumspielen. Das ist eine schlechte Einstellung und wahrscheinlich ein guter Teil Ihres Problems. Es gibt keinen Satz von Steuerparametern, der auf allen Karten funktioniert. Selbst innerhalb von 2-Lagen-Boards gibt es verschiedene Kompromisse. Sie müssen unbedingt das Handbuch lesen und die Parameter für Ihre spezielle Situation anpassen.

Bei zweischichtigen Platinen versuche ich oft, den größten Teil der unteren Schicht als Grundebene zu halten. Ich verwende daher die oberste Schicht so oft wie möglich für Verbindungen und die untere Schicht für kurze "Jumper", damit die Routing-Topologie funktioniert. In diesem Fall lege ich hohe Kosten für das Routing in der untersten Ebene fest.

Vor dem Autorouting muss man sich das Board anschauen und über die kritischen Bereiche nachdenken, die man einem Autorouter nicht erklären kann. Beispielsweise möchten Sie die Schleifenströme eines Schaltnetzteils lokal und von der Hauptmasseebene fernhalten. Dasselbe gilt für Hochfrequenzströme, die lokal auf einem digitalen Chip liegen, wie Bypass-Kappen und Quarz mit ihren Kappen. Wenn Sie die Pseudo-Ground-Plane-Schicht wie oben beschrieben verwenden, möchten Sie jede Masseverbindung sofort manuell mit einer eigenen Durchkontaktierung mit der Ground-Plane verbinden. Dadurch bleibt auf der obersten Ebene maximaler Platz für das Routing von allem anderen.

Der Prozess des Routings eines Boards sieht so aus, selbst wenn der Autorouter den größten Teil der Routinearbeit erledigt:

  1. Leiten Sie die kritischen Pfade wie oben erwähnt manuell weiter.

  2. Führen Sie grundlegendes Housekeeping vor dem automatischen Routing durch. Dazu gehört beispielsweise das direkte Verbinden aller Erdungsstifte mit der Erdungsebene.

  3. Suchen Sie nach Problembereichen, in denen Sie erkennen können, dass der Autorouter in Schwierigkeiten geraten könnte. Wenn es in dicht besiedelten Bereichen kurze Verbindungen gibt, möchten Sie vielleicht einige davon herstellen. Dies erfordert etwas Erfahrung und Intuition, also überspringen Sie diesen Schritt vorerst, wenn Sie mit dem jeweiligen Autorouter noch nicht vertraut sind.

  4. Speichern Sie eine Kopie des Boards und führen Sie dann den automatischen Router aus. Wenn dies der erste Durchgang hier ist, lassen Sie es einfach das Minimum tun, um eine Lösung zu finden. Der Zweck der ersten Male besteht darin, zu sehen, wo die Problembereiche liegen, damit Sie das Layout und Ihre manuelle Vorroute entsprechend anpassen können.

  5. Sehen Sie sich die resultierende Route genau an. Sehen Sie, wo die Problembereiche liegen. Kehren Sie zu der gespeicherten Kopie aus Schritt 4 zurück und passen Sie Ihr Layout und Ihre manuelle Vorab-Route an, was der Auto-Router getan hat. Wiederholen Sie zurück zu Schritt 4, bis das Ergebnis vernünftig aussieht. Wenn Sie hier mehr Iterationen durchführen, kurbeln Sie die Autorouter-Optimierungen und andere Parameter an, um eine endgültigere Route zu erstellen. Am Anfang versucht man nur zu sehen, ob es eine Lösung finden kann und was die großen Probleme sind. In späteren Pässen treffen Sie auf eine richtige Route. Ich beginne ohne Optimierungsdurchläufe und verwende 8 für endgültige Routen. Ich konfiguriere auch frühe Durchläufe, um eine Lösung zu finden, und spätere Durchläufe, um sie zu optimieren.

  6. Führen Sie eine manuelle Bereinigung der Route durch. Im Fall einer zweilagigen Platine, die hauptsächlich auf der Unterseite geschliffen ist, möchten Sie die maximalen Abmessungen von Inseln in der Grundebene minimieren. Es ist besser, viele kleine Inseln zu haben als wenige große Inseln. Manchmal sehen Sie Möglichkeiten, Signale lokal neu anzuordnen, um die Jumper auf der unteren Ebene zu minimieren. In dieser Phase ist das große Ganze bereits erledigt und Sie konzentrieren sich auf die manuelle Optimierung kleiner Bereiche. Dies ähnelt einem Peephole-Optimierer von Compilern.

Hier ist eine Eagle-Autorouter-Steuerdatei, die ich für ein zweischichtiges Projekt verwendet habe, wobei die unterste Schicht so weit wie möglich eine Grundebene war:

; EAGLE-Autorouter-Steuerdatei

[Standard]

  RoutingGrid = 4mil

  ; Trace-Parameter:

  tpViaShape = Rund

  ; Bevorzugte Anfahrt:

  PrefDir.1 = *
  PrefDir.2 = 0
  PrefDir.3 = 0
  PrefDir.4 = 0
  PrefDir.5 = 0
  PrefDir.6 = 0
  PrefDir.7 = 0
  PrefDir.8 = 0
  PrefDir.9 = 0
  PrefDir.10 = 0
  PrefDir.11 = 0
  PrefDir.12 = 0
  PrefDir.13 = 0
  PrefDir.14 = 0
  PrefDir.15 = 0
  PrefDir.16 = *

  Aktiv = 1
  ; Kostenfaktoren:

  cfVia = 50
  cfNonPref = 5
  cfChangeDir = 2
  cfOrthStep = 2
  cfDiagStep = 3
  cfExtdStep = 0
  cfBonusStep = 1
  cfMalusStep = 1
  cfPadImpact = 4
  cfSmdImpact = 4
  cfBusImpact = 0
  cfUmarmen = 3
  cfVermeiden = 4
  cfPolygon = 10

  cfBasis.1 = 0
  cfBasis.2 = 1
  cfBase.3 = 1
  cfBase.4 = 1
  cfBasis.5 = 1
  cfBase.6 = 1
  cfBase.7 = 1
  cfBase.8 = 1
  cfBase.9 = 1
  cfBasis.10 = 1
  cfBase.11 = 1
  cfBase.12 = 1
  cfBase.13 = 1
  cfBase.14 = 1
  cfBase.15 = 1
  cfBase.16 = 5

  ; Maximale Anzahl von...:

  mnVias = 20
  mnSegmente = 9999
  mnExtdSteps = 9999
  mnRipupLevel = 50
  mnRipupSteps = 300
  mnRipupTotal = 500

[Busse]

  @Route

  Aktiv = 1
  cfVia = 10
  cfChangeDir = 5
  cfBusImpact = 4
  cfPolygon = 25
  cfBase.16 = 10
  mnVias = 0
  mnRipupLevel = 10
  mnRipupSteps = 100
  mnRipupTotal = 100

[Route]

  @Standard

  Aktiv = 1

[Optimieren1]

  @Route

  Aktiv = 1
  cfVia = 99
  cfNonPref = 4
  cfChangeDir = 4
  cfExtdStep = 1
  cfUmarmen = 1
  cfPolygon = 30
  cfBase.16 = 10
  mnExtdSteps = 20
  mnRipupLevel = 0
  mnRipupSteps = 100
  mnRipupTotal = 100

[Optimieren2]

  @Optimieren1

  Aktiv = 1
  cfNonPref = 3
  cfChangeDir = 3
  cfBonusStep = 2
  cfMalusStep = 2
  cfPadImpact = 2
  cfSmdImpact = 2
  cfUmarmen = 0
  cfPolygon = 40
  mnExtdSteps = 15

[Optimieren3]

  @ Optimieren2

  Aktiv = 1
  cfVia = 80
  cfNonPref = 2
  cfChangeDir = 2
  cfPadImpact = 0
  cfSmdImpact = 0
  cfPolygon = 50
  mnExtdSteps = 10

[Optimieren4]

  @Optimize3

  Aktiv = 1
  cfVia = 60
  cfNonPref = 1
  cfPolygon = 60
  cfBase.16 = 12

[Optimieren5]

  @Optimize4

  Aktiv = 1
  cfVia = 40
  cfNonPref = 0
  cfPolygon = 70
  cfBase.16 = 14
  mnExtdSteps = 5

[Optimieren6]

  @Optimize5

  Aktiv = 1
  cfVia = 20
  cfBase.16 = 16

[Optimieren7]

  @Optimize6

  Aktiv = 1
  cfBase.16 = 18

[Optimieren8]

  @Optimize7

  Aktiv = 1
  cfBase.16 = 20
Ich wollte nicht mit einer schlechten Einstellung rüberkommen...

Autorouting ist im Allgemeinen eher lästig als sinnvoll. Auch bei superteuren Routern. Mein Unternehmen verwendet Cadence Allegro (70.000 US-Dollar pro Arbeitsplatz), und ich finde, dass es länger dauert, dem Autorouter zu sagen, wie er gute Arbeit leisten soll, als das Ding einfach von Hand zu routen. Und die Endergebnisse sind immer besser. Dies galt für jeden Autorouter, den ich ausprobiert habe, und unabhängig von der Komplexität des Boards. Die Boards, die ich mache, reichen von einfachen 2-Layer-Dingen mit nur ein paar Teilen bis hin zu 14-Layer-Monstern mit 16 BGAs und 2000+ Netzen.

Hast du TopoR probiert ? Ich habe keine persönliche Erfahrung damit, aber ich habe immer gedacht, dass herkömmliche Router dumm sind, und dieser hier sieht laut Marketingmaterialien nicht dumm aus.
@romkyns Ich habe TopoR nicht ausprobiert. Das sieht für meine Zwecke nicht so brauchbar aus. Es unterstützt keine komplexeren Regeln für differentielle Spuren, angepasste Impedanzspuren, angepasste Spurlängen, Netzklassen mit unterschiedlichen Regeln für jede Klasse usw. Vielleicht hat es diese Dinge, aber ich habe es auf ihrer Website nicht erwähnt.
Mir wurde gesagt, dass all diese Dinge möglich sind. Siehe Elenas Antwort. Ich hatte immer ein gutes Gefühl bei diesem Autorouter... :)

Ich möchte TopoR vorschlagen . TopoR ist auf 2-Layer-Leiterplatten sehr effizient (leitet aber auch erfolgreich sowohl Single-Layer- als auch High-Density-Multilayer-Leiterplatten). Ich kann Ihnen sagen, dass Sie auf 2-Lagen-Platten das beste Ergebnis erzielen (im Vergleich zu anderen CADs).

Wenn Sie interessiert sind, könnte ich ein Beispiel-Routing Ihres Projekts erstellen (ich bräuchte eine .brd-Datei) -> diztempa{at}gmail.com

Bitte lesen Sie den Kommentar von David Kessner als Antwort auf meinen Vorschlag von TopoR - unterstützt es eine der genannten Funktionen?
@romkyns Es ist möglich, die Vielzahl der Regeln in TopoR festzulegen. Apropos High-Speed-Regeln, TopoR ermöglicht Ihnen Folgendes: - Erstellen der Differentialpaare - Spezifizieren der Differentialpaarparameter: Impedanz, Drahtbreite und Abstand für jede Signalschicht. - Passen Sie die Signalverzögerung in den Netzgruppen an und stellen Sie die Verzögerungsbeziehung zwischen den Netzgruppen ein usw. PS, da es nicht ratsam ist, verlorene Links hier zu posten, wenn Sie interessiert sind, schreiben Sie mir eine Nachricht an meine Mailbox und ich gebe Ihnen Bescheid ausführliche antwort :)

Ich habe festgestellt, dass Eagles Autorouter unzureichend ist. Viele Leute hier werden sagen, dass Autorouting schlecht ist und vermieden werden sollte, aber ich tendiere dazu, anderer Meinung zu sein. Ich hatte großen Erfolg mit Freerouting, und ich finde, dass es im Allgemeinen viel bessere Routen gibt als Eagle mit weniger Durchkontaktierungen und einer geringeren Gesamtlänge der Strecken. Sie haben Skripte zum einfachen Importieren und Exportieren von Eagle, und es ist im Allgemeinen einfach zu bedienen.

Wenn man also FreeRouting mit Eagle verwendet, muss man wohl nur die Schaltplan- und Layout-Module von CadSoft kaufen.

Autorouter können sehr wählerisch sein, und die Algorithmen variieren, sodass das, was für den einen gut funktioniert, für den anderen möglicherweise nicht funktioniert.
Obwohl ich einen Großteil meines Routings von Hand mache, gehöre ich nicht zu denen, die denken, dass sie vollständig vermieden werden sollten. Sie sind nur ein Werkzeug wie jedes andere und wenn es funktioniert und Ihre Arbeit erleichtert, dann verwenden Sie es. Ich persönlich bin jedoch noch nie auf einen Router gestoßen, der es besser kann als Sie von Hand, also würde ich nicht versuchen, ihn ausschließlich zu verwenden.

Wenn das Board jedoch sehr komplex oder das Routing empfindlich ist (dh Einschränkungen hat, von denen der Router nichts weiß und Sie keine anständige Möglichkeit haben, es zu "sagen"), ist es oft besser, zumindest einen Teil davon von Hand zu routen. Wenn es z. B. zu 98% fertig ist, können Sie es oft einfach selbst beenden, da Sie beurteilen können, wo Sie Einschränkungen lockern können (oder dem Autorouter mitteilen und es für bestimmte Netze erneut versuchen).

Platzierungs- und Routingraster ist sehr wichtig. Nutzen Sie auch alle möglichen Regeln, um die Leistung zu optimieren - es kann einen großen Unterschied machen, etwas Zeit mit der korrekten Einrichtung zu verbringen, anstatt nur auf "Route" zu klicken.

Manchmal ist es einfach nicht möglich, das Board zu routen und die von Ihnen festgelegten Designregeln einzuhalten. Es gibt Formeln, um die "Routbarkeit" einer Platine zu ermitteln, basierend auf Platinengröße, Anzahl der Pads, Leiterbahnbreite usw. Google wird mehr wissen.

Ich habe den Eagle-Router nicht verwendet, daher kann ich dazu keine speziellen Ratschläge geben, aber lesen Sie die Dokumentation gründlich durch und versuchen Sie herauszufinden, was jede einzelne Einstellung bewirkt. Tun Sie dies vielleicht auf einem Testboard, um zu sehen, was in verschiedenen Situationen am besten funktioniert.
Ich stimme CMP auf Freerouter zu. Es ist tatsächlich besser als die meisten nativen Autorouter, die ich in Bezug auf das Routing verwendet habe. Es ist also einen Versuch wert, um zu sehen, ob Sie bessere Ergebnisse als Eagle erzielen.