Menu
Coddy logo textTech

비활성화 문

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

disable 문은 이름이 지정된 블록(forever 루프, begin-end 블록 또는 태스크와 같은)의 실행을 중지합니다. 이는 그렇지 않으면 영원히 실행될 루프를 빠져나오는 데 유용합니다.

구문:

disable block_name;

블록은 이름으로 레이블이 지정되어야 합니다.

Forever 루프로 비활성화하기

begin : counter // counter는 블록에 counter라는 이름을 부여합니다.
  forever begin
    #10 count = count + 1;
    if (count == 5) begin
      disable counter;   // disable counter는 해당 이름의 블록 전체를 중지시킵니다.
    end
  end
end

forever 루프는 counter라는 이름의 블록 안에 들어 있습니다. disable counter 문은 루프 내부에 위치합니다. count가 5에 도달하면, disable counter가 실행되어 counter 블록 전체를 중지시키며, 이는 forever 루프 또한 즉시 중단시킵니다.

별도의 블록에서 비활성화하기

begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter;   // 외부에서 counter 블록을 중지합니다
end

여기서 forever 루프는 counter라는 이름의 블록 내부에서 계속해서 실행됩니다. disable counter 문은 별도의 initial 블록에 배치됩니다. 50 시간 단위 후에 disable counter가 실행되어 counter 블록을 중지시키며, 이는 외부에서 forever 루프를 종료하게 됩니다.

중요 규칙

규칙설명
블록의 이름을 지정해야 함begin : block_name
Disable은 즉시 실행을 중단함그 시점에 코드가 중단됨
어디서나 사용 가능모듈 내의 모든 블록에서
forever 루프를 중단하는 데 유용함그렇지 않으면 루프가 절대 멈추지 않음
challenge icon

챌린지

영원히 실행되는 카운터가 포함된 모듈이 제공됩니다. 

수행할 작업:

각 주석을 올바른 코드로 교체하여 빈 블록을 완성하세요:

  1. 50 시간 단위 동안 대기하도록 #50;를 추가합니다.
  2. 카운터 블록을 중지하도록 disable counter;를 추가합니다.
  3. 메시지를 출력하도록 $display("Counter stopped");를 추가합니다.
  4. 시뮬레이션을 종료하도록 $finish;를 추가합니다.

치트 시트

disable 문은 이름이 지정된 블록(예: forever 루프)의 실행을 중지합니다. 블록은 begin : block_name을 사용하여 레이블을 지정해야 합니다.

블록 내부에서 비활성화(Disable):

begin : counter
  forever begin
    #10 count = count + 1;
    if (count == 5) disable counter;
  end
end

별도의 블록에서 비활성화(Disable):

begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter; // 외부에서 이름이 지정된 블록을 중지함
end

직접 해보기

module disable_challenge;
  integer count;
  
  initial begin
    count = 0;
    fork
      begin : counter
        forever begin
          #10 count = count + 1;
          $display("count = %d", count);
        end
      end
      
      begin
        // 1단계: 50 시간 단위 동안 대기
        
        // 2단계: counter 블록 비활성화
        
        // 3단계: "Counter stopped" 출력
        
        // 4단계: 시뮬레이션 종료
        
      end
    join
  end
endmodule
quiz icon실력 점검

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

기초의 모든 레슨