Verilog 구문

(2025-04-19)

1. Verilog에서, 구문 이란?Verilog 문장 형태들로 조합/구성되어 만들어지는 요소
     - 이를통해, 하드웨어 동작이나 구조를 정의 또는 표현하게 됨


2. Verilog의 주요 구문 유형모듈 정의 구문  :  설계의 기본 단위모듈을 정의       ☞ Verilog 모듈 참조
     - module ~ endmodule
        . 설계시스템의 입출력, 동작에 대한 기술(description)이,
        . 이러한 모듈 내에 담겨있게됨

  ㅇ 선언 구문  :  다양한 데이터 타입변수들을 선언  
     - wire a; reg b;

  ㅇ 할당 구문  :  네트나 변수에 값을 주는 방법 (우변 값이 변할 때 할당이 일어남)
     - 연속적 할당 : 주로 assign 키워드를 사용하여 수행
     - 절차적 할당 : always, initial 블록 내에서 사용
        . 구분 : 동기적 할당, 비동기적 할당
     - 어떤 계산을 수행하기 보다는 신호들 간의 관계를 정의하는 것
        . 例) E = D C = (A + B) C
           .. wire D; assign D = A || B; assign E = D && C;
           .. 또는, E = (A||B)&&C;

  ㅇ 제어 구문  :  조건문, 반복문논리제어를 위한 구문
     - 조건문  :  조건에 따라 실행  
        . if (조건문), case (다중 조건문)
     - 반복문  :  반복적인 동작을 정의  
        . for (반복문), while (조건에 따른 반복문)

  ㅇ 블록 구문  :  여러 구문을 하나의 묶음으로 구성
     - 블록의 시작과 끝이 중괄호({ })가 아닌 begin과 end 등을 사용하여 구분
        . 순차적(절차적) 블록 : begin ... end
        . 병렬적 블록 : fork ... join

  ㅇ 구조적 구문  :  하드웨어 구성 요소를 연결하는 방식으로 설계 표현
     - assign (논리 값 할당), instance (다른 모듈인스턴스화)

  ㅇ 프로시저 구문  :  하드웨어 동작의 흐름을 절차적으로 기술하는 구문
     - 순차적 구문  :  시간 순서대로 실행되는 구문
        . always (특정 조건에 따라 반복 실행), initial (시뮬레이션 시작 시 한번만 실행)
     - 함수 및 태스크 구문  :  반복되는 동작을 함수나 태스크로 정의
        . function (값을 반환하는 함수), task (값을 반환하지 않는 태스크)

  ㅇ 타이밍 제어 구문  :  특정 시간에 동작을 제어
     - # (지연 시간 지정). @ (특정 이벤트에 대한 대기)

  ㅇ 테스트벤치 구문  :  하드웨어 모듈을 검증하기 위한 시뮬레이션 환경을 제공        


3. 설계 목적에 따른 Verilog 구문의 분류논리 합성 구문 
     - assign 문, always 문, if-else 문 등 논리 합성 지원용 구문시뮬레이션 구문 
     - initial 문, $finish, $fopen 등 시뮬레이션을 위한 테스트 벤치 작성
        . 테스트 벤치 작성, 타이밍 제어(Timing Control), 이벤트디버깅 등

  ㅇ 라이브러리 설계 구문
     - specify, $width, table 등 라이브러리설계 작성 및 셀의 기능,지연,핀 정보 등을 정의


4. 절차적 동작을 기술하는 Verilog 프로시저 구문 (procedural statements)

  ㅇ 하드웨어의 동작(=행동)을 절차적으로 기술하는 구문
     - 이들은 반드시 특정한 프로시저 블록 안에서 만 사용됨

  ㅇ 하드웨어의 동작(시퀀스, 연산, 조건, 반복 등)에 대한 절차적 코드이며, 
     - 다음 4가지 블록 내 포함되어 작성됨

        . initial : 한 번만 실행됨, 시뮬레이션 시작 시 단 한 번 실행
           .. 주로, 시뮬레이션용 초기화, 테스트벤치 작성, 파형 출력 등에 사용
           .. 특징 : 시간 지연 가능, 반환값 없음, 대부분 합성 가능
        . always : 무한 반복적으로 실행, 트리거 조건(@)이 발생할 때마다 실행됨
           .. 주로, 회로 동작 설명 (클럭 기반 등)
           .. 특징 : 시간 지연 가능, 반환값 없음, 항상 합성 가능
        . task : 여러 줄로 구성된 프로시저 함수
	   .. 주로, 절차적 동작 묶음
           .. 특징 : 시간 지연 가능, 반환값 없음, 합성 불가능
        . function : 하나의 값을 반환하는 함수
           .. 주로, 계산용 함수
           .. 특징 : 시간 지연 불가능, 반환값 있음, 항상 합성 가능 (조합논리)

Verilog
1. Verilog   2. Verilog 문법   3. Verilog 모듈   4. Verilog 구문   5. Verilog 타이밍 제어   6. Verilog 화면  
용어해설 종합 (단일 페이지 형태)

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]