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 타이밍 제어  

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]        편집·운영 (차재복)          편집 이력          편집 격려 (소액 후원)
[Verilog]1. Verilog   2. Verilog 문법   3. Verilog 모듈   4. Verilog 구문   5. Verilog 타이밍 제어  

  1. Top (분류 펼침)      :     1,607개 분류    6,634건 해설