Was ist der Unterschied zwischen Verilog-Race-Condition, X-Fortpflanzung und Metastabilität?

Ich versuche zu verstehen Verilog Race Condition X's propagationund Metastabilitymit http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf Dokument.

Weil dieses Konzept sehr verwirrt ist, um es klar zu verstehen. Also versuche ich jetzt, einen einfachen Beispiel-Verilog-Code zu erstellen, um ihr Konzept zu verstehen. Aber es ist ziemlich schwierig.

Was ist der Unterschied zwischen Verilog-Race-Condition, X-Fortpflanzung und Metastabilität?

Bisher meines Verständnisses

Eine Verilog-Rennbedingung ist, wenn wir Blockierungszuweisungen in sequentiellen Blöcken verwenden und die Blockierungszuweisung gleichzeitig ausgeführt wird. Dies ist eine Race-Bedingung. Um dieses Problem zu vermeiden, verwenden wir eine nicht blockierende Zuweisung im sequentiellen Block.

always@(posedge clk)
a=b;
always@(posedge clk)
b=a;

Besonders verstehe ich nicht über X propagation conceptundMetastability concept

Nach meinem Verständnis muss X vom Simulator genau gehandhabt werden. X muss statt 0 oder 1 genau nach out propagiert werden. Aber so viele Artikel werden von Optimisten, Pessimisten gehandhabt. Ich bin also verwirrt von diesem Konzept. Was genau muss ich wissen, um dieses X-Fortpflanzungsthema zu kennen?

Ich möchte also wissen, wie man die x-Ausbreitung in realen Feldern testet?

Geben Sie hier die Bildbeschreibung ein

Zum Verständnis der X-Propagation hinzufügen

Antworten (1)

Um Ihre Frage zu beantworten, müssen Sie den Unterschied zwischen der Funktionsweise digitaler Schaltungen und der Funktionsweise einer digitalen Modellierungssprache wie Verilog, VHDL oder SystemVerilog (HDL) verstehen. Wir nennen es digitale Schaltungen , aber eigentlich legen wir analoge Spannungen/Ströme an die Eingänge analoger Geräte an, die wiederum die Spannungen/Ströme ihrer Ausgänge steuern. Signale gehen nicht augenblicklich von 0 auf 1, sondern ändern sich über eine endliche Zeit von einer Spannung zur anderen. HDLs abstrahieren all dieses analoge Verhalten in diskrete Ereignisse und ändern Signale sofort von 0 auf 1 oder 1 auf 0.

Eine Wettlaufbedingung bezieht sich auf eine unbestimmte Reihenfolge zwischen dem Wechsel von zwei oder mehr Signalen. Normalerweise ist eines der Signale ein Takt und die anderen sind Dateneingänge für ein Flop. Wenn sich die Daten vor dem Takt ändern, gibt ein Flip-Flip die aktualisierten Daten aus. Wenn sich die Uhr vor den Daten ändert, gibt das Flip-Flop die alten Daten aus. In einer analogen Welt ist Veränderung jedoch nie augenblicklich. Der Gerätehersteller gibt Ihnen ein Zeitfenster, um die Ausgabe zu garantieren. Dies wird als Setup/Hold -Zeit bezeichnet. Wenn Sie diesen Bereich verletzen, kann die Ausgabe metastabil sein, was bedeutet, dass sie die Ausgabe nicht vorhersagen können und sogar oszillieren können. Temperatur- und Spannungsschwankungen innerhalb des Systems können die Reihenfolge der Signaländerungen beeinflussen.

In einer diskreten Ereignissimulation gibt es immer eine Reihenfolge von Signaländerungen, aber die Sprache kann die Reihenfolge nur so weit garantieren, je nachdem, wie Sie sie modellieren. Es ist möglich, in Ihrem Modell eine Rennbedingung zu haben, aber nicht im echten Design. Es ist auch umgekehrt möglich, dass Ihr Modell eine vorhersehbare Reihenfolge hat, das tatsächliche Design jedoch eine Rennbedingung hat. Dies liegt daran, dass Ihr HDL-Modell kein genaues Modell der physischen Geräteverzögerungen hat.

X-Fortpflanzung ist fast ein ganz anderes Thema. X ist ein HDL-Modellierungskonstrukt – es ist ein Zustand, der nur als Abstraktion existiert. Ein reales Gerät hat immer einen tatsächlichen Ausgangszustand, auch wenn die Metastabilität ihn nicht vorhersagen kann. Die einzige Relevanz besteht darin, dass einige Modelle einen X-Zustand ausgeben können, wenn eine Setup/Hold-Timing-Verletzung auftritt.

HDLs haben bei der Definition, wie X-Zustände in der Simulation weitergegeben werden, schlechte Arbeit geleistet, indem sie X oft in einen 0- oder falschen Zustand konvertiert haben. Formale Instrumente beginnen, dieses Problem genauer anzugehen. Aber das ist ein zu großes Thema, um es hier zu beantworten.

In Bezug auf die X-Propagation kann ich, wie ich aus Ihrer Antwort verstehe, schließen, dass die X-Simulation von HDL und realer Hardware anders wäre. Die gebräuchlichste Methode, um den Unterschied zwischen ihren Ergebnissen zu überprüfen, vergleichen wir zwischen HDL- und Gate-Level-Simulation. Habe ich das richtig verstanden?
Es gibt keinen XZustand in der Hardware. Es gibt Unterschiede in den Modellierungsstilen, wie sich Xs ausbreiten. Es ist nicht auf RTL vs. Gate-Ebene beschränkt. Aber das größere Problem für die Simulation ist, dass nur Xder Zustand definiert ist. Beispielsweise können Sie X nicht von sich selbst subtrahieren, um 0 zu erhalten. Nur ein formales Tool könnte damit umgehen.