Quality control (2)/Digital System Design

DSD - Verilog HDL-based design flow / FPGA

빈그레 2023. 4. 2. 21:00

 

 


 

 

[ Contents ]

-  Introduction to Verilog

-  HDL-based design flow
   (FPGA, ASIC)

-  Comparison with others

 

 

 

 

Step1. Introduction to Verilog

 

Importance of HDLs

 

HDL 

: HDL is an acronym(두문자) of Hardware Description Language.

 

Two most commonly used HDLs

- Verilog HDL (also called Verilog for short)

- VHDL (Very high-speed integrated circuits HDL)

 

Features of HDLs

- Design can be described at a very abstract level. (Description Language이므로 본격 설계보다는 추상적인 단계이다.)

- Functional verification can be done early in the design cycle. (실제 설계에서는 쉽게 못 바꿈)

- Designing with HDLs is analogous to computer programming. (HDL은 프로그램밍과 유사하다 -> 그만큼 추상적)

 

 

 

Popularity of Verilog HDL 

 

- It is a general-purpose, easy to learn, and easy to use HDL language.

- It allows different levels of abstraction to be mixed in the same model.

- It is supported by all logic synthesis tools.

- It provides a powerful Programming language Interface(PLI).

 

*Veriolog Simulator에서는 C/C++와 같이 상대적으로 low level인 언어를 사용한다. 

 Python은 Laguage 보다는 script에 가깝고 cpu에 대한 배경지식이 없어서 사용하지 않는다.

 

 

 

 

 

 

Step2. HDL-based design flow

 

 

 

HDL-Based Design Flow

 

HDL is a convenient, device-independent representation of digital logic.

 

 

Verilog로 쓰인 HDL description에 Compilation(Netlist로의 번역)과 Synthesis(logic 최적화)이 이루어진다.

이후, Mapping 과정에서 Netlist는 필요로 하는 특정 hardware platform을 선정하게 된다.

 

 

 

Synthesis

 

In Hardware, Synthesis means High abstraction to Low abstraction conversion.

High abstraction is a scribble on a napkin. Synthesis converts it into Real chip (ta-da~~).

 

 

                                        Synthesis  =  Translation  +  Logic Optimization  +  Mapping

 

 

 

Synthesis는 Verilog로 쓰인 HDL source를 Translate하여 Gate level로 바꾸어준다.(Generic Boolean...일반화?)

이후, target(FPGA, ASIC etc..)에 맞게 최적화하여 mapping한다.

 

map은 보통 logic function을 specific implementation technology로 mapping하는 과정을 말한다.

(ex.PLD(Programmable logic device, 설계 가능 논리 소자 // FPGA 에 사용)

, ASIC (Application specific integrated circuit))

 

 

 

 

 

 

 

 

Step2-1. FPGA ( Field Programmable Gate Array )

 

 

FPGA

 

FPGA ( Field Programmable Gate Array )

: PLD(설계 가능 논리 소자)와 프로그래밍이 가능한 내부 회로가 포함된 반도체 소자이다. 

 

PLD ( Programmable Logic Device )

: 제조 후 사용자가 내부 논리 회로의 구조를 변경할 수 있는 집적회로이다.

  설계시 사양이나 기능이 정해져서 제조되기 때문에 나중에 회로 구성을 변경할 수 없는 일반 집적 회로와 달리

  회로가 정의되지 않은 채 출하되어 사용자가 임의의 회로를 기록해 동작시킬 수 있다.

 

  집적 회로를 대량으로 제조하는 경우 ASIC을 사용하지만, 초기 개발비가 많이 들며, 설계하는 데에 많은 시간이 들고

  조금의 실수도 용납되지 않아(후에 수정이 어려움) 개발자에게 부담이 될 수 있다. 

  하지만 PLD의 경우 초기 개발비가 필요 없고 회로를 여러번 고쳐 쓸 수 있기 때문에 많은 지지를 받고 있다.

 

 

 

 

 

Programmable Logic Design(PLD) Flow

 

 

(1) Design Entry in schematic and/or verilog

(2) Implementation ( button in vivado ) includes Placements & Routing and bitstream generation

     using Xilinx's M1 technology. Also, analyze timing, view layout, and more.

(3) Download directly to the Xilinx hardware devices(s) with unlimited reconfigurations.

 

 

 

 

FPGA design flow 

 

 

 

 

 

[1. ~Implementation]

 


 

 

 

 

[2. Synthesis]

 

 

 

 

[3. Place and Rounting ]

 

 

and,or,FF 등이 set로 여러개가 존재한다. 이러한 Sop(Sum of Product)를 만들어서 block들에 규칙적으로 나열하여 나누주고 wire로 연결한다. 여기서 ASIC과의 차이가 있다. FPGA는 100% customized라고 보기는 어렵고,

이미 조금 만들어진(SoP set) 상태이고, ASIC은 customizing하게 delay등의 세부사항 등을 고려하는 것이 그 차이이다.

 

우측 위쪽 사진은 gate들을 나열한 것이고(place), 우측 아래 사진은 gate를 wire로 연결(Routing) 한 것이다.