설계독학맛비 YouTube/00 쉬어가기

[설계독학] [쉬어가기 6장] FPGA 의 Design Flow 에 대해 알아보자. (Xilinx's FPGA Design Flow Overview, 난이도 : 기초다지기)

반응형

설계독학에서 진행 중인 쉬어가기의 내용입니다.

모든 글의 저작권은 맛있는비빔밥에게 있습니다. ^^

설계독학 유튜브

youtu.be/e0tT8zcYwlw

 

 

Intro

안녕하세요. 설계독학의 맛비입니다.

오늘은 쉬어가기 여섯번째 시간으로 FPGA 의 설계 flow 에 대해 알아보려고 합니다.

오늘은 FPGA 설계 Flow 를 같이 살펴보려고 합니다.

FPGA 공부를 시작하기전에, 오늘 할 내용 인 FPGA 설계 Flow 를 알고 계시면  FPGA 를 공부하는데 도움이 되리라 생각을 합니다. 편한 마음으로 읽어주세요.

 

FPGA 구입을 해야하는 이유

먼저 Design Flow 를 이야기 하기 전에, FPGA 의 사용처와 설계공부를 한다고 하시면 FPGA 구입을 해야하는 이유를 간략하게 말씀드리고 시작할께요.

FPGA 는 어떻게 사용하느냐에 따라서, 동일한 기능을 하지만, Design 이 달라지는 것 같습니다.

이 말이 무슨말이냐면, FPGA 는 크게 검증용과 제품용으로 나눌 수 있습니다.

검증용은 여러분들이 ASIC 을 목표로 설계를 하구요, ASIC 제품을 만들기위한 과정중에 FPGA 에 올려서 검증을 하게 됩니다.

Tool 을 통한 Simulation 만으로 검증을 하기에는 검증시간과, 그리고 ASIC 제품이 나왔을 때의 동작 여부 등등의 변수를 보장하기 어렵습니다.

그렇기 때문에 FPGA 에 검증을 위해서, 설계하신 IP 를 올려보는거에요. 그것이 검증용 FPGA 이구요.

반면에 FPGA 의 제품용은 말그대로, ASIC 처럼 제품인 Chip 을 만드는 것이 아니라, FPGA 자체가 제품이 되는 것 입니다.

보통 다수의 수요가 있으면 ASIC 을 통해 Chip 을 직접 만들지만, 고속의 연산이 필요한데 수요가 많지 않은 곳, 일상생활에서 쓰기에는 어려운 것들은 FPGA 로 제품을 만들기도 합니다.

예를 들면, 의료장비, 미사일에 들어가는 Tracking 알고리즘이라던가, 아니면 로봇에도 들어갈 수 있죠. 이런 것들은 수량 자체가 적기 때문에, FPGA 를 통해서 제품을 만듭니다.

Chip 을 만들려면 많은 단계를 거쳐야하고, 이는 곧 돈이죠. FPGA 도 다수의 단계를 거치는 것은 맞지만, 여러분의 지식과 Tool 만 있다면 만들 수 있어요.

즉, 여러분이 설계에 관심이 있으시다면, FPGA 보드를 구입을 추천드립니다. ASIC 은 개인이 Chip 을 만들기에는 금전적으로나 시간 노력 적으로 사실상 어려운 작업이죠.

해서, 10~40만원대의 FPGA 보드를 구입하시면 정말 많은 영역을 공부 하실 수 있습니다. 저도 전부를 알지는 못해요. 

내년에 FPGA 영상을 시작할 예정이니까, 오늘 내용을 잘 봐주셨으면 좋겠어요.

 

FPGA Design Flow

FPGA Design Flow 는 구글링을 하면 굉장히 좋은 자료들이 많이 나와요.

그중에서.. 제가 오늘 내용을 위해 준비한 자료는 Xilinx 사에서 정식으로 제공하는 "Design Flows Overview" 라는 문서입니다.

Xilinx 사의 FPGA 를 현업에서 주로 사용했던 것 같아요.

Altera 는 학부때 DE2 보드라는 녀석 이후로는 써보거나 본적이 없네요.

여러분들이 공부하실 때 참고하셨으면 합니다. 

 

오늘 이야기할 내용은 바로 다음 그림입니다.

이런 것이 있구나 정도로 이해하시면 오늘 시간 유익하실 것 같아요.

그리고 전통적인 설계방법에 대해 설명을 드릴 예정입니다.

전통적인 이라는 표현을 사용한 이유는 SW 엔지니어 들도 FPGA 를 사용하기 위해서 Xilinx 에서 제안한 Flow 가 있기 때문에, 전통적이라는 표현을 사용했구요. 우리는 HW 엔지니어이기 때문에 오늘 설명드리는 전통적인 Flow 와 친해지기를 희망합니다.

 

크게 4개의 영역으로 나눌 수 있구요,

실제로도 이 영역과 유사하게 업무를 분담해서 진행하고 있습니다... 만, 저는 스타트업의 엔지니어기 때문에, 얼떨결에 다.. 하고 있습니다. 

업무의 순서대로 나열을 해보자면, 

System Design Entry, Implementation, Hardware Bring-up and Validation Part, Software Development 가 존재합니다.

Design Flow 이전에 당연히 가장 중요한, 어떤 제품을 만들 것인지에대한 Spec 선정이 선행이 되어야합니다. Spec 선정 이후의 Flow 가 이 그림으로 나와있어요.

먼저 System Design Entry 파트를 보겠습니다. IP 를 설계하고 선정하는 단계입니다. 여러분들이 직접 Verilog 로 설계가 가능하구요.

쉬어가기 3,4 장에서 소개드린 HLS 방법을 통해서도 IP 를 설계하실 수 있습니다.

저는 사용해본적이 없지만 MATLAB 을 이용해서도 IP 를 만들 수 있다고 합니다. 그러나 제 경험상 다녀본 어떤 회사에서도 제품에 Matlab 을 통해서 만든 IP 를 쓰는 곳은 못 본 것 같습니다. 많이 사용안한다.. 는 뜻이죠.

우리에게는 더 좋은 Verilog 와 HLS 가 있으니까요.

그리고, Xilinx FPGA 가 제공해주는 기본 IP 들이 있어요. AXI 관련 모듈들은 정말 잘 쓰고 있구요. Clock Wizard, memory 등등 System 을 구성하기 위해서 필요한 기본이 되는 IP 들을 적절히 사용하고 있습니다.

그리고 Xilinx 에서는 Processor IP를 제공합니다. Micro blaze 라는 녀석이구요.

Zynq 는 Hard IP 로 ARM cpu 가 들어가 있습니다.

이렇게 HW 적인 IP 가 준비가 되었다면, Implementation 단계를 진행하게 됩니다. 다른말로는 FPGA fitting 작업이라고도 불러요.

여러분이 설계하신 IP를 FPGA 에 올리고 동작시키기 위해서 진행하는 작업이다 생각하시면 될 것 같아요. 

Testbench 를 만들어서 Function 적으로 문제가 없는지 Simulation 을 하구요.

그리고 나서, FPGA 에 올리기 위해서 필요한 Constraints, 제약사항들을 기술합니다. 예를들면 Clock 의 속도라던가, false path 라던가 Pin 배치라던가 이런 정보들을 .xdc 라는 파일에 기술을 합니다.

Constraints 파일과 여러분의 IP 를 가지고 합성을 진행하게 되구요.

그리고 Implementation 을 하는데 이 때 합성단계에서 만든 Cell 을 배치하고 연결합니다.

Place and Route 작업을 하게 되죠.

Timing Closure 가 되었는지, 누락된 Routing 이 있는지, Resource 가 부족하지 않았는지 등등.. Design 을 분석합니다.

분석이 완료 되었다면, Bitstream 이라는 FPGA 에 올릴 수 있는 파일을 생성할 수 있습니다.

이 Bitstream 을 FPGA에 올려야 동작을 하게 되는 것이죠.

어떤 Bitstream 을 올리느냐에 따라 다른 동작을 하게 되구요.

그래서 FPGA 가 Field Programmable Gate Array 입니다.

여담으로 ILA 라는 로직을 사용하면, FPGA 동작중에 HW Debugging 도 가능합니다.

 

Hardware Bring-up and Validation 과정과 Software Development 과정은 같이 설명드리겠습니다. 

FPGA 에 Bitstream 을 올려서 동작을 검증 및 Debugging 을 합니다. 이 FPGA 를 동작시키기 위해서는 대부분 SW 가 필요합니다. 대부분이란 표현을 쓴 이유는 아주 간단한 Spec 이라면 굳이 SW 없이 HW 로 컨트롤 로직을 설계해도 충분하기 때문이죠.

하지만 대부분의 case 에 대해서 공부를 하셔야 도움이 되기 때문에 대부분의 이야기를 하자면.

보통 FPGA 에는 Core 연산이 올라가게 되구요. 이 Core 를 사용하기 위한 SW 개발이 필요합니다.

그래서 여러분들이 FPGA 를 공부하고 사용하실 줄 알게된다면 자연스럽게 HW 와 SW 를 익히실 수 있어요.

그렇기 때문에 설계엔지니어라고 하면 최소한 C, Verilog 는 다룰줄 알아야 한다 라고 생각이 듭니다.

 

마무리

오늘 대략적으로 FPGA Design Flow 에 대해 알아보았습니다.

이 짧은 글로는 모든 것을 이해하시기는 어려울 것이라고 생각이 들어요.

이런 단계를 통해서 FPGA 제품이 나오게 되는구나 를 이해하시면 좋을 것 같습니다.

혹시나 궁금한 점이 있으시다면 댓글을 남겨주시면 답변을 드리도록 하겠습니다.

코로나가 점점 더 심해지는데 건강 잘챙기시구요. 그럼 다음에 시간에 봬요.

반응형