2025년 9월 15일 월요일

[고급 디지털 제조 3강] un-timed vs. timed model

[고급 디지털 제조 3강] un-timed vs. timed model

복습

반도체 설계의 최종 목표는 레이아웃(GDS 형식의 제조 도면)이다. 컴퓨팅 언어로 표현한 알고리즘을 여러 단계의 추상화 수준 낮추기(lowering abstraction level) 과정을 거쳐 최종적으로 레이아웃을 생성한다. 추상화 수준의 각 단계마다 설계에 적용되는 용어들이 다르다. 반도체 설계를 시작하기 전에 이 용어들을 간략하게 살펴봤다. 때로 생소하거나 쉽게 이해하기 어려웠을 것이다. 앞으로 여러 차례에 걸쳐 등장하게될 이용어들에 대하여 익숙해지도록 한다. 처음 접하는 용어라면 나름대로 정의를 가져보고 학습 하면서 바로잡아 나가도록 한다. 본 강좌의 목표는 아래 그림을 설명할 수 있는 "반도체 설계"의 교양을 쌓는 것이다.


[참고] "반도체 설계교실 제안"[바로가기]

아래 그림에 등장 하는 각 용어들에 대하여 논의해보기 바란다.



아래의 설계 전과정을 수행해 봄으로써 실습으로 반도체 설계 교양을 다질 수 있도록 한다.


3강: Un-timed vs. Timed model

1. 아래의 세가지 모델에 대하여 예제를 살펴볼 것이다. 각 모델은 "내 칩 MPW" 디자인 킷[바로가기]의 튜토리얼에 포함되어있다. 예제의 알고리즘은 FIR 디지털 필터다[바로가기].

    a. Un-Timed Model: C++ 언어로 기술[바로가기]
    b. Timed Model: SystemC로 기술[바로가기]
    c. RTL Model: Verilog HDL로 기술[바로가기]

2. 앞서 학습한 사항을 점검하고 자가 실습하면서 갖게된 궁금증을 풀어보는 질문과 답 그리고 토론 시간을 가질 것이다. 각자 "학습노트"에 자가 실습한 사항을 정리해 오자.

    a. "가상머신 리눅스 설치"[바로가기] 또는 "다시 WSL!"[바로가기]
    b. "오픈-소스 반도체 설계 도구 설치"[바로가기]
    c. "Arduino 및 FPGA 도구 설치"[바로가기]
    d. "하드웨어 언어의 코딩 스타일"[바로가기]
    e. "C++언어의 크래스와 템플릿의 최소한 이해"[바로가기]



2025년 9월 8일 월요일

[고급 디지털 제조 2강] 컴퓨팅 언어와 하드웨어 모델링

[고급 디지털 제조 2강] 컴퓨팅 언어와 하드웨어 모델링

1강 복습:

- 이번 학기중 학습하게 될 내용을 다음과 같이 소개 했다.

1. 컴퓨팅 언어로 하드웨어를 모델링 하고 시뮬레이션(simulation)을 실시한다. 이 컴퓨팅 언어에는 하드웨어를 기술(HDL, Hardware Description Language)할 목적의 Verilog 는 물론 알고리즘의 기술에 적합한 최고 추상화 수준의 C++를 포함한다.

2. 시뮬레이션 뿐 만 아니라 FPGA 에뮬레이션(emulation)을 통해 검증한다. 검증된 설계물은 합성(synthesis)과 자동 배치배선(Auto-Placement & Routing) 그리고 반도체 제조도면(GDS layout)을 생성하여 "내 칩" 제작을 의뢰하는 과정을 배울 것이다. 합성은 HDL의 RTL(Register Transfer Level) 뿐 만 아니라 고위합성(High-Level Synthesis)을 포함한다.

3. 반도체 설계에 필요한 도구(하드웨어 및 소프트웨어)들은 오픈-소스 또는 무료 라이센스 FPGA 도구들이다.

1강 과제:

모든 수강생은 각자의 책상위에 반도체 설계실을 꾸며야 한다. 아래의 문서에 따라 리눅스 운영체제와 오픈-소스 반도체 설계도구들을 설치한다.

1. "가상머신 리눅스 설치"[바로가기] 또는 "다시 WSL!"[바로가기]

윈도우즈 PC에 가상 리눅스 설치 방법은 VMware, VirtualBox, WSL 이 있다. 위의 문서는 세가지 방법을 모두 설명한다. 어느 방법도 좋다. 랩-탑에 설치하는 경우 가장 가벼운 WSL을 추천한다.

2. "오픈-소스 반도체 설계 도구 설치"[바로가기]

베릴로그 시뮬레이션과 합성, SystemC/C++ 시스템 수준 모델링과 테스트벤치, 표준 셀 자동 배치배선(Placement & Routing), 레이아웃(GDS) 생성, 사인-오프(LVS, DRC, Via Check)등 반도체 설계에 필요한 모든 도구들을 설치하는 방법을 설명한다.

* 도구 설치에 어려운이 있다면 수업 중 논의 할수 있도록 질문지를 작성해 온다.

2강: 컴퓨팅 언어와 하드웨어 모델링

학습할 내용:

1. 반도체 설계자로서 컴퓨팅 언어를 이해 해본다. 하드웨어 언어 베릴로그와 소프트웨어 언어 C++의 차이를 비교한다.

2. 하드웨어를 모형화 하기 위한 컴퓨팅 언어의 요건이 무엇인지 이해한다.

3. 컴퓨팅 언어로 하드웨어의 병렬성을 기술하고 실행을 모의하는 방법을 이해한다.

4. C++ 언어의 템플릿 크래스(templated class)의 개념, 사건(event)과 콜-백(call-back) 그리고 변수와 하드웨어 채널의 개념을 이해한다.

5.  make 유틸리티의 Makefile 작성법 기초를 배운다.

예습해올 사항:

1. "하드웨어 언어의 코딩 스타일"[바로가기]

2. "C++언어의 크래스와 템플릿의 최소한 이해"[바로가기]

3. "Standard Co-Emulation Modeling Interface (1~4장까지)"[바로가기]

* 위문서를 읽어보자. 어지간한 전공자도 생소한 용어들이 있을 것이다. 최선을 다해 끝까지 읽어보자. 그리고 질문할 내용을 "연구노트"에 적어보자. 수업 시간에 논의하도록 한다.

준비물:

1. 모든 수강생은 각자 "연구노트"를 준비 하여야 한다.

A4 크기의 공책을 준비한다. 이 공책에 학습 한 내용과 질문 사항을 메모한다. 필사로 작성하며 정서할 필요 없다. 이 "연구노트"는 학습 진도를 파악하고 학기말 성적에 반영될 것이다.

2. 랩-탑 컴퓨터를 소지하여도 좋다.

수업시간 중에는 토론과 의문을 해소하는 시간이다. 랩-탑이 반드시 필요한 것은 아니다.

--------------------------



2025년 9월 5일 금요일

[고급 디지털 제조:1강] 에뮬레이터 제작/실습 장치 구매목록

[고급 디지털 제조] 에뮬레이터 제작/실습 자재 목록

1. 마이크로 컨트롤러 모듈

    1-1. Arduino DUE

    1-2. Raspberry Pi Pico/W

2. FPGA 모듈

    2-1. Altera Cyclone IV EP4CE6 모듈

    2-2. FPGA 다운로더(Xilinx 플랫폼 케이블 JTAG 케이블)

    2-3. 레벨 쉬프터 모듈

3. 어댑터 보드

상용 판매 제품이 아니다. 디자인 킷에 제공된 거버 파일을 가지고 샘플 PCB 업체를 통해 제작

    3-1. Arduino DUE 어댑터(거버파일 바로가기): 1 매

    3-2. Raspberry Pi Pico(회로도 및 거버 바로가기) 어댑터: 1

    3-3. Altera Cyclone IV EP4 어댑터(회로도 및 거버 바로가기): 1매

    3-4. 레벨 쉬프터 어댑터(거버 바로가기): 6매

 4. 핀 헤더/소켓

    4-1. 핀 헤더 직렬(1렬): 길이 11.5mm: 20개, 길이  20mm

    4-2. 핀 헤더 직각(2열/40핀)

    4-3. 핀 헤더 소켓(1렬/40핀)

    4-4. 핀 헤더 소켓 직각 2열: 2x6


5. 테스트 소켓 점퍼

    5-1. 테스트 소켓 점퍼 케이블(F/F)

    5-2. 테스트 후크 클립

    5-3. 28-Pin SOIC 소켓

6. 기타 보조 기기

    6-1. USB 전압/전류 측정기

    6-2. USB 가변 전원공급기

    6-3. 디지털 멀티메터

- USB 3.0 허브

    - 3포트 이상
    - 별도 충전 포트
    - 각 포트마다 스위치
    - 외부 전원 공급

---------------------------------------------------------

2025년 9월 기준 오픈-마켓 구입가 산정표

품목

수량

단가

금액

Arduino DUE

1

20,450

20,450

Raspberry Pi Pico

1

5,400

5,400

Raspberry Pi Pico W

1

9,800

9,800

Cyclone IV EP4CE6

1

26,900

26,900

Xilinx 시스템 케이블(JTAG Downloader)

1

23,850

23,850

Level Shifter 10개/세트

2

2520

5,040

핀 헤더 11.5mm/40pin (10개)

2

1,690

3,380

핀 헤더 21mm/40pin (10개)

1

3,080

3,080

핀 헤더 소켓 1열/40pin(10개)

1

2,940

2,940

핀 헤 직각 2열/40pin(10개)

1

2,520

2520

핀 헤더 소켓 직각 2열/40pin(10개)

1

6,570

6,570

듀폰 점퍼 와이어 F-F 30cm(20개)

3

3,440

3,440

테스트 후크 클립 (10개)

1

13,200

13,200

SOP28P 테스트 소켓

1

6,440

6,440

USB 포트 전류/전압계

1

2,680

2,680

USB 포트 DC-DC

1

3,060

2,060

디지털 멀티메터

1

9,750

9,750

어댑터 PCB 샘플 제작 (4종)

1

30,000

30,000(예상가)

소계



184,380

기타 부품비




USB C-Type Cable




Mini USB Cable




USB 3.0 허브





2025년 9월 1일 월요일

라즈베리 파이 피코/24채널 로직 분석기 만들기

Make a 100MHz 24 Channel Logic Analyser from your favorite Raspberry Pi Pico

https://youtu.be/Obd1PiW7RO8?si=yyBkPaerooi93dk9

https://github.com/gusmanb/logicanalyzer/releases

https://github.com/gusmanb/logicanalyzer



[고급 디지털 제조:1강] 강의 소개 및 준비 사항 안내

[개강]"고급 디지털 제조 및 실습"

서울대학교 공학 대학원-2025년 2학기

1강: 강의 소개 및 준비사항

2025년 9월 4일(목)

이 수업은 "고급 디지털 제조 및 실습"라고 쓰고 "오픈-소스 도구를 활용한 내 칩 설계 , 검증 그리고 제조"라고 이해하기 바란다. "오픈-소스 도구를 활용한 반도체 설계"를 배우게 될 것이다. 최종 목표는 "내 칩 제작 서비스[바로가기]"를 통해 반도체 제조 도면을 제출하여 생산을 의뢰하는 것이다.

과목 개설의 동기와 목표:

오픈-소스 컴퓨팅 도구들이 충분히 성숙되어 상용 툴을 대체하기에 이르자 프로그래밍 언어와 소프트웨어 개발은 전공자들의 전유물이 아니게 되었다. 오히려 비전공자들의 아이디어 구현이 빛을 내고 있기도하다. 반도체 설계도 예외가 아니다. 오픈-소스 반도체 설계 도구들도 발전을 거듭하여 시스템 수준 알고리즘에서 합성과 자동 배치배선 그리고 최종 레이아웃 생성까지 수행할 수 있는 체계를 갖췄다. 이에 비전공자들도 자신의 고유 칩을 만들수 있는 환경이 충분히 성숙되었다. FPGA 들이 저렴한 가격으로 널리 보급되어 반도체 설계 "덕후(enthusiast)", 또는 "메이커(Maker)"들이 등장하고 이제는 "반도체 설계"가 취미의 영역에 진입했다고 할 정도다. 예전에 유로였던 FPGA 개발 도구들도 무료로 사용 할 수 있도록 개방되는 추세다. FPGA 벤더에서 배포하는 개발도구 패키지 내에 오픈-소스 도구가 상당부분 차지하고 있음은 물론이다. 이에 덧붙여 국내에는 무료 MPW 사업 "내 칩 제작 서비스"가 수행되고 있고, 해외에서는 "닥치고 ASIC(Keep Calm & make ASIC)"이라는 기치아래 저렴하게 내 칩을 제작해주는 서비스가 실시되고 있다.

오픈-소스와 상용 도구의 개방(또는 저가공급)정책으로 반도체 설계 교육의 큰 장애가 되어왔던 고가의 설계 소프트웨어(EDA Tool) 라이센스 문제는 상당히 해소 되었다고 할 수 있다. 이에 덧붙여 생활속에서 느끼는 발전된 반도체 기술과 교실에서 배우는 내용 사이의 엄청난 추상성 격차는 쉽게 극복하기 어렵다. 이런 상황에서 학생들에게 교과서에 등장하는 각종 최신 반도체 설계의 공학적 방법론을 실습 없이 이해하라는 것은 부당하다. 이러한 애로점(교육자재의 부족, 긴 공정기간, 학과목 간의 연계 부족)을 해소하고 반도체 설계 역량을 강화하기 위하여 본 과목을 개설 하였다. 아래 그림은 오픈-소스 활용한 표준 셀 기반 반도체 설계 과정을 보여준다. 본 학과의 목표는 이 그림을 완전히 이해하고 전과정을 내 책상 위에서 수행해 보는 것이다.

수업 참여 학생 준비사항:

본 수업에 참여하는 모든 학생은 각자 과제를 수행하고 보고서를 논문 형식으로 제출하여야 한다. 반도체 설계에 소요될 모든 소프트웨어는 학생들의 컴퓨터에 설치 한다. 리눅스 설치와 오픈-소스 반도체 설계 도구의 설치 방법은 아래 문서를 참고한다.

1. "가상머신 리눅스 설치"[바로가기] 또는 "다시 WSL!"[바로가기]

윈도우즈 PC에 가상 리눅스 설치 방법은 VMware, VirtualBox, WSL 이 있다. 위의 문서는 세가지 방법을 모두 설명한다. 어느 방법도 좋다. 랩탑에 설치하는 경우 가장 가벼운 WSL을 추천한다.

2. "오픈-소스 반도체 설계 도구 설치"[바로가기]

베릴로그 합성과 시뮬레이션, SystemC/C++ 시스템 모델링, 표준 셀 자동 배치배선(Placement & Routing), 레이아웃(GDS) 생성, 사인-오프(LVS, DRC, Via Check)등 반도체 설계에 필요한 모든 도구들을 설치하는 방법을 설명한다.

3. "Arduino 및 FPGA 도구 설치"[바로가기]

"내 칩"을 제조하기 위해 도면을 공장에 제출하기 전 철저한 검증을 수행한다. 단순히 시뮬레이션 만으로는 부족하다. FPGA를 활용하여 Co-Simulation 은 물론 Co-Emulation 을 수행 할 것이다.

4. "내 책상위에 꾸미는 반도체 설계실"[바로가기]

오픈-소스 반도체 설계 도구는 무료다. Xilinx와 Altera의 FPGA 개발도구들도 무료 라이센스 정책을 펴고있다. FPGA와 Arduino, Raspberry Pi Pico 하드웨어도 매우 저가로 공급되고 있다. "내 칩" 제작 역시 무료로 해준다. 개인별 실습에 필요한 부품 구매 비용은 과목 실습비에서 제공 예정이다. 학생 스스로 부품을 구매하고 땜질도 해야한다. 반도체 설계실을 내 책상 위에 꾸려보는 것은 어떤가!

MyChip-On-MyDesk!

끝으로,

"랩 걸(Lab Girl)"을 읽어보라. 이 과목을 진행하게된 이유이기도 하다. "'랩 걸'을 읽고 나니 누군가의 연구 조수가 되어 주고 싶어 졌다."[바로가기]




2025년 8월 25일 월요일

기술노트 15: 내 책상위의 반도체 설계실 꾸미기


기술노트 15: 내 책상위의 반도체 설계실 꾸미기

목차:

1. 개요
    1-1. 오픈-소스 설계 도구 설치
    1-2. 표준 연동 에뮬레이션(Standard Co-Emulation)
    1-3. 연동 에물레이션 모델링 인터페이스 내부구성(SCE-MI Infrastructure)
    1-4. "내 칩 반도체 설계실"의 연동 에뮬레이션 체계(Poorman's SCE System)

2. 모델링 인터페이스(Modeling Interface) 통신 채널 장치 제작
    2-1. Arduino DUE 마이크로 컨트롤러 모듈 및 어댑터 보드
    2-2. Raspberry Pi Pico 마이크로 트롤러 모듈 및 어댑터 보드

3. 에뮬레이터 제작
    3-1. FPGA 모듈: Intel/Altera Cyclone IV
    3-2. JTAG 다운로드 케이블
    3-3. 어댑터 보드
    3-4. 레벨 쉬프터 모듈
    3-5. 칩 테스트 소켓(28-Pin SOIC)

4. 오실로스코프/로직 아날라이저 제작
    4-1. 컨트롤러 모듈: 라즈베리 파이 피코
    4-2. 오실로스코프 프론트 엔드 보드
    4-3. 기타 측정기

5. 보드 시험
    5-1. 준비사항
        a. FPGA JTAG 다운로더(openFPGALoader) 설치
        b. Arduino
        c. 리눅스 USB 장치 확인
    5-2. 테스트 예제 실행

6. 맺음말

------------------------------------------------------------------------------------

1. 개요

내 책상위에 반도체 "설계실"을 꾸며보자. 컴퓨터와 오픈 소스 반도체 설계 소프트웨어 그리고 에뮬레이션/프로토 타이핑 하드웨어로 구성된다. 프로토 타이핑 하드웨어는 설계 검증 에뮬레이터 및 칩 테스트용도로 쓰인다. 아래 사진은 "내 책상 위의 반도체 설계실" 모습을 보여분다.

1-1. 오픈-소스 설계 도구 설치

내 책상위의 "반도체 설계실"의 기본은 오픈-소스 반도체 설계 도구가 설치된 컴퓨터(워크 스테이션)다. 앞서 리눅스와 오픈-소스 설계 도구의 설치에 대하여 설명 했으니 아래 문서들을 참고한다.

    a. 리눅스 설치: "가상 머신 리눅스 설치"[바로가기], 다시 WSL![바로가기]
    b. 오픈-소스 반도체 설계도구 설치[바로가기]
    c. 프로토 타이핑 도구 설치: "Arduino, Vitis-HLS, Quartus"[바로가기]

1-2. 표준 연동 에뮬레이션(Standard Co-Emulation)

"내 칩 반도체 설계실"의 검증 체계는 Accellera의 SCE-MI[바로가기]의 개념을 차용하였다. 연동 에뮬레이션(Co-Emulation) 시스템은 테스트벤치 소프트웨어와 FPGA 하드웨어를 연계하여 반도체 설계를 검증하는 체계로서 3부분으로 구성된다.

a. 호스트 워크스테이션(Host Workstation)

워크스테이션 PC에서 시뮬레이션으로 DUT를 검증 한다. 검증 대상 DUT는 C/C++ 로 기술된 언-타임드 알고리즘(시스템 수준 모델) 또는 하드웨어 기술언어(베릴로그, VHDL, SystemC)의 타임드 모델이 될 수 있다. 메시지 프록시를 통해 에뮬레이터 FPGA에 구현된 DUT를 검증 한다. 시뮬레이션에서 작성했던 테스트벤치가 재사용된다.

b. 에뮬레이터 (Emulator)

FPGA에 구현된 DUT의 하드웨어다. 호스트 워크스테이션의 테스트벤치에 의하여 구동된다.

c. 모델링 인터페이스(MI, Modeling Interface)

워크스테이션과 FPGA 사이에 연결된 통신 채널을 매개로 가교 역활을 한다. 호스트 워크스테이션의 시스템 수준 테스트벤치와 에뮬레이터의 하드웨어 사이의 넓은 추상성 격차를 이어준다. 모델링 인터페이스의 역할은 시뮬레이터의 테스트벤치에서 보는 DUT와 FPGA에 구현된 DUT가 외견상으로 동일하게 보이도록 한다.


[그림출처] Standard Co-Emulation Modeling Interface (SCE-MI) Reference Manual v2.4

1-3. 연동 에물레이션 모델링 인터페이스 내부구성(SCE-MI Infrastructure)

연동 에물레이션 체계의 모델링 인터페이스 내부구성(SCE-MI Infrastructure)은 다음과 같다.

a. 메시지 포트 프록시(Message Port Proxy)

DUT 마다 입출력의 구성이 다르다. 이에 따라 달라지는 프로토콜(통신 데이터 양식)에 맞춰 메시지를 패키지화 한다. 아울러 워크스테이션과 FPGA 사이에 연결된 통신 채널을 구동한다.

b. 메시지 통신 채널

워크스테이션과 FPGA 사이에서 테스트 입출력을 주고 받는 통로 역할이다. 입출력 구성이 다른 DUT 마다 통신 프로토콜을 재작성하려면 매우 번거롭다. 통신 프로토콜을 규격화한 응용 프로그래밍 인터페이스(API)가 제공 되어야 한다. "내 칩 디자인 킷[깃허브]"에 메시지 프로토콜을 규격화 하고 이를 구동하는 PSCE API 를 제공한다. 현재 PSCE_API는 최대 64비트 입력과 64비트 출력 핀을 각각 사용할 수 있다. 양방향 핀은 제공하지 않는다.

c. 메시지 포트/트랜잭터

통신 채널을 통해 수발한 메시지를 DUT에 맞게 풀어준다.


[그림출처] Standard Co-Emulation Modeling Interface (SCE-MI) Reference Manual v2.4

1-4. "내 칩 반도체 설계실"의 연동 에뮬레이션 체계

"내 칩 반도체 설계실"의 에뮬레이션 하드웨어의(프로토 타이핑, 칩 테스터) 구성은 아래와 같다.

a. Arduino DUE 모듈(또는 Raspberry Pi Pico)

워크스테이션의 테스트벤치(소프트웨어)와 FPGA(하드웨어) 사이의 통신 채널의 역할을 한다.

b. FPGA 모듈

Intel/Altera Cyclone IV 를 가진 FPGA 모듈이다.  RTL 로 기술된 DUT는 합성을 거쳐 FPGA에 구현된다.

아래 그림은 소프트웨어 테스트벤치와 하드웨어 에뮬레이터 사이의 연결도을 보여준다.

SCE-MI의 목적 중에는 고속 프로토 타이핑 이전의 RTL 검증 가속을 포함하지만 본 "설계실"의 하드웨어 에뮬레이션에서는 큰 의미를 갖지 않는다. 워크스테이션 PC와 하드웨어 사이의 구성 (SCE-MI Infrastructure)중 통신 채널로 USB/UART를 사용하고 있어서 속도를 기대하기 어렵다. 워크스테이션과 FPGA 사이에 교환되는 메시지가 싸이클 상세(Cycle Accurate)수준 일 경우 시뮬레이션 속도는 약 1Khz 미만이다.

통신 채널 제어기(Arduino DUE)에서 클럭을 생성하고 입출력 메시지를 이에 맞춘 시스템 상세(System Accurate) 수준에서 동작 속도는 ~100Khz 를 기대할 수 있다.

통신 채널 제어기에서 클럭과 일부 표준화된 입출력을 처리하고 시스템 수준 검증을 위한 대화형(interactive) 메시지만 규정할 경우 ~1Mhz 의 작동 속도를 거둘 수 있다.

검증을 완료하고 "내 칩 제작 서비스" MPW로 칩이 제작되어 나오면 FPGA 내에 구현되었던 DUT 대신 칩을 연결 하므로써 설계의 실증 시험을 할 수 있다.

2. 모델링 인터페이스/통신 채널 장치 제작

2-1. Arduino DUE 모듈 및 어댑터 보드

- 데이터 쉬트[바로가기]
- 회로도[바로가기]
- 보드 입출력 핀[바로가기]
- 보드 구매: 아듀이노는 기본적으로 오픈-소스 하드웨어다. 누구나 동일한 보드를 제작 판매할 수 있다. 일부 복제품 중에 납땜이 불량한 경우가 있으므로 너무 낮은 가격은 피하자.

어댑터 보드

- 회로도: [바로가기]
- 보드외형: [바로가기]
- PCB 거버 [바로가기]

전면 및 후면 조립 모습

헤더 핀을 기판 상하로 튀어나오게 해서 확장을 고려하였고 측정장치 프로브 클립을 물리기 용이하다.

양쪽으로 긴 헤더 핀이 없을 경우 길이 20mm를 구하여 가공해서 쓴다.

2-2. Raspberry Pi Pico 모듈 및 어댑터 보드

Raspberry Pi Pico 모듈을 모델링 인터페이스로 사용할 수 있다.

어댑터 보드

- 회로도: [바로가기]


3. 에뮬레이터 제작

3-1. FPGA: Intel/Altera Cyclone IV

- FPGA EP4CE6 정보[바로가기]
- 보드구매:

3-2. JTAG 다운로더

Digilent HS2와 호환하는 FPGA 다운로드 케이블이다. Xilinx FPGA 용 이지만 호환성이 뛰어나 범용 JTAG 케이블로 사용할 수 있다. Xilinx 및 Altera FPGA 다운로더로 사용한다.

케이블 구매:

3-3. 어댑터 보드

- 회로도 [바로가기]
- 보드외형[바로가기]


3-4. 조립


3-5. 레벨 쉬프터

FPGA와 Arduino DUE의 입출력 핀의 전압 특성은 3.3V다. "내 칩 제작 서비스" 고정의 입출력 특성은 5V다. 레벨 쉬프터는 이 전압차를 맞춰주기 위한 간단한 회로는 다음과 같다.

[출처] Sparkfun

4채널 레벨 쉬프터 모듈:

어댑터: 6장 이상 필요

- 회로도[바로가기]
- PCB 거버[바로가기]

3-6. 칩 테스트 소켓

- 28-Pin SOIC 소켓

4. 오실로스코프/로직 아날라이져 제작

4-1. 컨트롤러 보드: 라즈베리 파이 피코(W)

Scoppy:
https://oscilloscope.fhdm.xyz/

4-2. 프론트 엔드 보드

- 회로도[바로가기]
- PCB 거버[바로가기]

4-4. 기타 측정기/보조기

- USB 전압/전류 측정기

- USB 가변 전원공급기


- 디지털 멀티메터


- 오실로스코프


-로직 아날라이져

- USB 허브

5. 보드 시험

우분투 리눅스와 아듀이노 및 FPGA 도구가 설치된 컴퓨터가 준비되었다면 에뮬레이션 하드웨어를 시험해 보자.

5-1. 준비사항

- 우분투 리눅스[연구노트1]에 오픈-소스 반도체 설계 도구[연구노트2]들이 설치된 컴퓨터
- 에뮬레이션 도구들(Arduino, Vitis-HLS, Quartus)이 설치되어 있을 것[연구노트13]
-  에뮬레이션 하드웨어는 앞선 2~3장에서 설명 했다.

연동 에뮬레이션 하드웨어는 두가지 버젼으로 제작한다. 마이크로 컨트롤러를  Arduino DUE 모듈로 구성한 모습은 아래 사진과 같다.

Raspberry Pi Pico 모듈로 구성한 모습은 아래 사진과 같다.

a. FPGA JTAG 다운로더(openFPGALoader) 설치

FPGA를 프로그램 하는 오픈-소스 유틸리티다. 다양한 장치와 다운로드 케이블을 지원한다.

    $ cd ~/ETRI050_DesignKit/Tools/openFPGALoader

    $ bash openFPGALoader_build.sh

b. Arduino

    - Arduino CLI 가 설치되어 있을 것[연구노트13]
    - DUE와 Raspberry Pi Pico 보드 플랫폼이 설치되어 있을 것

아래 명령으로 현재 설치된 보드의 목록을 모두 볼 수 있다.

    $ arduino-cli board listall

Arduino DUE 또는 Raspberry Pi Pico를 USB 포트에 연결한다. 두 보드를 동시에 연결하지 않도록 한다. 아듀이노가 현재 연결된 보드를 인식하고 있는지 확인 한다.

    $ arduino-cli board list

    Port         Protocol Board Name   FQBN
    /dev/ttyACM0 serial   Arduino Due  arduino:sam:arduino_due_x_dbg

또는,

    $ arduino-cli board list

    Port         Protocol Board Name         FQBN
    /dev/ttyACM0 serial   Raspberry Pi Pico  rp2040:rp2040:rpipico

    - U8g2 라이브러리가 설치되어 있을  것

    $ arduino-cli lib list

    Name        Installed Available    Location Description
    DueFreeRTOS 10.1.1    -            user     -
    Scheduler   0.4.4     -            user     -
    U8g2        2.35.30   -            user     -


c. 리눅스에서 USB 장치 확인

현재 USB에 연결된 장치들의 목록을 보여주는 리눅스 명령은 lsusb 다.

    $ lsusb

    Foundation 1.1 root hub
    Bus 001 Device 006: ID 2341:003d Arduino SA Due Programming Port
    Bus 002 Device 004: ID 0403:6014 FTDI FT232H Single HS USB-UART/FIFO IC

또는,

    Bus 001 Device 055: ID 2e8a:000a Raspberry Pi Pico

FT232H는 JTAG 다운로드 케이블이다. 시리얼 포트는 리눅스(유닉스)에서 원격 터미널들을 연결하기 위해 사용하던 전통적인 주변장치다. 매우 오랜동안 사용되어 왔기 때문에 저장장치 만큼이나 운영체제 내에 잘 결합되어 있다. USB에 연결한 주변장치와 호스트 컴퓨터(리눅스)의 통신에 시리얼 포트를 활용하면 구동 소프트웨어를 별도로 제작할 필요없다. 컴퓨터에 주변장치를 새로 장착할 때마다 일으키는 구동 소프트웨어의 문제가 원천적으로 제거된 셈이다. 장치 구동 소프트웨어가 잘 발달되어 있기 때문에 이 장치를 사용하는 응용 프로그램 작성도 매우 쉽다. 아듀이노를 비롯하여 대부분 마이크로 컨트롤러의 개발(펌웨어 업로드, 디버깅)과 FPGA의 비트 파일 다운로드에 사용되는 JTAG 기능은 시리얼 포트가 활용되고 있다.

6-2. 예제 실행

예제 디렉토리로 이동,

    $ cd ~/ETRI050_DesignKit/Tutorials_New/3-3_FIR8_c_untimed_Vitis-HLS

준비된 Makefile이 있다. 간략한 사용법을 보자.

    $ make

    Vitis-HLS Project: fir

        make csynth
        make view_rpt
        make co-sim
        make clean

    * command-line variable HW_STYLE must be set before build

      HW_STYLE=[MACC | SHIFT | ARRAY] make csynth

        make emulation
        make ETRI050

    CC BY-NC, by GoodKook, goodkook@gmail.com

    $ make emulation

    Vitis-HLS Project: fir
      For Co-Emulation,
      (1) Build and Upload Modeling-Interface(Arduino-DUE)

            MI=[module] make build-mi
            MI=[module] make upload-mi
            make clean-mi

            * NOTE: module=[DUE_NORMAL|PI_PICO

      (2) Build and Config Transactor FPGA(Altera Cyclone-IV)

            make build-trans
            make config-trans
            make clean-trans

      (3) Build and Run Co-Emulator

            make co-emu

    CC BY-NC, by GoodKook, goodkook@gmail.com

예제 fir.cpp 를 고위 합성도구를 이용하여 RTL 로 합성한다. 이때 사용하는 도구는 Xilinx의 Vitis-HLS 다.

    $ make csynth

모델 인터페이스의 펌웨어를 Arduino DUE 용으로 빌드한다.

    $ MI=DUE_NORMAL make build-mi

또는, Raspberry Pi Pico 용으로 빌드한다.

    $ MI=PI_PICO make build-mi

모델 인터페이스 MI는 테스트 벤치와 FPGA에 구현된 DUT 사이를 연결한다. 통신 채널을 담당할 펌 웨어의 소스 코드는 Efir_CA.ino 다. PSCE_API로 표준화 되어 있다.

테스트벤치(소프트웨어)의 DUT 싸개는 Efir.h 다. USB 시리얼 포트(통신 채널)을 통해 FPGA의 하드웨어 DUT와 주고받을 입출력 프로토콜을 정의하고 메시지를 패키징 한다. 메시지 프록시(Message Proxy)다. FPGA 하드웨어의 메시지 트랜잭터(Message transactor)는 DUT의 싸개로서 fir_wrapper.v 다.

모델 인터페이스(아듀이노 펌웨어) 업로드,

    $ MI=DUE_NORMAL make upload-mi

또는,

    $ MI=PI_PICO make upload-mi

트랜잭터와 HLS 합성된 DUT를 묶어 에뮬레이터(Cyclone IV FPGA)로 빌드한다.

    $ make build-trans

에뮬레이터(Cyclone IV FPGA) 다운로드,

    $ make config-trans

에뮬레이터 실행,

    $ make co-emu

에뮬레이터가 작동 하지 않을 경우 모델 인터페이스 보드(마이크로 컨트롤러 모듈)를 리셋 시킨 후 재실행 한다.

연동 에뮬레이션을 실행하기 전에 두가지 마이크로 컨트롤러 모듈과 에뮬레이터 FPGA 의 구성 절차가 필요하다. 이 절차는 모두 Makefile에 작성되어 있다. 겉보기에 복잡해 보이지만 기본적인 이해 만으로도 Makefile 을 작성 할 수 있다[연구노트3].

7. 맺음말

하드웨어가 갖춰진 "설계실"이라면 반도체 설계와 시뮬레이션에 더하여 프로토 타이핑 검증과 테스트까지 망라한다. 설계를 FPGA 하드웨어에서 동작 시켜봄으로써 혹시 모를 소프트웨어 도구의 겸함에 대한 우려를 해소할 수 있다(오픈-소스 다!). 프로토 타이핑에 적용된 하드웨어는 향후 칩이 제작되어 패키지로 출고 되는 즉시 테스트를 수행 할 장비로 전환 될 수 있다.

오픈-소스 소프트웨어와 하드웨어를 사용하여 "내 칩"의 설계와 검증 그리고 실증 시험까지 실시할 수 있는 명실 상부한 "반도체 설계실"을 "내 책상"위에 꾸밀 수 있다. "내 칩 제작 서비스"는 MPW 방식으로 "내 칩"을 무료로 제작해준다. "내 칩" 만들기에 동참해보자.

"My Chip On My Desk"!