산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
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

  

이벤트 대기열

시뮬레이션 단계는 4개의 다른 영역으로 나눌 수 있습니다. 활성 이벤트 대기열은 현재 시간에 실행해야 하는 프로세스 집합일 뿐이므로 활성 또는 다른 이벤트 대기열에 더 많은 프로세스가 예약될 수 있습니다. 이벤트는 모든 지역에 추가할 수 있지만 항상 활성 지역.

현재 시간 단계에 대한 활성 대기열의 모든 이벤트가 실행이 완료되면 시뮬레이터는 시간을 다음 단계로 진행하고 활성 대기열을 실행합니다.

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

  

시뮬레이션은 시간 0에서 시작하고 시뮬레이션 시간이 1시간 단위에 도달하면 첫 번째 문장이 실행되도록 스케줄링되어 x와 y를 1로 할당합니다. 이것은 1시간 단위인 현재 시간에 대한 활성 큐입니다. 그런 다음 시뮬레이터는 z에 0이 할당된 1시간 단위 후에 다음 명령문을 예약합니다.

시뮬레이션이 결정적이지 않은 이유는 무엇입니까?

시뮬레이션 중에 동일한 설계 및 테스트벤치에 대해 서로 다른 출력을 제공하는 경쟁 조건이 있을 수 있습니다. 비결정적 행동의 이유 중 하나는 활동적 이벤트를 대기열에서 제거하고 임의의 순서로 처리할 수 있습니다.


verilog

  1. Verilog 튜토리얼
  2. Verilog 연결
  3. Verilog 할당
  4. Verilog 차단 및 비 차단
  5. Verilog 기능
  6. Verilog 작업
  7. Verilog 클록 생성기
  8. Verilog 수학 함수
  9. Verilog 시간 형식
  10. Verilog 타임스케일 범위