Menu
Coddy logo textTech

Timescale 지시어

Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 70번째.

timescale 지시어(directive)는 시뮬레이션을 위한 시간 단위(time_unit)시간 정밀도(time_precision)를 설정합니다. 시뮬레이터에 #10과 같은 지연 값을 해석하는 방법을 알려줍니다.

이전 레슨에서는 #10과 같은 딜레이를 사용할 때 "10"이 무엇을 의미하는지 지정하지 않고 사용했습니다. 10나노초일까요? 10피코초일까요? timescale 지시어가 이 질문에 대한 답을 제공합니다.

구문:

`timescale time_unit / time_precision
항목의미예시
time_unit지연 시간을 위한 기본 단위1ns
time_precision시뮬레이션의 정밀도 수준1ps

timescale 앞의 백틱 `은 이것이 컴파일러 디렉티브(compiler directive)임을 의미합니다.

예시

`timescale 1ns / 1ps
  • time_unit = 1ns#10은 10 nanoseconds를 의미합니다.
  • time_precision = 1ps → 시뮬레이션이 가장 가까운 피코초 단위로 반올림됩니다.

Common Timescale Values

Time UnitPrecisionUse Case
1ns / 1ns나노초Simple simulations
1ns / 1ps피코초More precise
1ps / 1ps피코초High-speed designs
1us / 1ns마이크로초Slow simulations

지연 시간에 미치는 영향

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // 10 나노초를 기다립니다
end

timescale이 없으면 일부 시뮬레이터는 기본값(보통 1ns)을 가정합니다. 항상 지정해 두는 것이 좋습니다.

중요한 규칙

규칙설명
모듈 외부에 위치해야 함모든 module 정의보다 앞에 배치됨
백틱 기호 사용'timescale이 아닌 `timescale 
Time unit ≥ time precision1ns / 1ps는 가능하지만, 1ps / 1ns는 불가능함
파일 내의 모든 지연 시간에 영향을 줌일반 지연 시간, 게이트 지연 시간, 할당 지연 시간
challenge icon

챌린지

수행할 작업:

지연 시간이 10ns, 20ns, 30ns를 나타내도록 누락된 timescale 지시어(directive)를 추가하세요.

직접 해보기

// TODO: timescale 지시어 추가 (1ns / 1ps)

module timescale_challenge;
  
  initial begin
    $display("Time %0t", $time);
    #10 $display("Time %0t (10ns = 10000ps)", $time);
    #10 $display("Time %0t (20ns = 20000ps)", $time);
    #10 $display("Time %0t (30ns = 30000ps)", $time);
    $finish;
  end
endmodule
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨