Leiterplatten-Entwurf Hochgeschwindigkeitsdesign

Die Beschaffung eines CAD-Pakets, das 30 000 US-Dollar pro Lizenz kostet, lässt sich für massenproduzierte Systeme ohne weiteres rechtfertigen. Für kleinere Unternehmen, die an neuen Designs arbeiten, können Kosten in dieser Höhe jedoch zu einem ernsten Hindernis werden.

Bis vor wenigen Jahren waren wirklich komplexe und schnelle Designs nur für echte High-Tech-Produkte erforderlich, die ausschließlich in Großserie gefertigt wurden, etwa PC-Motherboards. Für das Design dieser Platinen wurden teure CAD-Pakete wie »Allegro« von Cadence oder Werkzeuge von Mentor oder Zuken verwendet. Diese Technologien finden inzwischen allerdings vermehrt Eingang in gängigere Produkte, sodass immer mehr Leiterplattendesigner gezwungen sind, sich mit High-Speed-Leiterplattendesigns zu befassen, die nur geringste Toleranzen zulassen.

Anhand der Toolsuite »Designer« von Altium soll nun gezeigt werden, wie sich mit »einfacherer« Software Designs erstellen lassen, die in der Vergangenheit nur mit kostspieligeren CAD-Paketen möglich gewesen wären. Allerdings sind gewisse Mindestanforderungen zu beachten, beispielsweise bei der Echtzeitmessung der Leiterbahnlängen.

Bei sehr anspruchsvollen Designs wie 64-Bit-Speicher ist außerdem die Fähigkeit nötig, auch die Pad-to-Pad-Längen an Multipoint-Netzen zu messen. Daher muss das Werkzeug Mäanderstrukturen automatisch platzieren und differenzielle Leiterpaare routen können. Altiums Designer erfüllt diese Minimalanforderungen zwar, doch fehlen wichtige Features wie etwa die Unterstützung für gehäusebedingte Leitungslängen, und es sind noch einige Bugs vorhanden, die mit dem Design-Rule-Check bei der Diffpair-to-Diffpair- oder der Netzsegment-Längenanpassung zusammenhängen.

Designobjekte

Ebenso wie in jeder anderen Leiterplattendesign-Software erstellt der Anwender im Designer Objekte und definiert anschließend Constraints, die sich auf diese beziehen.

Während einige dieser Objekte beim Schaltplanentwurf erstellt werden, generiert der Anwender andere im Leiterplatten-Editor. Sie definieren die Verbindungen in einer Schaltung, eine Gruppe von Verbindungen oder die Art und Weise, wie die Verbindungen hergestellt werden, beispielsweise das Routen differenzieller Leiterpaare.

Für differenzielle Signale lassen sich Differential-Pair-Objekte (Diffpair) generieren. Das positive und das negative Netz erhalten Bezeichnungen mit den Zusätzen »_P« beziehungsweise »_N«.

Anschließend vergibt der Anwender die Net-Class-Direktiven und eine Diffpair-Direktive für beide Leitungen im Schaltplan (Bild 1).

Pin-to-Pin-Verbindungen an Multi-point-Netzen definieren »From-To«-Objekte. Damit lässt sich die Signallaufzeit von einem Pin zum anderen kontrollieren. Zum Erstellen von From-Tos dient im PCB-Panel der »From-To Editor«.

In der aktuellen Version von Altiums Designer sind diese einzeln auf manuellem Weg zu generieren - anders als in Allegro, wo ein mit »SigXplorer« erstelltes ECSet auf eine ganze Gruppe von Netzen angewandt werden kann.

Typische Beispiele für Fälle, in denen From-Tos benötigt werden, sind die verschiedenen DIMM-Speicherkartendesigns (Bild 2), Memory-down-Konfigurationen, Motherboarddesigns mit mehreren DIMMs/Kanälen, Compact-PCI-Systeme, usw. Auch Klassen sind Designobjekte, nämlich Gruppen anderer Objekte.

Beispiele sind die Klassen »Net«, »Differential Pair«, »From-To« oder »Component«.

Klassen lassen sich auf manuellem Weg im »Object Class Explorer«-Fenster des PCB-Editors erstellen oder im Schaltplan auf grafischem Weg generieren (nur Net-Klassen).

Entwurfsregeln

In Designer dient normalerweise der »Design Rules Editor« zur Spezifizierung von Leiterplatten-Entwurfs-regeln oder Constraints, obwohl der Anwender einige durchaus auch im Schaltplan spezifizieren kann, indem er ein oder mehrere Netze mit dem »PCB Layout Directive«-Symbol versieht. Einige Entwurfsregeln kontrollieren interaktive Leiterplatten-Editierparameter, andere prüft ein Online-DRC und wieder andere ein manuell durchgeführter Design-Rule-Check (DRC).

Die Regeln für die Breiten und Abstände der Leiterbahnen ergeben sich aus Produktionsmöglichkeiten und Impedanz-berechnungen. Die Regeln bezüglich der Leiterbahnlängen wiederum sind aus statischer Timing-Analyse oder Signalintegritätsanalyse hergeleitet. In anderen Fällen sind sie standardisiert und in einer Norm (zum Beispiel »JEDEC JESD21C DDR-Memory DIMM«-Designdokumente oder PICMG-Dokumente) oder im Design-Guide für Motherboards zu einem bestimmten Prozessor festgeschrieben.

Die Entwurfsregelprüfung an From-Tos und differenziellen Leiterpaaren funktioniert in Designer 10 generell nicht besonders gut. Häufig meldet die DRC-Funktion vorhandene Regelverletzungen nicht, sodass es zu Kontrollzwecken notwendig ist, die Leiterbahnlängen im PCB-Panel manuell zu prüfen und zu berechnen. Gelegentlich ignorieren DRC und On-Line-DRC einige Anpassungsregeln (speziell bei Diffpairs und From-Tos), oder einige der Objekte werden ignoriert. Dies zwingt dazu, jede längenbezogene Regel zu validieren.

Das geschieht durch Löschen einer Leiterbahn und Prüfen, ob die DRC-Funktion eine neue Regelverletzung meldet. Zum Festlegen der Leiterbahnbreite fasst der Anwender normalerweise eine Gruppe von Netzen je nach ihrem Wellenwiderstand in einer »Net Class« zusammen und definiert anschließend eine »Width«-Regel für jede Klasse. Der Leiterbahnabstand hat beim Leiterplattenentwurf zwei Aspekte, nämlich die Fertigungssicherheit und die Kontrolle von Übersprecheffekten.

Für den ersten Aspekt eignet sich die »Clearance«-Regel, während für den zweiten Aspekt die Regel »Parallel Segment« definiert wird. Letztere lässt kurze Segmente außer Acht, da diese bezüglich des Übersprechens nicht relevant sind. Die Regel »Differential Pair Routing« ist für jede Differential-Pair-Klasse zu definieren. Die Regel legt den Abstand zwischen der positiven und der negativen Leiterbahn des jeweiligen Paares fest und wird beim interaktiven Editieren erzwungen, wenn die Routing-Option »Interactive Differential Pair« Verwendung findet.

Für jede DP-Klasse sind zwei weitere Regeln nötig, nämlich die Regeln »Width« und »Matched Net Lengths«, um den Anforderungen an die Phasentoleranz Rechnung zu tragen. Über die Regel »Net Length« lassen sich die minimale und maximale Leiterbahnlänge für eine Gruppe von Signalen (Net-Klasse oder Differential-Pair-Klasse) beziehungsweise für eine Gruppe From-Tos festlegen.

Die Längen von Leiterbahnen in einer Gruppe von Signalen, Diffpairs oder From-Tos relativ zueinander kann der Anwender mittels der Regel »Matched Net Length« kontrollieren. Ein Parameter in dieser Regel spezifiziert die Arten von Objekten, auf welche die Regel anzuwenden ist: »Within Differential Pair« (für die Phasentoleranz differenzieller Leiterpaare), »Between Differential Pairs« (Anpassung zwischen DPs beispielsweise für DVI oder Hyper-Transport) und »Between Nets« (zur Netzanpassung).

Interaktives Editieren

Beim interaktiven Editieren oder Routen gilt es, die Leiterbahnlängen in Echtzeit (mit Längenmesser oder Gauge) beziehungsweise in Quasi-Echtzeit (per PCB-Panel) zu messen. Die Gauge-Funktion erscheint während des »Interactive Length Tunings« oder des »Interactive Differential Pair Length Tunings«, wodurch in Echtzeit die Gesamtnetzlängen gezeigt werden (Bild 3).

Die Abstimmparameter kann der Anwender während des Tunings durch Drücken der TAB-Taste einrichten. Leider geht dies nur für die Gesamtlänge des Netzes und nicht für die Längen einzelner Segmente (From-To). Außerdem erscheint dieses Fenster nicht während des Routings oder beim Verschieben/Strecken von Leiterbahnsegmenten, wie es in Allegro der Fall wäre.

Das PCB-Panel zeigt die Längen in Quasi-Echtzeit, also kommt zuerst das Abstimmen, Verschieben und Routen (Bild 4). Anschließend drückt der Anwender ESC und sieht die aktualisierten Werte. In einer Liste sind die Längen der anderen Leiterbahnen einer Klasse aufgeführt. Im PCB-Panel finden sich verschiedene Reiter für die unterschiedlichen Objekttypen (darunter Nets, Diffpairs und From-Tos).

Das »Rules&Violations«-Panel listet sämtliche Regeln und deren Verletzungen auf, ohne allerdings Details zu den Verletzungen (z.B. Abweichung von der bevorzugten Länge) zu nennen. Einige erscheinen in Quasi-Echtzeit, während andere ein erneutes Starten der DRC-Funktion erfordern. Die differenziellen Leiterpaare müssen symmetrisch sein.

Deshalb ist die Länge des negativen Netzes relativ zum positiven Netz desselben Paars anzupassen. Unterbleibt dies, so kommt es zu Signalintegritätsproblemen, die sich durch ein geschlossenes Augendiagramm, erhöhtes Gleichtaktrauschen infolge von Modenwandlung, vermehrtes Übersprechen und erhöhtes EMI-Aufkommen äußern können.

Die erforderliche Phasentoleranz ist in Prozessordatenblättern, Designrichtlinien oder Normen festgelegt. Zum Beispiel ist für PCI-Express 1.1 in der Regel eine Toleranz von ±0,125 mm üblich. Generell ist es bei schnellen seriellen Interfaces mit mehreren Lanes (etwa PCI-Express, DVI oder Hyper-Transport) notwendig, verschiedene Diffpairs untereinander anzupassen. Das Design dieser Schnittstellen muss ähnlich wie die Netzanpassung erfolgen. Die Regelparameter müssen jedoch auf »Check Nets Within Differential Pair« eingestellt sein, außerdem ist statt des Reiters »Nets« der Reiter »Diffpairs Editor« zu verwenden.

Netzsegmente und Leitungen

Altium bietet nur minimale Unterstützung für das Kontrollieren der Netzsegmentlängen. Es ist zwar möglich, Designs damit zu implementieren, aber dies geht nicht ohne eine Menge Provisorien und manueller Berechnungen. Da die DRC-Funktion leider Regeln für From-Tos ignoriert, sind manuelle Prüfungen während des Editierens vorzunehmen.

Der Anwender muss also die From-To-Längen im From-To-Editor des PCB-Panels ebenso prüfen wie die Gesamtnetzlänge im Gauge (im Vergleich zu den Berechnungen). Zunächst routet er die Leiterbahnen manuell entsprechend der vorgegebenen Topologie, bevor er die entsprechenden Leiterbahnsegmente abstimmt.

Das Anpassen von From-To-Längen unterscheidet sich von der Abstimmung verschiedener Netze aufeinander, denn es besteht nicht die Möglichkeit, alle From-Tos des gleichen Segments in verschiedenen Netzen in einer einzigen Liste zusammenzufassen. Mit dem On-Screen-Längenmesser ist nur die Gesamtnetzlänge zu sehen, die innerhalb eines manuell berechneten Bereichs liegen muss (separat für jedes From-To eines jeden Netzes).

In Allegro zum Beispiel treten diese beiden Probleme mit dem Constraint-Manager nicht auf. Für die Nutzer von Designer bringt das Anpassen von Segmenten deshalb mehr Handarbeit und deutlich mehr Zeitaufwand mit sich. Die erforderliche manuelle Berechnung ist die neue Gesamtlänge für jedes Segment im Netz zur Verwendung im On-Screen-Längenmesser: New_Total_Length =  actual_total_length + (required_segment_length - actual_segment_length).

Der From-To-Editor zeigt gelegentlich eine falsche Länge an. Ursache hierfür ist, dass Designer die Länge von Teilstrecken der Leiterbahn-segmente nicht messen kann. Um dies zu vermeiden, sollte der Anwender die Leiterbahnen so routen, dass sie bei jeder Verzweigung unterbrochen werden. Ist das Problem damit immer noch nicht behoben, muss er die betreffenden Segmente löschen und neu routen (Bild 5). 

Gehäusebedingte Leitungslängen (Bild 6) unterstützt Altiums Designer in keiner Weise. Bei großen FC-BGA-Gehäusen passt das Tool die Länge der Leitungen, die Signale innerhalb des Gehäuses passieren müssen, in der Regel nicht an, sondern routet jedes Signal mit einer anderen zufälligen Länge. Die betreffende Information ist üblicherweise in einer Excel-Tabelle (Trace Length Calculator), in einer Designrichtlinie oder in einem Datenblatt verzeichnet.

Bei der Längenkontrolle kommt es darauf an, für das richtige Timing an den Empfängerschaltungen des Chips und nicht etwa an den herausgeführten Anschlüssen des Gehäuses zu sorgen. Die Designsoftware sollte deshalb die Gesamtlänge der Leitungen aus Gehäuse und Leiterbahnen messen beziehungsweise kontrollieren. Bei anderen Programmen wie zum Beispiel Allegro ist dieses Feature als »Pin Delay« für Komponenten aus der Bibliothek enthalten.

Die einzige Abhilfe für »Designer« besteht darin, manuell für jedes Netz einzeln Regeln für die absolute Länge aufzustellen (bei bestimmten Schnittstellen können 100 bis 200 Regeln erforderlich sein) und möglicherweise neue Excel-Tabellen für jedes Design zu erstellen. Dieser letzte Punkt zeigt beispielhaft den Unterschied zwischen kostengünstigen und teuren Systemen auf. Wer wirklich komplexe Designs mit hohen Signalfrequenzen mit Altiums Designer entwickeln will, vermisst einige wichtige Features, die umständlich mit Workarounds zu ersetzen sind.

Neben der Unterstützung für gehäusebedingte Leitungslängen in großen BGA-Gehäusen stehen auf der Wunschliste der Import von Entwurfsregeln aus Excel-Tabellen sowie das automatische Generieren von From-Tos für alle Netze einer Gruppe oder Klasse basierend auf einer anwenderdefinierten (grafischen) Topologie. Auch Verbesserungen am Längenmesser sind erforderlich: Auch From-To-Längen sollten angezeigt werden.

Das Fenster sollte zudem beim Routen und Verschieben sichtbar sein, und es sollte ein Längenmesser pro Regel möglich sein. Praktisch wäre ebenso eine farbliche Kennzeichnung der Längenparameter im PCB-Panel abhängig davon, ob die Entwurfsregel-Prüfung bestanden wurde oder nicht.

Über den Autor:

Istvan Nagy ist Elektronikentwickler bei Bluechip Technology.