Der Begriff Hazard stammt aus dem englischen Sprachraum und beschreibt eine mögliche Ursache für Schadensereignisse. In dem hier beschriebenen Stoffgebiet der Logikschaltungen, deren mathematische Beschreibung auf der von Claude Shannon entwickelten Schaltalgebra, aufbauend auf der booleschen Algebra, beruht, gibt es ebenfalls Hazards. Dies sind Eigenschaften der Schaltfunktionen (boolesche Funktionen), die unter ungünstigen Umständen zu fehlerhaften Ausgabesignalen bei Änderung von Eingabesignalen führen können. Dies beruht darauf, dass die Ausbreitungsgeschwindigkeit von Signaländerungen auf Signalleitungen endlich ist und die Umschaltvorgänge in Logikbausteinen, die die Schaltfunktionen realisieren, nicht, wie idealerweise angenommen, instantan erfolgen, sondern Verzögerungszeiten beinhalten. Dies führt auf kritischen Signalpfaden zu Wettläufen sich ändernder Signale (englisch „critical race“), die am Schaltungsausgang zu fehlerhaften Impulsen oder Glitches führen können. Der Hazard ist eine Eigenschaft eines Schaltnetzes, die keine hinreichende Bedingung für das Auftreten von Fehlern bei Änderung der Eingangssignale eines entsprechenden realen Schaltkreises darstellt.Werner Roddeck: Mehrfacher Signalwechsel in Schaltnetzen und asynchronen Schaltwerken. Schriftenreihe des Lehrstuhls für Mess- und Regelungstechnik, Heft 10, Ruhr-Universität Bochum, 1977.
Man unterscheidet zwischen strukturellen Hazards (Logikhazards) und funktionalen Hazards (Funktionshazards). Ein Glitch kann das kurzzeitige, vom logischen Entwurf der Schaltfunktion abweichende Auftreten eines logischen „1“-Signals (0-Hazard) am Schaltungsausgang während eines Eingangssignalwechsels sein, oder der kurzzeitige Zusammenbruch eines logischen „1-Signals“ (1-Hazard) auf den logischen Wert „0“. Außerdem unterscheidet man zwischen statischen und dynamischen Hazards. Statisch heißt ein Hazard, wenn die logischen Pegel des Ausgangs vor und nach der Änderung der Eingangssignale gleich sein sollen und dynamisch, wenn der logische Ausgangspegel sich ändern soll.
In rein kombinatorischen asynchronen Schaltnetzen können Glitches aufgrund von Hazards zu keinen dauerhaften Störungen führen. In sequentiellen Schaltungen (Schaltwerk), die Speicher wie Flip-Flops beinhalten, können diese fehlerhaften Impulse jedoch gespeichert werden und dadurch das Schaltwerk dauerhaft fehlsteuern. Dies ist ein Problem in allen Arten von Digitalrechnern oder Prozesssteuerungen, so dass dort in der Regel alle Eingangssignalwechsel synchronisiert werden (synchrone Schaltwerke). Es wird dabei ein Taktsignal (englisch „Clock“) verwendet, das eine Änderung von Ausgangssignalwechseln bis zum Abklingen der kritischen Wettläufe der Eingangsvariablen verzögert. Dadurch wird die Arbeitsgeschwindigkeit eines synchronen Schaltnetzes gegenüber der eines asynchronen Schaltnetzes herabgesetzt. Dies hat man bei Digitalrechnern in der Vergangenheit durch ständige Verringerung der Schaltverzögerungen von Logikschaltungen bei gleichzeitiger Erhöhung der Taktraten der Prozessoren deutlich verbessern können. So verwendete der Prozessor des Intel 8080A im Jahr 1973 eine Taktfrequenz von 2 MHz, im Jahr 2024 arbeitet der Intel Core i9 mit einer Taktfrequenz von 3–5,8 GHz, einer Steigerung um das mehr als Tausendfache.
Hazardursachen mini|Schaltfolgediagramm von elektronischen Bauelementen a) ideal b) real c) Schalten nachfolgender Elemente In elektrotechnischen Realisierungen von Schaltfunktionen werden kontaktlose Logikgatter oder kontaktbehaftete mechanische Schalteinrichtungen wie Relais oder Schütze verwendet. Wegen der sehr unterschiedlichen Schaltzeiten solcher technischer Bauelemente besitzen diese ein stark voneinander abweichendes Verzögerungsverhalten. Der Vorteil digitaler gegenüber analoger Signalverarbeitung ist ja, dass es nur zwei deutlich voneinander verschiedene Signalzustände mit den Werten „0“ und „1“ gibt, was die Anfälligkeit für Signalstörungen stark reduziert. Bei einer den booleschen Gesetzen gehorchenden Schaltfunktion sind die Beziehungen zwischen Ein- und Ausgangsgrößen statisch; die in der Dynamik bestimmende Größe Zeit t spielt keine Rolle und Signalübergänge finden idealisiert ohne Verzögerung statt.
Bei realen Bauelementen, die solche Schaltfunktionen technisch realisieren, ist das zeitliche Verhalten aber anders. Im Bild ist ein Schaltfolgediagramm eines Signalwechsels dargestelltWerner Roddeck: Einführung in die Mechatronik. Springer-Vieweg Verlag, Wiesbaden, 7. Auflage, 2023, ISBN 978-3-658-41949-3. S. 285. Ein Schaltfolgediagramm beschreibt den Wechsel digitaler Signale zwischen den unterschiedlichen Logikpegeln in Abhängigkeit von der Zeit t. In Teilbild a) ist ein ideales, digitales Signal dargestellt, das anfangs vom Signalpegel „0“ auf den Signalpegel „1“ springt und später wieder zurückspringt. Im Teilbild b) ist das Schaltverhalten eines realen elektronischen Bauelementes dargestellt. Der logische Wert „0“ wird hier von einem Signalpegel kleiner als U0max und der logische Wert „1“ von einem Signalpegel größer U1min repräsentiert. Spannungspegel dazwischen werden als „verbotener Bereich“ bezeichnet, was bedeutet, dass für Eingangspegel in diesem Bereich der Ausgangspegel eines Logikbausteins nicht definiert ist. Die ansteigende und die abfallende Flanke eines realen Signalwechsels sind mit Verzögerungszeiten tein und taus verbunden, deren Dauer (Gatterlaufzeit) von der verwendeten Halbleitertechnologie des Logikbausteins abhängt. Während eines Signalwechsels durchläuft der Spannungspegel am Eingang den verbotenen Bereich und der Wechsel am Ausgang wird dadurch um ein bestimmtes Zeitintervall verzögert. Wann der Flankenwechsel an einem nachfolgenden Logikgatter erfolgt, ist wie in Teilbild c) dargestellt, variabel und relativ unbestimmt. Neben den Verzögerungszeiten der Logikgatter spielen auch die Laufzeiten auf den verbindenden Signalleitungen zwischen Logikbausteinen eine Rolle.
Während die Schaltverzögerungen von Logikgattern in Schottky-TTL-Technik im Bereich von 3 ns liegen, haben Relais durchaus Schaltverzögerungen im Bereich von 100 ms und mehr. Hier sind die Gefahren von Hazards von hoher Bedeutung.
Logische Hazards Logische Hazards beruhen auf einem fehlerhaften Logikentwurf für eine Schaltfunktion. Aufgrund dessen kommt es in der Regel zu einem kritischen Wettlauf zwischen einer Eingangsvariablen und ihrem Komplement . Ein Beispiel für einen solchen kritischen Wettlauf ist im nachfolgenden Bild für die Schaltfunktion dargestellt. Links befindet sich das zur Schaltfunktion gehörende Karnaugh-Veitch-Diagramm (KV-Diagramm) für die drei Eingangsvariablen x1, x2 und x3. Es enthält in den Feldern die Werte der Ausgangsgröße z für alle möglichen Kombinationen des Eingangsvektors . Zur Kennzeichnung der Felder des Diagramms ist jeweils in der linken oberen Ecke jedes Feldes als rote Zahl das sogenannte „Dezimaläquivalent“ der Eingangsvariablen dargestellt. Dies erhält man, wenn man die Belegung der Eingangsvariablen als Dualzahl interpretiert und diese in eine Dezimalzahl wandelt. Um beispielsweise das Dezimaläquivalent „5“ zu erhalten, muss der Eingangsvektor wie folgt belegt sein: . Ebenfalls im KV-Diagramm sind zwei Schleifen für die beiden Minterme der Schaltfunktion durch blaue Umrandung markiert.
Rechts daneben ist das zugehörige Schaltnetz mit Logikgattern dargestellt, wobei die vier Logikbausteine mit g1, ..., g4 nummeriert sind. mini|zentriert|360x360px|Schaltfunktion und KV-Diagramm mit zugehörigem Schaltnetz mini|294x294px|Schaltfolgediagramm für den Übergang (1,1,1) - > (1,0,1) Den statischen logischen 1-Hazard der Schaltfunktion erkennt man im KV-Diagramm daran, dass der Übergang bei einem Eingangssignalwechsel zwischen zwei benachbarten Belegungen mit dem Ausgangswert z = 1 von keinem Primimplikanten überdeckt wird. Benachbart bedeutet dabei, dass die Belegungen des Eingangsvektors sich in genau einer Komponente (hier x2) unterscheiden. Ein solcher Hazard-Übergang ist der zwischen den Belegungen mit den Dezimaläquivalenten 5 und 7. Aufgrund dieses Hazards kann am Ausgang der Schaltungsrealisierung (Logikgatter g4) beim entsprechenden Übergang ein fehlerhafter Einbruch des 1-Signals (Glitch) auftreten. Liegt nämlich am Eingang der Schaltung die Belegung und wechselt man die Belegung auf , so ändert die Variable x2 ihren Wert. Die Schaltgatter g1 - g4 verzögern jede Änderung einer Variablen um ein bestimmtes Zeitintervall Δt, das hier vereinfachend für alle Gatter als gleich angenommen wird. Im nebenstehenden Schaltfolgediagramm ist die Schaltfolge an den Eingängen, den Logikgattern und dem Ausgang beim Übergang des Eingangsvektors dargestellt. Der Inverter g3 zur Negierung von x2 verzögert den Wechsel des Signals um Δt, wodurch der Ausgang des Und-Gatters g2 den Wert „1“ erst um Δt nach dem Wechsel des Gatterausgangs von g1 übernimmt. Dadurch liegt für einen Zeitraum Δt an beiden Eingängen des Oder-Gatters g4 der Wert „0“ an, was einen Ausgang z = 0 zur Folge hat. Dieser kurzzeitige Impuls ist ein Glitch.
Betrachtet man den entgegengesetzten Übergang , so tritt durch die Verzögerung des Inverters an den Eingängen des Gatters g4 kurzzeitig die Belegung auf, die den Ausgangswert z = 1 zur Folge hat. Dies entspricht dem statischen Funktionswert zu Anfang und Ende des Übergangs. Trotz des logischen Hazards in der Schaltfunktion läuft also der Übergang der Eingangsbelegung fehlerfrei ohne Glitch ab. Das fehlerhafte Verhalten des Schaltnetzes beim Vorhandensein eines logischen Hazards beruht demnach auf dem Wettlauf einer Variablenänderung mit der gegensinnigen Änderung ihres Komplementes auf zwei verschiedenen Signalpfaden. Verschiedene Signalpfade liegen dann vor, wenn von einem Divergenzpunkt A (fan-out point) aus ein Eingangssignal verschiedenen Gattern eines Schaltnetzes zugeführt wird. Von da aus laufen Signaländerungen auf verschiedenen Signalpfaden, die in der Regel auch verschiedene Verzögerungszeiten verursachen, zu einem Konvergenzpunkt (fan-in-point), an dem sie wieder zusammengefasst werden. Im Beispiel ist dies das Oder-Gatter g4 mit dem Ausgang z. Verläuft ein Wettlauf so, dass zeitweilig am Konvergenzpunkt Signale anstehen können, deren logische Verknüpfung einen vom statischen Wert des Ausgangssignals abweichenden Wert erzeugen können, so wird dieser Wettlauf als „kritisch“ (critical race) bezeichnet. Nur wenn ein Variablenwettlauf kritisch ausfallen kann, liegt im Schaltnetz ein Hazard vor.
Ein logischer Hazard einer Schaltfunktion kann jedoch durch einen geänderten logischen Entwurf beseitigt werden, was die Gefahr kritischer Wettläufe eliminiert. Im gezeigten Beispiel enthält die Schaltfunktion einen logischen 1-Hazard, da der Übergang von keinem Primimplikanten überdeckt wird. Fügt man den Minterm disjunktiv zur Schaltfunktion hinzu, so hält das realisierende Und-Gatter das 1-Signal während des Übergangs statisch beim Wert 1. Ein Variablenwettlauf von x2 mit seinem Komplement kann dann in keinem Fall kritisch sein und der Hazard ist dadurch beseitigt.
Funktionshazards mini|575x575px|Und-Gatter und äquivalente funktionshazardfreie Gatteranordnung