본문 바로가기
verilog/이론

[verilog] Verilog HDL과 설계

by 씐 2023. 9. 27.
728x90

Verilog HDL이란?

 

Verilog HDL

  • verilog HDL에서 HDL은 Hardware Description Language의 약자로서 하드웨어를 설계하기 위한 언어.
  • 하드웨어 설계, 즉 디지털 시스템을 설계하는 것은 0(LOW)과 1(HIGH)이라는 2가지 논리 상태에 대한 디지털 논리 게이트들(AND, OR, NOT 등)의 조합을 통해 목표로 하는 회로의 기능을 표현하는 것
  • 가장 좋은 HDL 코딩 방법은 가능한 명확하고 간결하게 코드를 작성하여 논리 합성기(Logic Synthesizer)의 합성 부담을 줄여주는 것이다.
  • HDL의 종류로 VHDL과 Verilog HDL이 있는데 VHDL은 복잡한 문법을 가지고 있어 verilog HDL을 많이 사용하는 편이다.

Verilog HDL 설계 개념

 

구조적 모델링(계층 설계)

  • 구조적 모델링 방법에는 top-down 설계 방법과 bottom-up 설계 방법이 있다.
  • top-down : 최상위 블록을 정의하고 최상위 블록을 만드는데 필요한 하위 서브 블록을 구성, 하위 서브 블록은 더 이상 나누어지지 않는 리프 셀(leaf cell : sram, flip-flop 등등...)까지 나눌 수 있다.
  • bottom-up : 먼저 필요한 블록들을 만들고 그들을 이용해 상위 서브 블록들을 만들고, 최상위 블록까지 만드는 것

 

 

설계자별 하는 일

  • 시스템 설계자 : 최상위 블록 정의
  • 논리 설계자 : 필요한 기능들을 하위블록으로 나눔으로써 설계를 어떻게 구성할 것인지 결정
  • 회로 설계자 : 각 리프셀에 대한 최적화 회로를 설계하고 이 리프셀을 가지고 상위 레벨 셀들을 만듦.

 

 

4가지 추상화 수준의 모델링 방법

  • 스위치 수준(switch level) : 스위치를 이용하여 리프 셀의 라이브러리 구성 후 top-down 방법으로 기능 표현
  • 게이트 수준(gate level) : 컴포넌트의 연결을 이용하여 기능 표현
  • 데이터 플로우 수준(data flow level) : 부울대수를 사용하여 기능 표현, RTL(Register-Transfer-Language) 또는 연산자를 사용하여 입력으로부터 출력까지의 경로 표현을 위주로 한다. 
  • 행위 수준(behavioral level) : 진리표에 의한 기능 표현, 4가지 추상화 수준 모델링 중에서 가장 높은 수준의 추상적인 표현
  • cf) RTL은 low level이라 요즘에는 RTL로 잘 안하고 요즘은 synthesizer가 잘 나와서 주로 behavior로 설계한다. 하지만 일반적으로는 RTL 설계라고 부르고 있다.

Verilog HDL 설계 과정

 

Verilog HDL 설계 과정

  • VLSI(초대규모 집적회로), ULSI(초고 집적회로) 기술의 등장으로 단일 칩 위에 수백만에서 수천만 개 이상의 트랜지스터가 들어가도록 설계할 수 있다.
  • 이러한 대규모의 회로를 효율적으로 설계하기 위해서는 HDL 기반의 설계, 검증, 합성을 지원하는 고성능 EDA 툴 사용이 필수적이다.(보통 시높시스(synopsys)의 vcs, verdi, Design Complier 등을 사용한다. 케이던스(cadence) 사의 EDA를 사용하는 회사도 있다.)

 

 

HDL 기반 디지털 회로 설계 과정

  • System Anlaysis & Partitioning
    • 시스템 수준 검증을 위한 첫 번째 단계로서 하나 이상의 장치가 포함된 전체 시스템 측면에서 모델링을 하는 것
    • 상세한 설계를 시작하기 전 FPGA/ASIC 사양을 검증할 수 있는 시스템의 전체적인 기능 목록을 작성하고 설명하는 기술(desciption) 단계

 

  • Write HDL code and Testbench
    • 논리회로의 동작과 디바이스(서브 블록, 리프 셀 등)간 연결(Integration), 시뮬레이션 수행 등을 상세히 표현하는 실질적인 설계 단계로 RTL 설계와 테스트 벤치(설계 결과를 검증하기 위해 사용되는 가상의 테스트 환경, 요즘은 UVM을 이용한다.)를 생성
    • 최종 FPGA / ASIC의 품질은 이 테스트의 적용 범위에 따라 달라질 수 있다.

 

  • Simulate the HDL code
    • RTL 수준에서 설계된 내용이 설계 사양을 만족하는지 기능 검증을 위한 시뮬레이션 단계
    • RTL 수준 시뮬레이션은 회로 내부의 delay를 고려하지 않고 기능 수준에서 이루어진다. (functional verification)
    • 이때 회로의 기능을 정확하게 검증할 수 있는 시뮬레이션 환경(입력 벡터 등)을 생성하는 것이 매우 중요한다.
    • RTL 시뮬레이션은 일반적으로 게이트 레벨 시뮬레이션보다 빠르다. (회로 크기에 따라서 실제로 몇시간에서 며칠 넘게 차이 나는 경우도 있다.)

 

  • Synrhesize to Gates
    • EDA의 합성 툴을 사용하여 RTL 수준에서 모델링된 HDL 소스코드를 게이트 수준의 논리회로로 변환하는 합성 단계
    • 합성에서는 합성조건(동작 주파수, 면적, 클록 신호 및 입출력 신호의 사양, 환경변수, 설계 규칙 등)을 제시하고 특정 제조사의 FPGA 디바이스 또는 셀 라이브러리가 사용된다.
      • 필자의 회사에서는 synopsys를 사용했었는데, sysnopsys에서 합성 조건을 기술하는 것을 SDC(Synopsys Design Constraints)라고 한다. 그리고 삼성 파운드리의 셀 라이브러리를 사용하였다.
    • 합성이 완료되면 netlist를 얻을 수 있게 된다.
    • 합성 단계를 설계 사양을 만족하도록 정확한 의사 결정 및 구조(architecture) 결정에 도움이 되는 정확한 속도 및 면적 데이터 제공과 HDL 소스코드의 합성 방법을 설계자가 확인할 수 있도록한다.
    • 기능적으로 올바른 HDL 소스코드일 지라도 합성 툴에 따라 결과가 달라질 수 있으므로 설계자는 합성을 통해 최적의 하드웨어를 생성할 수 있다.

 

  • Simulate at Gate Level(GLS)
    • 합성이 완료되면 게이트 수준의 netlist(넷리스트)를 얻을 수 있으며 합성에 사용된 합성조건이 설계된 회로에 반영된다.
    • 이로 인해 합성 이전의 RTL 수준에서 고려하지 못했던 타이밍 분석을 통해 회로의 기능적 동작과 타이밍을 보다 자세히 검증한다.

 

  • Program or Make Device
    • GLS 완료 후 EDA 툴을 통해 레이아웃(layout) 도면 변환 및 검증이 완료되며, 합성 결과를 FPGA 내에 프로그래밍하거나 ASIC으로 제조하게 된다.

이 글은 "따라하면서 배우는 디지털 시스템 설계 및 응용 with Verilog HDL"을 기반으로 작성했음을 알립니다.