Statischer Speicher mit wahlfreiem Zugriff als Binärcode 3D-Darstellung

(Bild: profit_image – Adobe Stock)

Gefährliche Fehler im Embedded-Endprodukt erkennen und vermeiden – die Auswahl geeigneter Methoden richtet sich nach internationalen Sicherheitsstandards. Deren Herausforderung besteht jedoch darin, dass sie detaillierte Hardwarekenntnisse, etwa eines Mikrocontrollers, voraussetzen. So empfiehlt die Norm IEC 60730 einen Checkerboard-Speichertest, um Gleichstromfehler in Variablenspeichern für Software der Sicherheitsklasse B aufzudecken. Und dies ist schwieriger, als es zunächst scheint.

Gleichstrom- und Kopplungsfehler erkennen

Obwohl die Halbleiterhersteller ihre SRAM-Produkte testen und keine fehlerhaften Bausteine ausliefern, können und werden während deren Lebensdauer zufällige Hardwaredefekte auftreten. Dies ist einer der Gründe dafür, dass Hardwaretests in einem Mikrocontroller während der Laufzeit nötig sind. Sicherheitsnormen wie die IEC 60730, Anlage H.2.19.6.1, schlagen einen Checkerboard-Algorithmus vor, um DC-Fehler in SRAMs zu identifizieren, die für Anwendungen entsprechend dem Sicherheitsniveau der Klasse B vorgesehen sind. Der Checkerboard-Test wird oft gewählt, weil er die wahrscheinlichsten Fehler in einem SRAM abdeckt und schnell ist. Dies wiederum hält seine Auswirkungen auf die Leistungsfähigkeit der Applikation gering. Neben DC-Fehlern, bei denen ein Bit dauerhaft auf High oder Low bleibt, kann es der Checkerboard-Algorithmus auch erkennen, wenn sich benachbarte Bits gegenseitig beeinflussen.

Ein SRAM besteht in der Regel aus Worten von acht, 16 oder 32 Bits, sie können aber auch länger sein. Physikalisch sind die Bits in Arrays organisiert, wobei jedes Bit in der Regel acht Nachbarn hat (Bild 1). Ein physikalischer Defekt in einem Bit kann sich auf ein einzelnes Bit auswirken, sodass dieses High oder Low bleibt. Man spricht in diesem Fall von einem Gleichstromfehler. Demgegenüber besteht ein Kopplungsfehler in der Trennung von zwei Bits, wobei eine benachbarte Agressorzelle (in Bild 1 lila) eine Opferzelle (Victim, im Bild gelb) beeinflussen kann. Statistisch ist das Auftreten des DC-Fehlers wahrscheinlicher, aber es ist dennoch wichtig, auch die wahrscheinlichsten Kopplungsfehler zu erkennen.

Betrifft ein Fehler ein einzelnes Bit, sodass es auf High oder Low festhängt, kann dies aufgedeckt werden, indem man den Wert eins schreibt und die Eins durch Rücklesen verifiziert. Anschließend wird der Wert null geschrieben und die Null durch Rücklesen verifiziert, wie in Bild 1 dargestellt. Handelt es sich bei dem Defekt hingegen um einen Kopplungsfehler zwischen zwei benachbarten Bits, etwa Bitspalte 9 und 10 in Zeile 2, wird dieser bei bestimmten Mustern, wie alle Einsen oder alle Nullen, nicht aufgedeckt, da die Zellen während des Tests denselben Wert besitzen.

Solche Kopplungsfehler, wie die seitlich, oben und unten benachbarten Zellen, haben entgegengesetzte Binärwerte. Bild 1 zeigt unten rechts, dass die Eins in Bit 10 das Bit 9 verfälscht hat. Der Kopplungsfehler wird aufgedeckt, da Bit 9 nicht den erwarteten Wert null hat.

Mögliche Kopplungsfehler zwischen benachbarten Bits.
Mögliche Kopplungsfehler zwischen benachbarten Bits. (Bild: Microchip)
Beispiele für die physikalische Anordnung wortorientierter Speicher.
Beispiele für die physikalische Anordnung wortorientierter Speicher. (Bild: Microchip)

Physikalisches und logisches SRAM-Layout

Damit der Checkerboard-Algorithmus funktionieren kann, muss man wissen, welche Bits Nachbarn sind. Dies ist ein Problem, weil die Datenblätter normalerweise nur das logische, nicht aber das physikalische Layout des SRAM beschreiben. Um zu verstehen, wie SRAMs physikalisch organisiert sind, muss man zwischen bit- (Bit-Oriented Memories, BOMs) und wortorientierten Speichern (Word-Oriented Memories, WOMs) unterscheiden: Während bei BOMs jeweils auf ein Bit zugegriffen werden kann, wird bei WOMs jeweils ein n-Bit-Wort gelesen und geschrieben. Die meisten realen Speicher sind als WOM implementiert, jedoch die klassischen Speichertestalgorithmen in der wissenschaftlichen Literatur gehen oft von BOM-Implementierungen aus.

In WOM-Speichern gibt es drei Hauptkategorien für die physikalische Organisation der Bits, aus denen ein Wort besteht: nebeneinander liegende, verschachtelte und Sub-Arrays. Während bei einem logischen Layout jedes Wort unter dem vorhergehenden in derselben Spalte – wie ein Adressraum – angeordnet wird, platzieren benachbarte Speicher jedes Wort in derselben Zeile nebeneinander, wie in Bild 2 dargestellt. Verschachtelte (Interleaved-) Architekturen teilen jedes Bit des Worts auf die verschiedenen Spalten und Zeilen des SRAM-Arrays auf. Bei der Sub-Array-Organisation wird jedes Bit eines Worts in verschiedenen, physikalisch getrennten Blöcken des SRAM untergebracht. In der Realität kennt man das physikalische Layout nicht, das für die korrekte Durchführung eines Checkerboard-Tests erforderlich ist.

Eigenschaften und Mängel des Checkerboard-Tests

Der einfachste Ansatz für die Implementierung eines Checkerboard-Algorithmus ist es, abwechselnd den Wert 0xAA (unter der Annahme eines 8-bit-Datenworts) in die erste Adresse und 0x55 in die nächste zu schreiben, bis alle zu prüfenden Adressen mit dem Checkerboard-Muster aus Einsen und Nullen gefüllt sind. Das Muster wird überprüft, um DC- oder Kopplungsfehler zwischen benachbarten Zellen zu erkennen. Der Vorgang wird dann mit dem umgekehrten Muster wiederholt. Wie bereits angedeutet, gibt es einen Haken: Ein Checkerboard-Muster im logischen Layout des Speichers muss nicht unbedingt auch ein Checkerboard-Muster im zugrundeliegenden physikalischen Layout sein (Bild 3).

Es mag naheliegend sein, den Unterschied zwischen logischem und physikalischem Layout zu kompensieren, aber die dafür notwendigen Informationen sind selten im Datenblatt des Speichers verfügbar. Was ist also zu tun? Den geringeren Abdeckungsgrad akzeptieren, da die Diagnose immer noch DC- und einige Kopplungsfehler zwischen benachbarten Bits abdeckt? Das Layout vom Halbleiteranbieter anfordern und für jeden Baustein eine eigene Implementierung des Checkerboard-Tests erstellen? Oder einen anderen Algorithmus wählen? Da nun die potenziellen Mängel des Checkerboard-Tests bekannt sind, lässt sich eine fundierte Entscheidung treffen.

Datenmuster des logischen gegenüber dem des physikalischen SRAM.
Datenmuster des logischen gegenüber dem des physikalischen SRAM. (Bild: Microchip)

Alternative Algorithmen für SRAM-Laufzeittests

Die in der IEC 60730 für die Sicherheitsstufe C vorgeschlagenen Speichertests weisen eine höhere Fehlererkennungsabdeckung auf – aber sie fallen unter die Kategorie der Produktionstest-Algorithmen. Somit benötigen sie eine längere Laufzeit, erkennen auch seltenere Fehlertypen, zerstören aber die im SRAM gespeicherten Daten, da sie auf dem gesamten SRAM anstatt in Unterblöcken ausgeführt werden. Besser geeignet sind hybride March-Algorithmen, die dem March-Algorithmus für Produktionstests angepasst sind. Sie sind in WOM-optimierten Implementierungen verfügbar und erreichen eine hohe Testabdeckung. Außerdem lassen sich diese Algorithmen so implementieren, dass sie auf kleineren, sich überlappenden Abschnitten des SRAM laufen. So lässt sich verhindern, dass alle Daten im SRAM auf einmal gelöscht werden – und damit ein Neustart des Embedded-Systems vermeiden. Der Nachteil der March-Algorithmen besteht darin, dass sie rechenintensiver sind als die traditionellen Checkerboard-Algorithmen. Dieser Aufwand ist jedoch in sicherheitskritischen Systemen erforderlich.

Soll ein traditioneller Checkerboard-Test durch einen March-Test ersetzt werden, finden sich solche Angebote bei einigen Mikrocontrolleranbietern. Microchip ist eines der Unternehmen, die eine leistungsoptimierte Implementierung eines March-C-Algorithmus als Teil ihrer Software-Diagnosebibliotheken anbieten. Die Lösung von Microchip unterstützt das Testen des gesamten SRAM, das normalerweise nur beim Start stattfindet, um eine maximale Testabdeckung zu erzielen. Auch kleinere Speicherblöcke werden geprüft, um die Echtzeitauswirkungen auf die Applikation zu verringern. Die Implementierung kann kostenlos von der Microchip-Website als Teil der IEC-60730-Class-B-Bibliothek heruntergeladen werden. Sie ist für PIC- und AVR-Mikrocontroller gedacht, lässt sich aber auch auf andere MCUs von Microchip portieren.

Autoren

Henrik Nyholm

Safety Software Engineer in der PIC und AVR Applications Group bei Microchip

Jacob Lunn Lassen

Technical Business Development Manager für sicherheitskritische Systeme bei Microchip

Sie möchten gerne weiterlesen?