Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

Семантика планирования Verilog

Дизайн и тестовый стенд Verilog обычно содержат много строк кода, состоящих из always. или initial блоки, непрерывные присваивания и другие процедурные операторы, которые становятся активными в разное время в ходе моделирования.

Каждое изменение значения сигнала в модели Verilog считается событием обновления. . И такие процессы, как always и assign блоки, чувствительные к этим событиям обновления, оцениваются в произвольном порядке и называются событием оценки. . Поскольку эти события могут происходить в разное время, ими лучше управлять и обеспечивать правильный порядок их выполнения, планируя их в очереди событий. которые упорядочены по времени моделирования.

  
  
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

  

Очередь событий

Шаг моделирования можно разделить на четыре различных области. Активная очередь событий — это просто набор процессов, которые необходимо выполнить в текущий момент времени, что может привести к тому, что больше процессов будет запланировано в активных или других очередях событий. События можно добавлять в любой из регионов, но всегда удалять из активных регион.

Когда все события в активной очереди для текущего временного шага была выполнена, симулятор переводит время на следующий временной шаг и выполняет свою активную очередь.

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

  

Моделирование начинается в момент времени 0, и выполнение первого оператора запланировано, когда время моделирования достигает 1 единицы времени, при которой оно присваивает x и y значение 1. Это активная очередь для текущего времени, которая составляет 1 единицу времени. Затем симулятор планирует следующий оператор еще через 1 единицу времени, в которой z присваивается 0.

Что делает моделирование недетерминированным?

Во время моделирования могут возникать условия гонки, которые в конечном итоге дают разные результаты для одной и той же конструкции и тестового стенда. Одна из причин недетерминированного поведения заключается в том, что активен события можно удалять из очереди и обрабатывать в любом порядке.


Verilog

  1. Учебник Verilog
  2. Конкатенация Verilog
  3. Верилог Задания
  4. Блокировка и неблокировка Verilog
  5. Верилог-функции
  6. Верилог Задача
  7. Генератор часов Verilog
  8. Математические функции Verilog
  9. Формат времени Verilog
  10. Охват шкалы времени Verilog