Menu
Coddy logo textTech

게이트 지연

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

이전 레슨에서 우리는 #10 a = b;와 같이 사용되는 일반 지연(general delays)에 대해 다루었습니다. 이는 문장을 실행하기 전에 대기합니다.

이 레슨에서는 and, or, not과 같은 내장 게이트 프리미티브에 특화된 게이트 지연(gate delays)에 대해 다룹니다. 게이트 지연은 입력이 변경된 후 하드웨어 게이트가 출력을 생성하는 데 걸리는 시간을 모델링합니다.

실제 하드웨어에서 게이트는 즉각적으로 반응하지 않으며, 약간의 지연이 발생합니다. 내장된 게이트 프리미티브(gate primitives)를 사용할 때, 게이트의 전파 지연 시간(propagation time)을 시뮬레이션하기 위해 지연을 추가할 수 있습니다. 출력은 지정된 지연 시간이 지난 후에만 변경됩니다.

General Delay와 Gate Delay의 차이점

 일반 지연 (General Delay)게이트 지연 (Gate Delay)
구문#10 a = b;and #5 (out, a, b);
위치구문 앞의 #게이트 프리미티브 내부의 #
목적실행 전 대기게이트 전파 시간 모델링

구문:

gate_type #(delay) (output, input1, input2, ...);

#(delay)는 게이트가 응답하는 데 걸리는 시간 단위 수를 지정합니다.

간단한 예제

and #5 (out, a, b);

이 AND 게이트는 a 또는 b가 변경된 후 출력을 변경하는 데 5 시간 단위가 걸립니다.

여러 개의 입력을 가진 게이트 지연

nand #8 (out, a, b, c, d);   // 8 시간 단위 지연을 가진 4-입력 NAND

중요 규칙

규칙설명
지연 시간은 게이트 이름 뒤에 옵니다and #5 (out, a, b)
시간 단위의 지연 값timescale 지시어를 기반으로 함
모든 입력이 출력에 영향을 미침어떤 입력 변화라도 지연을 트리거함
합성 가능하지 않음게이트 지연은 시뮬레이션 전용입니다
challenge icon

챌린지

이 모듈에 누락된 게이트 지연(gate delay)을 추가하세요. 각 게이트마다 서로 다른 지연 시간을 사용하세요.

수행할 작업:

  1. AND 게이트: 5 시간 단위 지연
  2. OR 게이트: 3 시간 단위 지연
  3. NOT 게이트: 2 시간 단위 지연

치트 시트

게이트 지연은 내장 게이트 프리미티브에서의 전파 시간을 모델링합니다.

구문:

gate_type #(delay) (output, input1, input2, ...);

예제:

and  #5 (out, a, b);         // AND 게이트, 5 시간 단위 지연
or   #3 (out, a, b);         // OR 게이트, 3 시간 단위 지연
not  #2 (out, a);            // NOT 게이트, 2 시간 단위 지연
nand #8 (out, a, b, c, d);   // 4-입력 NAND, 8 시간 단위 지연

주요 특징:

  • #은 게이트 이름 뒤, 포트 목록 앞에 위치합니다
  • 입력 변화가 발생하면 출력이 업데이트되기 전에 지연 시간이 적용됩니다
  • 게이트 지연은 시뮬레이션 전용이며 합성(synthesis)이 불가능합니다

직접 해보기

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: 5 시간 단위 지연이 있는 AND 게이트 추가 (입력 a, b)
  
  // TODO: 3 시간 단위 지연이 있는 OR 게이트 추가 (입력 a, b)
  
  // TODO: 2 시간 단위 지연이 있는 NOT 게이트 추가 (입력 a)
  

  initial begin
    $monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b", 
              $time, a, b, and_out, or_out, not_out);
    
    a = 1; b = 1;
    #10 $finish;
  end
endmodule
quiz icon실력 점검

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

기초의 모든 레슨