Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog Scheduling Semantik

Das Design und die Testbench von Verilog haben normalerweise viele Codezeilen, die aus always bestehen oder initial Blöcke, fortlaufende Zuweisungen und andere prozedurale Anweisungen, die zu unterschiedlichen Zeitpunkten im Verlauf einer Simulation aktiv werden.

Jede Wertänderung eines Signals im Verilog-Modell wird als Aktualisierungsereignis betrachtet . Und Prozesse wie always und assign Blöcke, die für diese Aktualisierungsereignisse empfindlich sind, werden in einer willkürlichen Reihenfolge ausgewertet und als Evaluierungsereignis bezeichnet . Da diese Ereignisse zu unterschiedlichen Zeiten stattfinden können, werden sie besser verwaltet und ihre korrekte Ausführungsreihenfolge sichergestellt, indem sie in Ereigniswarteschlangen eingeplant werden die nach Simulationszeit geordnet sind.

  
  
module tb;
	reg a, b, c;
	wire d;
	
	// 'always' is a process that gets evaluated when either 'a' or 'b' is updated. 
	// When 'a' or 'b' changes in value it is called an 'update event'. When 'always'
	// block is triggered because of a change in 'a' or 'b' it is called an evaluation
	// event
	always @ (a or b) begin
		c = a & b;
	end
	
	// Here 'assign' is a process which is evaluated when either 'a' or 'b' or 'c'
	// gets updated
	assign d = a | b ^ c;
endmodule

  

Ereigniswarteschlange

Ein Simulationsschritt kann in vier verschiedene Bereiche segmentiert werden. Eine aktive Ereigniswarteschlange ist nur eine Reihe von Prozessen, die zur aktuellen Zeit ausgeführt werden müssen, was dazu führen kann, dass mehr Prozesse in aktive oder andere Ereigniswarteschlangen eingeplant werden. Ereignisse können zu jeder Region hinzugefügt, aber immer aus der aktiven entfernt werden Region.

Wenn alle Ereignisse in der aktiven Warteschlange für den aktuellen Zeitschritt ausgeführt wurde, rückt der Simulator die Zeit zum nächsten Zeitschritt vor und führt seine aktive Warteschlange aus.

  
  
module tb;
	reg x, y, z
	
	initial begin
		#1 	x = 1;
			y = 1;
		#1 	z = 0;
	end
endmodule

  

Die Simulation beginnt zum Zeitpunkt 0, und die erste Anweisung soll ausgeführt werden, wenn die Simulationszeit 1 Zeiteinheit erreicht, bei der sie x und y 1 zuweist. Dies ist die aktive Warteschlange für die aktuelle Zeit, die 1 Zeiteinheit ist. Simulator plant dann die nächste Anweisung nach einer weiteren Zeiteinheit, bei der z 0 zugewiesen wird.

Was macht die Simulation nicht deterministisch?

Während der Simulation können Rennbedingungen auftreten, die am Ende zu unterschiedlichen Ergebnissen für dasselbe Design und denselben Prüfstand führen. Einer der Gründe für nichtdeterministisches Verhalten ist aktiv Ereignisse können aus der Warteschlange entfernt und in beliebiger Reihenfolge verarbeitet werden.


Verilog

  1. Verilog-Tutorial
  2. Verilog-Verkettung
  3. Verilog-Aufgaben
  4. Verilog-Blockierung und Nicht-Blockierung
  5. Verilog-Funktionen
  6. Verilog-Aufgabe
  7. Verilog-Taktgenerator
  8. Verilog Math-Funktionen
  9. Verilog-Zeitformat
  10. Verilog-Zeitskalenumfang