교육/Verilog

Verilog HDL 모델링 방법 개요

semicon_circuitdesigner 2024. 6. 30. 22:33
Verilog HDL 구문의 구성

Verilog HDL 구문의 구성

  • 회로 합성용 구문: 회로 합성 툴에서 게이트 수준 합성을 지원하는 구문
  • 시뮬레이션용 구문: 시뮬레이션을 위한 테스트벤치의 작성에 사용되며, 회로 합성이 지원되지 않는다.
  • 라이브러리 설계용 구문: 회로 합성에 적용되는 셀 라이브러리 설계에 사용되며, 셀의 기능, 지연, 핀 정보 등을 정의하는 데 사용된다.
Verilog HDL 모듈
  • 모듈: Verilog HDL의 기본 단위
  • Verilog HDL의 모듈 구성
    module module_name (port_list);	//머리부
    
    //선언부
    port 선언
    reg 선언
    wire 선언
    parameter 선언
    
    //몸체부
    하위모듈 인스턴스
    게이트 프리미티브
    always 문
    initial 문
    assign 문
    function, task 정의
    function, task 호출
    
    endmodule

    • 머리부
       - 키워드 module로 시작하여 모듈 이름, 포트 목록으로 구성되며 세미콜론(;)으로 끝남
       - 키워드와 동일한 이름은 사용 불가, 가독성을 위해 밑줄이 포함될 수 있다.
       - 모듈의 기능을 함축적으로 나타내는 모듈 이름을 사용하는 것이 좋다.
       - 모듈 이름 다음의 괄호에는 모듈의 입출력 포트가 나열된다.
       - 모듈의 포트 목록은 테스트벤치 모듈에서 생략 가능하다.
    • 선언부
       - 입출력 포트 선언, 자료형 및 parameter 등의 선언이 이루어진다.
    • 몸체부
       - 회로의 기능, 동작, 구조 등을 표현하는 Verilog HDL 구문들을 적절히 사용하여 회로의 기능과 구조를 모델링한다.
       - Verilog HDL의 문장은 기본적으로 병행문이므로 문장의 순서에 무관하게 동일한 결과를 갖는다.
테스트벤치 모듈
  • 테스트벤치(testbench): Verilog HDL로 회로 모델링 완료 후에는 Verilog HDL 소스코드에 대한 시뮬레이션을 통해 회로의 기능과 동작 타이밍을 검증해야 하는데, 이를 위한 Verilog HDL모듈을 테스트벤치라고 한다.
  • 테스트벤치 모듈의 구조는 회로 모델링 모듈과 동일한 구조를 가지며, 머리부의 포트 목록은 생략한다.
  • reg 변수 선언, 시뮬레이션되는 모듈의 인스턴스, 시뮬레이션 입력을 생성하는 initial/always 구문으로 구성된다.
  • 일반적으로 시뮬레이션 입력은 initial 또는 always로 생성되므로 모두 reg 변수로 선언되어야 한다.