산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 타임스케일 범위

기본 타임스케일

Verilog 모듈에는 모듈 이전에 정의된 시간 척도가 있어야 하지만 시뮬레이터는 기본 시간 척도를 삽입할 수 있습니다. Verilog의 정교한 계층 구조의 모든 범위에 적용되는 실제 시간 척도는 시스템 작업 $printtimescale을 사용하여 인쇄할 수 있습니다. 범위를 인수로 허용합니다.

  
  
module tb;
	initial begin
		// Print timescale of this module
		$printtimescale(tb);
		// $printtimescale($root);
	end
endmodule

  

이 모듈 이전에 timescale 지시문이 배치되지 않았음에도 시뮬레이터는 1ns/1ns timescale 값을 적용했습니다.

시뮬레이션 로그
xcelium> run
Time scale of (tb) is  1ns /  1ns
xmsim: *W,RNQUIE: Simulation is complete.

표준 기간 범위

기본적으로 파일에 배치된 타임스케일 지시어는 다른 타임스케일 지시어가 정의될 ​​때까지 지시어를 따르는 모든 모듈에 적용됩니다.

  
  
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

module alu;
  
endmodule

`timescale 1ns/10ps

module des;
  
endmodule

  

위의 예에서 tb와 alu는 1ns/1ns의 시간 척도로 끝나고 des는 des

의 모듈 정의 앞에 지시문을 배치하기 때문에 1ns/10ps의 시간 척도를 얻습니다. 시뮬레이션 로그
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Verilog 파일 간의 범위

`include를 사용하여 다른 파일을 현재 파일에 포함할 수 있습니다. 전처리기 지시문이며 컴파일러가 컴파일 전에 포함된 파일의 내용을 배치하도록 합니다. 따라서 이는 다른 파일의 전체 내용을 이 기본 파일에 단순히 붙여넣는 것과 같습니다.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

`include "file_alu.v"
`include "file_des.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

결과가 이전 예와 정확히 동일한지 확인하십시오. alu는 1ns/1ps의 시간 척도를 얻습니다. 컴파일러가 다른 파일에 배치하더라도 alu 정의를 찾을 때까지 유효한 마지막 지시문이기 때문입니다. des는 정의 전에 지시문이 교체되었기 때문에 1ns/10ps의 타임스케일을 얻습니다.

시뮬레이션 로그
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

파일을 교체하면 기간이 변경될 수 있습니다.

파일을 포함하는 순서는 시간 척도 지시어를 재정의하는 데 중요한 역할을 하며, 이는 아래 예에서 분명합니다.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

// NOTE! Swapped order of inclusion
`include "file_des.v"
`include "file_alu.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

모듈 alu가 이제 1ns/10ps의 시간 척도를 갖는 것을 확인하십시오.

시뮬레이션 로그
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  10ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

이것이 파일의 맨 위에 timescale 지시어를 두어 해당 파일의 모든 모듈이 파일 포함에 관계없이 올바른 시간 단위를 가정하도록 하는 이유 중 하나입니다.

그러나 이 접근 방식을 사용하면 각 파일을 변경하지 않고 다른 시간 척도 정밀도(사선 다음 값)로 컴파일하기 어려울 수 있습니다. 많은 컴파일러와 시뮬레이터는 모든 모듈에 적용될 기본 타임스케일 값을 재정의하는 옵션도 제공합니다.


verilog

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