Im letzten Update haben wir uns damit beschäftigt, einen geeigneten Lagenaufbau für das Modul zu definieren sowie das Fanout-Routing für alle auf der Platine platzierten Komponenten hinzuzufügen. Basierend auf all diesen Vorbereitungen sind wir nun fast bereit, die ersten Leiterbahnen zu verlegen. Bevor wir jedoch irgendwelche Komponenten auf der Platine verbinden, müssen wir die Impedanzprofile definieren und die passenden Designregeln für die korrekte Leiterbahnbreite einrichten.
Das Einrichten der Impedanzprofile ist im Layerstack-Manager unkompliziert. Wir müssen sowohl Single-Ended- als auch Differential-Impedanzprofile definieren. Die Informationen, welche Impedanzwerte benötigt werden, können den Schnittstellenstandards und den Hardware-Design-Leitfäden für den NXP i.MX8-Prozessor entnommen werden. Die folgenden Impedanzwerte, sowohl Single-Ended als auch Differential, werden im Design verwendet:
Auf dem zuvor definierten Lagenaufbau haben wir vier Signallagen zur Verfügung, die wir für das impedanzkontrollierte Routing verwenden können, nämlich die oberste Lage, L2, L7 und die unterste Lage. Die oberste und die unterste Lage haben jeweils nur eine Referenz-Erdungsebene, während L2 und L7 zwischen zwei Referenzebenen eingebettet sind. Nachdem wir die Impedanzwerte und die Referenzebenen eingegeben haben, wird die Geometrie der Leiterbahnen automatisch berechnet:
Layerstack-Manager Impedanzprofil Differential 100 Ohm
Beim Definieren der Leiterbahnengeometrie, insbesondere der Leiterbahnbreite und des Abstands für differentielle Paare, ist es wichtig, den benötigten Verdrahtungsraum im Auge zu behalten. Wenn möglich, möchten wir die Gesamtbreite des differentiellen Paares gering halten, um den benötigten Verdrahtungsraum zu begrenzen. Abhängig von der Dichte der Platine sollte dies auch bei der Definition des Lagenaufbaus berücksichtigt werden.
Es gibt nur noch einen Schritt, bevor wir die ersten Leiterbahnen verlegen können, und das ist, Altium Designer die erforderlichen Leiterbahnbreiten (und Abstände für die differentiellen Paare) je nach Schnittstelle und Verdrahtungsebene mitzuteilen. Die Impedanzwerte werden den entsprechenden Schnittstellen im Schaltplan zugewiesen. Hier können wir mit Direktiven arbeiten, um Netze Netzklassen oder Klassen für differentielle Paare zuzuweisen.
Mehrere Netzklassen, die einem Designbereich zugewiesen sind
Im Designregel-Editor können wir nun diese Netze oder Klassen für differentielle Paare anvisieren und die entsprechenden Leiterbahnengeometrien zuweisen. Anstatt die Leiterbahnengeometrie manuell einzugeben, können wir das passende Impedanzprofil wählen, das wir im Layerstack-Manager definiert haben:
Impedanzprofil, das im Designregel-Dialog verwendet wird – Regel mit hoher Priorität überschreibt Impedanzprofil
Beachten Sie, dass wir eine weitere Designregel haben, die in unserem Setup die höchste Regel-Priorität besitzt. Diese Designregel gilt nur für bestimmte Designbereiche, die wir im vorherigen Update erstellt haben. Diese Designbereiche werden direkt unter den Fine-Pitch-Komponenten platziert und ermöglichen es uns, lokal eine Leiterbahnbreite und -abstand von bis zu 85 um im Breakout-Bereich zu verwenden. Die Designregeln für diese Bereiche haben die höchste Priorität, da wir die definierten Impedanzprofile überschreiben müssen. Da wir möglicherweise nicht in der Lage sind, die erforderliche Leiterbahngeometrie innerhalb dieser Bereiche zu befolgen, müssen wir sie so klein wie möglich halten und Leiterbahngeometrien verwenden, die nur dort von den Impedanzprofilen abweichen, wo es absolut notwendig ist. Wenn wir diese Abschnitte sehr klein halten, wird der Gesamteinfluss auf die Signalintegrität des Kanals akzeptabel sein. Allerdings müssen wir dies in unseren Post-Layout-Simulationen überprüfen.
Designbereiche in Rot unter Fine-Pitch-BGAs gezeigt
Jetzt, da alle Designregeln definiert wurden, können wir mit dem Routing der ersten Schnittstelle beginnen. Auf diesem Board werden wir mit dem DRAM-Interface beginnen.
Sie werden bemerken, dass wir die gesamte Routing-Strategie für dieses Board noch nicht definiert haben. Wir hätten dies tun können, bevor wir irgendwelche Routen platziert haben, und je nach persönlicher Vorliebe ist dagegen nichts einzuwenden. Bei diesem Board habe ich mich entschieden, zuerst die DRAM-Schnittstelle zu routen, um zu sehen, wie viel Platz und wie viele Routing-Layer wir für die DRAM-Schnittstelle zuweisen müssen. Wenn wir den LPDDR4 IC auf zwei oder drei Signallayern routen können, dann können wir ein oder zwei Routing-Layer für andere Schnittstellen in der Nähe zuweisen. Da die DRAM-Schnittstelle ziemlich viel Platz einnimmt, besonders auf einem kleinen Board wie diesem, wäre ein weiterer freier Signallayer sehr wünschenswert.
Lassen Sie uns einen schnellen Blick auf das Routing der Entkopplungskondensatoren auf dem LPDDR4 IC werfen. Das Verbinden der Entkopplungskondensatoren war Teil des Breakout-Routings im vorherigen Artikel. Lassen Sie uns das zuerst überprüfen, um zu sehen, ob wir zusätzliche VIAs oder Leiterbahnen auf der Ober- oder Unterseite hinzufügen müssen. Die Tatsache, dass wir gefüllte und abgedeckte VIAs verwenden, kommt uns beim Routing der Entkopplungskondensatoren wirklich zugute.
Jeder Stromanschlusspin auf dem DRAM IC hat seine eigene Durchkontaktierung (VIA), die eine Verbindung zu allen 10 Lagen der Platine herstellen kann. Wir müssen VIAs bei diesen Pins verwenden, da wir es mit Rückströmen auf allen Masseebenen im Stackup zu tun haben. Da die Entkopplungskondensatoren auf der Unterseite der Platine platziert sind, müssen wir auch die VDD- und VDDQ-Strompads auf der Unterseite der Platine verfügbar haben. Der DRAM IC hat einen Pinabstand von 0,65mm in der Y-Achse. Dieser Pinabstand ermöglicht es uns, die Entkopplungskondensatoren direkt zwischen den GND- und VDD/VDDQ-Pads zu platzieren. Diese Anordnung ermöglicht die geringstmögliche Schleifeninduktivität. Wir können nun die Entkopplungskondensatoren gleichmäßig unter den Strompins verteilen.
Die optionalen Taktabschlusswiderstände sind ebenfalls direkt unter den Takt-Pins platziert, jeweils direkt über VIAs mit den Pins verbunden.
Entkopplungskondensatoren auf der Unterseite des LPDDR4 IC
Da keine zusätzlichen Leiterbahnsegmente für die Entkopplungskondensatoren benötigt werden, können wir den Platz auf der Unterseite für die Signalverdrahtung nutzen. Wir werden uns eng an das Referenzdesign des i.MX 8M Plus halten und alle DQS-Differentialpaare auf der Unterseite der Platine platzieren. Zusätzlich können wir auch die DRAM-Reset- und Clock-Enable-Signale auf der Unterseite platzieren:
DRAM-Verdrahtung Unterseite
Die Färbung der Command/Address/Control-Signale unterschiedlich von den DQ-Gruppen hilft uns, eine gute Verdrahtungsstrategie zu identifizieren. Die cyanfarbenen Command/Address/Control-Signale befinden sich alle hinter den ersten beiden Reihen von Signalkontakten auf dem SoC, mit Ausnahme der beiden Uhrensignale. Wenn wir diese Signale auf den inneren Lagen verlegen wollen, müssen wir sicherstellen, dass keine VIAs von den zwei äußeren Reihen von Signalkontakten im Weg sind. Wir können Byte 0 von den Kanälen A und B sowie die Uhrensignale, die alle auf den zwei äußeren Reihen verfügbar sind, direkt auf der oberen Schicht verbinden, ohne eine Schichtänderung zu benötigen:
DRAM-Verdrahtung Oberseite
Das Byte 1 von den Kanälen A und B befindet sich beide in Richtung der Ecke des BGA. Das ist perfekt, da es uns ermöglicht, diese Signale auf L2 zu verlegen und sie mit dem DRAM IC zu verbinden, während immer noch genug Platz zwischen diesen beiden Routing-Gruppen bleibt, um die Befehls-/Adress-/Steuerungssignale zu verbinden:
DRAM L2 Routing
Streng genommen ändern wir nicht die Referenzebene, sondern führen eine zweite ein, indem wir auf L2 wechseln. Sobald wir eine Spur mit einer zeitlich veränderlichen Spannung über eine Masseebene legen, wird unabhängig davon, ob eine zweite Referenzebene vorhanden ist, ein Strom fließen. Um auch für diese Ströme einen Rückweg zu bieten, verwenden wir Rückweg-VIAs in der Nähe der Lagenübergänge auf der oberen Schicht. Die Signale, die hinter den zwei äußeren Pinreihen unter dem BGA die Schichten wechseln, haben bereits Rückweg-VIAs in der Nähe, die durch die zwei Reihen von Massepins und Masse-VIAs des SoC gebildet werden:
Rückweg-VIAs für die DRAM-Schnittstelle
Hier ist noch ein Detail, das im Zusammenhang mit den Rückführungswegen beachtet werden sollte. Wir verwenden einen gestaffelten Mikro-VIA-Lagenstapel. Daher müssen die zwei aufeinanderfolgenden Mikro-VIAs mit einem bestimmten Mindestabstand zueinander platziert werden. Ein kurzes Leiterbahnsegment wird benötigt, um eine Verbindung zwischen den zwei aufeinanderfolgenden VIAs herzustellen. Dieses Leiterbahnsegment wird auf der Masseebene unterhalb der oberen und unteren Schicht platziert. Wir müssen vorsichtig sein, keine Schnitte oder Leerstellen auf der Masseebene zu erzeugen, die den Rückführungsweg der Signalleitungen unterbrechen würden:
Rückführungswegmanagement - Leerstellen und Trennungen auf der linken Seite, verbesserte Verlegung auf der rechten Seite
Durch das Anordnen der Mikro-VIAs und Leiterbahnsegmente in Übereinstimmung mit dem BGA-Raster des DRAM-Bausteins können wir sicherstellen, dass immer eine solide Masseverbindung unterhalb der Signalleitungen vorhanden ist:
Die Leiterbahnen auf der oberen Schicht und auf L2 sind in einem gleichmäßigen Abstand von mindestens 0,275 mm zueinander angeordnet. Dieser Abstand ist notwendig, um sicherzustellen, dass wir kein übermäßiges Übersprechen zwischen diesen Signalen erzeugen. Wir müssen das auch in einer Post-Layout-Simulation überprüfen.
Das Einzige, was jetzt noch zu tun bleibt, um das Routing der DRAM-Schnittstelle abzuschließen, ist das Delay-Tuning. Wir werden dies jedoch jetzt nicht tun. Stattdessen wird das Delay-Tuning für alle Schnittstellen durchgeführt, sobald das Routing abgeschlossen ist. Bei sehr hochdichten Designs oder Schnittstellen, die eine umfangreiche Verzögerungskompensation erfordern, ist es besser, das Längentuning früher als später durchzuführen. Die Timing-Anforderungen bei LPDDR4 sind jedoch nicht allzu streng, daher bin ich zuversichtlich, dass wir keine Probleme bekommen werden, wenn wir uns später darum kümmern.
Das DRAM-Routing ist nun abgeschlossen, und wir können zur Planungsphase des Layouts übergehen und alle anderen Schnittstellen routen. Dies und mehr wird Teil des nächsten Updates zum Open-Source-Compute-Modul-Projekt sein!