Aufbau und Validierung von PCIe Keysight hat PCIe-Protokoll gemeistert

Das PCIe-Protokoll erfordert für die Validierung der Interoperabilität, Zuverlässigkeit und Rückwärtskompatibilität flexible Tests, die nicht nur dem aktuellen Standard entsprechen.

In Hinblick auf PCIe (Peripheral Component Interconnect-Express) ist die Interoperabilität und die Rückwärtskompatibilität mit früheren PCI-Generationen wichtig. Technische Parameter und Protokolle eines Designs werden validiert, um die Leistungsfähigkeit und Standardkonformität nachzuweisen und ggf. weiterzuentwickeln. Um PCIe zu testen, muss u. a. die Schichtstruktur des Standards berücksichtigt werden.

Schichten von PCIe

PCIe ist ein Protokoll mit mehreren Schichten (Bild): Die Bitübertragungsschicht (Physical Layer) sorgt für die physikalische Datenverbindung. Sie besteht z. B. aus einem elektrischen Unterblock und der »Equalization«. Equalization ist ein Unterblock, der zum Einmessen der Leitung dient, sowohl auf Seiten des Senders, als auch auf Seiten des Empfängers. Während der elektrische Unterblock den Beginn einer Datenübertragung signalisiert, werden mit Hilfe der Equalization Parameter eingestellt, um ein sauberes Signal für die Leitung zu generieren.

Die Datensicherungsschicht (Data Link Layer) liegt über der Bitübertragungsschicht und verwaltet die Datenübertragung. Dort finden Bestätigungen, wiederholte Sendungen sowie die Fehlererkennung und -korrektur statt. Weiterhin ist diese Schicht für die Datenflusssteuerung zuständig. Sie gewährleistet, dass der Empfänger zum Datenempfang bereit ist.

Die Transaktionsschicht (Transaction Layer) umfasst die Konfiguration und Steuerung des Datentransports. Mittels Speichermapping (MMIO, Memory-Mapped IO) werden Daten direkt in den Speicher geschrieben oder gelesen. Die Schicht hat u. a. »Transaction Layer Protocol Packets« (TLP), z. B. Speicher-Schreib-Lese-Daten.

In der Anwendungsschicht (Application Layer) finden Speicheroperationen statt. Als Anwendung für das Speichermanagement, gibt es z. B. das NVMe-Protokoll. In den TLPs sind NVMe-Anwendungsbefehle verpackt, die sich mit dem Speichern und Abrufen von Daten befassen.

Die Validierung der Signalisierung setzt voraus, dass der Zustand »Daten gültig« auf der Bitübertragungsschicht vorhanden ist. Der Protokollanalysator und Protokollexerciser prüft dann die höheren Schichten des Protokolls. Der Analysator wird im aktiven Zustand in die Verbindung zweier Geräte geschaltet, dort beobachtet und bewertet er die Daten jeder Schicht. Der Exerciser wird am Ende einer Verbindung angeschlossen. Er emuliert Bedingungen unter Last und beobachtet die Reaktion des Testobjekts.

Validierung des Protokolls

Bei der Validierung der PCIe-Datensicherungsschicht (DLLPs) wird u. a. geprüft, ob die Protokollpakete richtig übertragen werden. Man testet, ob positive oder negative Bestätigungen, wiederholte Sendungen oder die Datenflusssteuerung korrekt funktionieren.

Debugging des PCIe-Protokolls bedeutet die Datenerfassung bei voller Geschwindigkeit einschließlich der Übergangszustände des Energiemanagements zu erfassen. Der Datenverkehr wird schnell synchronisiert und auf eine spezielle Protokollsequenz getriggert. Weiterhin werden beim Debugging die Signale so abgegriffen, dass der Abgriff die Funktion des Busses nicht beeinflusst. Abgriffe mitten im Bus schaffen Zugang zum Datenverkehr, dürfen die Signalqualität aber nicht verschlechtern. Zwischenplatinen im Slot leiten deshalb die Signale passiv weiter – ohne sie zu verändern. Ein flexibler Zugang zum Bus mit mehreren Abgreifoptionen ist notwendig.

PCIe 4.0 ist mit 16 GT/s gegenüber PCIe 3.0 (8 GT/s) doppelt so schnell. Um PCIe 4.0 zu validieren, benötigt man umfangreiche Möglichkeiten zur Beeinflussung der Signalqualität. Das NVMe-Protokoll hat eine skalierbare Hostcontroller-Schnittstelle. Sie arbeitet mit mehreren Warteschlangen für Befehle. Mit der Schnittstelle stellt man mehrere Pfade ein, die für das Abarbeiten von Befehlen und deren paralleler Ausführung wichtig sind.

Testaufbau

Um die Funktionalität und Interoperabilität des Testobjekts nachzuweisen, wird die Verbindung und Datenübertragung geprüft. Der Analysator muss deshalb in jeder Protokollschicht aufzeigen was passiert. Sobald ein Fehler auftritt, wird dieser bis in die entsprechende Schicht verfolgt und beseitigt. Der Protokollexerciser emuliert entweder eine Quelle oder ein Ziel, um das Testobjekt zu validieren. Der Exerciser arbeitet als idealer Partner. Er stimuliert das Testobjekt mit einem passenden I/O-Datenverkehr. Wenn der Ablauf der Fehlererholung validiert wird, müssen Bedingungen und Szenarien simuliert werden, ohne die Leistungsparameter zu beeinflussen. Der Signalabgriff darf die Signalqualität nicht verschlechtern oder den Ablauf des Protokolls behindern.