.../비메모리반도체

Verilog HDL을 사용한 디지털 로직 설계

JAEHYEOKHO 2024. 8. 22. 13:14

디지털 블록 설계 과정 (직접 설계)

  • 프로그래밍 언어처럼 사용되며, 회로의 동작, 신호의 흐름을 기술함으로써 하드웨어의 설계가 이루어짐.
  • 프로그래밍된 HDL을 논리합성을 통해 실제 IC로 구현이 가능해짐.
  • 특정 ASIC 기술 및 공정에 무관하게 사용 가능.
  • 다양한 레벨의 디자인 및 혼합 가능.

이때 FPGA는 IC칩 제작 전에 미리 검증하는 단계이고 합성을 통해 게이트 레벨에서 시뮬레이션을 하는 것은 IC 구현 과정의 일부분이라고 생각하면 된다.

  • Cadence Genus synthesis Solution (구 Encounter RTL Compiler)
  • Innovus Implementation System (구 Encounter Digital Implementation)
  • SoC Encounter
  • Standard cell-based design으로 이루어지며, timing analysis가 중요함.

  • Standard cell-based design – 셀들은 표준화된 높이를 가지게 되며, 이 외의 Power, Ground, Well 등이 자동 연결됨.
    • 셀의 높이는 표준화되어 모두 같지만, 폭은 기능에 따라 변경할 수 있다.
    • 이 셀들을 붙여서 배치하는 것만으로 Power, Ground, Well 등이 자동으로 연결된다.

표준 셀 라이브러리

 

  • 설계의 시작은 Verilog HDL로 디지털 로직을 구현하고 검증하는 것임. (.v 파일)
  • Innovus Implementation System (Auto place & route)

메탈 라인 두껍게


FPGA 개념

  • FPGA는 조합논리회로를 위한 configurable logic blocks와 D Flip Flop, 여기에 연결을 위한 라우팅 채널로 구성되며 이는 프로그램으로 제어 가능.

디지털 로직을 쉽게 test할 수 있음.


 

예 : Arty Z7-20 (다양한 입출력 제공)

  • Arty Z7-20 실행을 위해 digilent’s board files와 xdc 파일이 필요함. (parts와 boards가 존재, boards는 input, output을 연결하기 편하도록 외부 회로와 연결한 형태임.)
  • 참고 링크 : http://www.digilent.com
 

Digilent – Start Smart, Build Brilliant.

Shop now for USB test and measurement devices, FPGA development boards, programming solutions and educational products.

digilent.com


  • Constraints는 pin mapping에 해당하며, 제조사에서 제공해 주는 xdc 파일임.

  • 아래와 같이 Verilog code의 입력과 동일하게 지정해 주면 됨.

  • Synthesis, implementation, and bitstream generation
  • Hardware manager 창에서 part와 bitstream file을 선택해 준 후 program을 하면 원하는 파일이 FPGA에 다운로드 됨.
  • 설계한 digital logic을 쉽게 test해 볼 수 있으며, 다양한 검증이 가능함.

  • Xilinx -> AMD, Altera -> Intel
  • 인공지능의 확장으로 C, Matlab, Python 등을 바로 변환해주는 software나 HLS (high-level synthesis)가 활용되고 있음. (디지털 로직의 장점은 병렬 연산이 가능하다는 것임.)

디지털 로직 기초

  • 디지털 로직은 크게 조합논리회로와 순차논리회로로 구분됨.
  • 각각은 synchronous, asynchronous 동작이 가능함.

조합 논리회로
순차 논리회로

  • 조합논리회로 - 함수로 쉽게 정리할 수 있음. (F=A’B’+A’B)
  • 디지털 로직은 출력이 1 – high, 0 - low로 구분됨.

  • 순차논리회로는 상태도를 활용하여 설계함.
  • 상태도(FSM : Finite State Machine)
    • 상태도는 순차논리회로의 동작을 표현 한 후에 Verilog 또는 VHDL로 설계
    • FSM은 순차논리회로를 설계하는 하나의 방법임.
    • Moore Machine(출력이 현재 상태에만 영향을 받음)과 Mealy machine(출력이 현재 상태와 입력의 영향을 받음)이 존재함. 주로 무어 머신을 사용함.

 


Verilog HDL(Hardware Description Language)

  • Simulation을 수행할 수 있는 방법은 Cadence, Synopsys -> NCVerilog (Linux 기반), Icarus Verilog (text 기반), Verilator (text 기반, Linux 기반) 등이 있음.
  • Xilinx사에서 제공하는 Vivado 설치 (GUI가 편함.)

vivado

  • RTL(Register Transfer Language) 형태로 디지털 회로를 쉽게 설계할 수 있음 (High-Level 언어와 유사, 예:C/C++)
    • -일반 프로그래밍 언어와 달리 하드웨어 중요한 특징인 시간과 동시성을 표현 할 수 있음
  • 테스트 또는 검증을 시뮬레이션을 통해서 알 수 있음.
  • 합성 tool에서 HDL을 컴파일 하여 gate-level 합성을 쉽게 구현 할 수 있음.
  • 표준 HDL: Verilog & VHDL
  • 아두이노, 라즈베리파이의 경우 instruction set을 기반으로 하지만 digital logic으로 연산하는 경우 병렬 연산 등이 가능한 장점을 가짐.
  • 설계 생산성
    • 자동 합성
    • 시뮬레이터를 통한 테스트와 디버깅이 가능
    • 회로도를 그리는 대신에 RTL로 디지털 회로를 설계
    • 개발 기간 단축 (gate-level design)

  • C 언어와 유사점
    • 문법은 거의 유사
    • 절차형(procedural) 및 순차형(sequential) 실행은 동일
    • if ~ else문, case문, for loop문 등 사용
    • 연산자: 논리(&,|,^..), 산술(+,-,*,/,%), 비교(>,<,<=,==)

  • HDL 언어의 특성
    • 동시성(concurrent)
    • 병렬화(parallel)
    • 추상화(abstraction)

Verilog HDL 기초

앞서 포스팅한 게시물에 더 자세한 설명이 있음

 

 

SDF(Standard Delay Format) 데이터를 이용한 타이밍 시뮬레이션 (post simulation)

  • 사용자는 design sources와 simulation sources (testbench)를 생성한 후 simulation 검증이 가능함.
  • Design sources는 digital logic을 의미하며, 아래의 형태를 가짐.
  • Module로 구성됨 – 입출력 및 내부 설계자가 사용할 변수 지정
  • module – 입출력 및 내부 설계자가 사용할 변수 지정
  • output 포트의 경우 값이 hold되어야 할 때 추가 reg 선언
  • 모든 포트는 default로 wire로 인식

 


  • Identifier (식별어)
    • 사용자가 정의한 공백을 가지지 않는 문자열(임의 지정) module_name, port, function, object 등 첫 번째는 문자 또는 언더스코어(_)로 시작,대소문자 구분
  • Reserved word (예약어)
    • Verilog HDL 구문을 위해 미리 정의된 문자열(임의 지정 불가) 사용자가 identifier로 사용할 수 없다 module, input, output, reg, endmodule, always 등

예약어

  • Comment (주석)
    • “//” 기호로 시작하는 문장
    • 블록 주석문: /* ~ */ 로 표시
    • 프로그램 수행에 영향을 미치지 않음
    • Design을 위한 부연설명

Verilog data values

  • 실제 디지털 회로에서 발생하는 값을 표현하기 위해서 Verilog는 4개의 data 값을 갖는다.
    • 0: Logic zero, “low”
    • Logic one, “high”
    • z: High impedance(tri-state buses)
    • X: unknown value(simulation) -시뮬레이터에서 wire에 초기값이 설정되지 않았거나 충돌이 일
      어나는 것을 표현

데이터 형 (Data Type)

  • wire (net 자료형)
    • 논리적인 기능이나 행동 없이 단순한 선을 의미
    • 물리적인 wire를 의미
    • 게이트나 모듈간의 입력과 출력을 연결할 때 사용
    • wire로 선언된 신호는 assign 문에서만 사용 가능하다.
  • reg (variable 자료형)
    • 순차회로에서 사용할 때에는 플립플롭이 된다.
    • reg로 선언된 signal은 always 문에서만 사용 가능하다
    • 테스트 벤치에서는 initial 문에서 사용한다.
    • 새로운 이벤트가 발생하기 전까지 기존의 값을 유지한다.

Integer도 사용 가능함


Verilog 어휘 규칙

  • 주석
    • 라인주석: //
    • 블럭주석: /* 주석 */
  • 수 표현
    • 정수형(integer)
      • 10진수, 16진수, 8진수, 2진수로 표현 (d, h, o, b)
      • integer i=100;
    • 실수형(real)
      • real a=12.232;
    • Unsized 상수
      • 32bit로 인식
      • a=‘d10
    • Sized 상수
      • 4’b1001(=9, 4’d9, 4’h9, 4’o11)
  • 상수의 부호
    • -8’d6 = (8’b1111_1010=8’hFA)
  • 밑줄 사용 수의 표현 (숫자의 차이는 없고, 구분을 용이하게 해 줌.)
    • 27_195_000(27,195,000)
    • 16’b0011_0101_0001_1111
    • 32’h12ab_f0001
  • begin ~ end
    • initial, if, case, always 등을 사용할 때 블록을 지정할 때 사용
    • C언어에서 {...}와 같은 개념

모듈 구성요소

  • $ task, system tasks

  • 구현 추상화 단계
  • Behavioral model (행위 수준 모델링) – always
    • 함수 블록간의 데이터 흐름을 표현
    • 필요하다면 함수 블록간의 스케줄 삽입
  • Dataflow model (데이터플로우 모델링) – assign
    • 회로의 동작을 입력과 출력 간의 데이터 흐름으로 표현하는 방식. 이 방식에서 입력과 출력은 데이터의 흐름으로 표현되며, 이러한 데이터 흐름이 디지털 회로의 동작을 결정.
  • Gate Level (Structural)
    • Primitives or low-level components를 연결을 표현
  • Switch model
    • 추상화의 최하위 수준, 스위치와 기억 노드들로 모듈 구현
728x90

'... > 비메모리반도체' 카테고리의 다른 글

hls4ml  (0) 2024.08.22
Vivado HLS 사용  (0) 2024.08.22
Verilog HDL을 활용한 뉴런의 설계  (1) 2024.08.21
Verilog HDL(Level of Modeling)  (0) 2024.07.25
Verilog HDL(Instantiation)  (0) 2024.07.25