Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Verilog

Sémantique de planification Verilog

La conception et le testbench de Verilog ont généralement de nombreuses lignes de code comprenant always ou initial blocs, affectations continues et autres instructions procédurales qui deviennent actives à différents moments au cours d'une simulation.

Chaque changement de valeur d'un signal dans le modèle Verilog est considéré comme un événement de mise à jour . Et des processus tels que always et assign les blocs sensibles à ces événements de mise à jour sont évalués dans un ordre arbitraire et sont appelés un événement d'évaluation . Étant donné que ces événements peuvent se produire à des moments différents, ils sont mieux gérés et assurés de leur bon ordre d'exécution en les planifiant dans des files d'attente d'événements qui sont classés par temps de simulation.

  
  
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

  

File d'attente des événements

Une étape de simulation peut être segmentée en quatre régions différentes. Une file d'attente d'événements active n'est qu'un ensemble de processus qui doivent s'exécuter à l'heure actuelle, ce qui peut entraîner la planification d'un plus grand nombre de processus dans des files d'attente d'événements actives ou autres. Les événements peuvent être ajoutés à n'importe quelle région, mais toujours supprimés de l'actif région.

Lorsque tous les événements de la file d'attente active pour le pas de temps actuel a été exécuté, le simulateur avance le temps au pas de temps suivant et exécute sa file d'attente active.

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

  

La simulation commence à l'heure 0 et la première instruction est programmée pour être exécutée lorsque le temps de simulation atteint 1 unité de temps à laquelle elle affecte x et y à 1. Il s'agit de la file d'attente active pour l'heure actuelle qui est de 1 unité de temps. Le simulateur planifie ensuite la prochaine instruction après 1 unité de temps supplémentaire à laquelle z est affecté de 0.

Qu'est-ce qui rend la simulation non déterministe ?

Il peut y avoir des conditions de concurrence pendant la simulation qui finissent par donner des résultats différents pour la même conception et le même banc d'essai. L'une des raisons du comportement non déterministe est que actif les événements peuvent être supprimés de la file d'attente et traités dans n'importe quel ordre.


Verilog

  1. Tutoriel Verilog
  2. Concaténation Verilog
  3. Affectations Verilog
  4. Verilog bloquant et non bloquant
  5. Fonctions Verilog
  6. Tâche Verilog
  7. Générateur d'horloge Verilog
  8. Fonctions mathématiques Verilog
  9. Format d'heure Verilog