Wofür steht Delta in ModelSIM?

Ich habe eine Simulation für eine kombinatorische Logikschaltung mit 8 Eingängen und 4 Ausgängen in MODELSIM durchgeführt. Wenn ich die simulierte Wellenform ansehe, sieht alles gut aus, aber wenn ich das Ergebnis in eine Listendatei exportiere, gibt es einige Zwischenwerte in Bezug auf Deltas in einem Zeitfenster wie diesem:

t(ns) delta               output input
    460  +1                   4'h1 8'h2E 
    460  +4                   4'h0 8'h2E 
    460  +5                   4'h2 8'h2E 
    470  +1                   4'h2 8'h2F 
    470  +4                   4'h3 8'h2F 
    480  +1                   4'h3 8'h30 
    480  +4                   4'h2 8'h30 
    480  +5                   4'h4 8'h30 
    480  +6                   4'h6 8'h30 
    490  +1                   4'h6 8'h31 
    500  +1                   4'h6 8'h32 
    500  +4                   4'h7 8'h32 
    500  +5                   4'h5 8'h32 
    510  +1                   4'h5 8'h33 
    510  +6                   4'h7 8'h33 
    510  +9                   4'h5 8'h33 

Ich möchte wissen, was diese Zwischenwerte sind und ob sie Probleme für meine Schaltung verursachen oder nicht?
zB gibt es 3 Werte für t=460ns

Könnte es sein, dass die ersten drei Werte bei 461ns, 464ns und 465ns lagen?

Antworten (2)

Simulationszyklen sind dadurch gekennzeichnet, dass sie zu einer Erhöhung der Simulationszeit führen und solche, die dies nicht tun. Diejenigen, die dies nicht tun, werden als Delta-Zyklen bezeichnet.

Aus einem Simulationszyklus, der sich aus der Weiterschaltung der Simulationszeit ergibt, wird ein Signal ohne Verzögerung (z. B. after, wait for) als nächster Simulationszyklus einen Deltazyklus bewirken, ohne die aktuelle Simulationszeit zu ändern. Delta-Zyklen finden solange statt, bis keine Signalzuordnungen mehr zur aktuellen Simulationszeit vorhanden sind.

So emuliert der Simulator Parallelität. Die Simulation besteht aus der Ausführung von Prozessen als Reaktion auf Ereignisse auf Signalen, die bewirken, dass Prozesse aus dem Schlaf erwachen. Und jede gleichzeitige Anweisung wird in äquivalente Prozesse und/oder Blockanweisungen zerlegt, die eine Hierarchie darstellen, Funktionsaufrufe sind Ausdrücke.

Wenn zur aktuellen Simulationszeit keine Ereignisse geplant sind, wird die Simulationszeit auf das früheste Ereignis vorgezogen, das in einer projizierten Ausgangswellenform für einen beliebigen Fahrer geplant ist (es gibt eine Warteschlange).

Wenn es zu einer zukünftigen Simulationszeit keine geplanten Ereignisse gibt, wird die Simulationszeit auf die maximale Simulationszeit vorgerückt und die Simulation abgeschlossen.

Dies ist nicht spezifisch für Modelsim, der Simulationszyklus ist im VHDL LRM definiert und wird zum Simulieren der meisten HDLs verwendet. Es wurde ursprünglich in CONLAN, einem HDL-Projekt, definiert, das von 1971 bis 1983 lief.

Die Anzahl der ausgeführten Delta-Zyklen kann als Feedback zur Effizienz eines Designmodells verwendet werden, Sie können die maximal zulässige Anzahl in einer Simulation festlegen.

Die Informationen können auch verwendet werden, um ein Diagramm oder eine Wellenform zu konstruieren, die die Abfolge der Modellausführung über alle Simulationszyklen hinweg zeigt.

Die Informationen sind nicht von besonderem Interesse, es sei denn, Sie möchten die Reihenfolge der Aufgaben bei der Modellausführung verstehen oder die Modellleistung verbessern.

Wenn Sie zurückverfolgen, wie die Werte für diese +4-, +5- und +9-Delta-Zyklus-Vorkommen generiert werden, würden Sie erfahren, warum es so viele gibt.

Ein Delta ist ein kleines (unendlich kleines) Zeitinkrement, das während der Simulation verwendet wird. Die aufgeführte Zahl ist die Anzahl dieser Zeitschritte, die unternommen wurden, um das Signaltiming aufzulösen. Diese können Sie mit dem Schalter -NODELTA auf der Kommandozeile unterdrücken.

Dies sagt Ihnen, dass sich das Signal nach dem Hauptzeit-Tick-Ereignis ändert . Um zu wissen, welcher Wert beim nächsten Zeit-Tick präsentiert wird, nehmen Sie den letzten Delta-Wert. Für den 460-ns-Wert nehmen Sie also die 460 +5 als den Wert kurz vor dem 470-ns-Zeit-Tick.

Wenn Sie wissen möchten, welche Aktivität kurz nach 460 ns stattfand, schauen Sie sich die Deltas an.