2026년 1월 20일 화요일

"내 칩" 에뮬레이션 검증 키트: 조립과 시험(칩 테스터 편)

"내 칩" 에뮬레이션 검증 키트: 조립과 시험(칩 테스터 편)

"내 책상 위에서 내 칩 설계(MyChip-on-MyDesk)"

- "내 칩" 에뮬레이션 검증 키트: 자재 목록 [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (측정기 편) [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (에뮬레이터 편) [링크]

목차:

1. 테스트: "내 칩" 설계의 완성 
2. PSCE-TESTER 회로도와 부품
3. PSCE-TESTER 보드 조립
4. PSCE-MI/TRANS/TESTER 동작 시험

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

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

1. 테스트: "내 칩" 설계의 완성

"내 칩 제작 서비스[링크]"는 ETRI 반도체 실험실의 0.5um Si-CMOS 공정을 활용한 MPW 파운드리 서비스다. 칩 공정은 물론 패키지까지 무료로 제공한다. MPW는 연 4회에 걸쳐 진행된다. 각고의 노력 끝에 설계한 "내 칩"을 몇개월에 걸친 기다림 끝에 마침내 내 손에 받아들었다. 그냥 들여다 보자고 공을 들인 것이 아니다. 내가 설계한 IC 부품을 내 책상 위에서 내 손으로 테스트 해보자. 설계한 의도대로 작동 하는지 봐야 비로서 "내 칩"이라고 드러내 말할 수 있다.

2. PSCE-TESTER 회로도와 부품


3. PSCE-TESTER 보드 조립

3-1. 2열 28핀 직각 헤더 소켓, 1열 14핀 헤더 소켓(2개)

- 우측의 2열 28핀 직각 헤더 소켓은 PSCE-TRANS에 연결
- 중앙의 1열 14핀 암 헤더 소켓(2개)은 28핀 SOP 테스트 소켓을 꼽을 자리


3-2. 28핀 SOP 테스트 칩 장착

- MPW로 제작된 SOP28 패키지의 "내 칩" 테스트 소켓에 장착

"내 칩"을 테스트 소켓에 주의하여 장착한다.

3-3. PSCE-MI/TRANS/TESTER 를 모두 결합

아래 사진은 PSCE-MI/TRANS/TESTER를 모두 결합한 모습이다. PSCE-MI의 측정기 부분에 피코 W(와이파이 모듈)가 장착되었다. 안드로이드 휴대전화를 로직스코프의 시현 장치로 사용중이다.

4. "내 칩"동작 시험

디자인 킷에 준비된 예제를 실행 하여 "내 칩"을 테스트 한다. 테스트 대상 칩은 "내 칩 제작 서비스"의 MPW를 통해 제작된 "내 칩" 샘플이다. 아래에 설명하는 절차는 윈도우즈 WSL에 우분투 리눅스 24.04를 기준으로 한다. 아울러 오픈-소스 설계 도구와 알테라 FPGA용 쿼터스가 설치된 경우다.

4-1. 모델링 인터페이스 펌웨어 빌드

모델링 인터페이스 펌웨어를 빌드하는 방법은 "에뮬레이터 편[링크]"과 동일하다.

    $ make build-mi

4-2. "내 칩" 트랜잭터 빌드

DUT가 "내 칩"으로 제작 되었으므로 FPGA에는 트랜잭터 만 들어간다.

    $ make build-tester

4-3. 모델링 인터페이스 펌웨어 업로드

피코에 모델링 인터페이스 펌웨어를 업로드 하는 절차는 "내 칩" 에뮬레이션 검증 키트: 에뮬레이터 편[링크]의 4-2절과 같다. 에뮬레이션의 테스트 벤치를 칩 테스트에서도 동일하게 사용할 것이다.

    $ make upload-mi

4-4. "내 칩" 테스트 트랜잭터 구성

JTAG 다운로드 케이블이 인식 되었는지 확인 후 칩 테스트 용 트랜잭터를 FPGA에 구성,

    $ make config-tester

4-5. "내 칩" 테스트 에뮬레이션 실행

에뮬레이션 테스트벤치 실행,

    $ make co-emu

"내 칩"은 FPGA의 트랜잭터를 통해 테스트벤치와 입출력을 주고 받는다. 따라서 테스트벤치의 입장에서 타깃이 되는 하드웨어가 FPGA에 구현된 DUT인지 MPW를 거쳐 제작된 "내 칩"인지 구분하지 않아도 된다. 베릴로그 기능 검증에서 사용했던 테스트벤치를 에뮬레이션과 칩 테스트에 이르기까지 재사용 하였다. SystemC로 작성된 테스트 벤치가 검증의 대상이 되는 DUT의 추상화 수준의 정도를 따지지 않는 "시스템 수준"의 검증 방법이다.




베릴레이터의 장단점(Pros & Cons Verilator)

베릴레이터의 장단점(Pros & Cons Verilator)

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

디지털 반도체 설계에서 검증의 제일선에 자리하는 도구는 하드웨어 언어 시뮬레이터다. 그런데  ETRI050 디자인 킷[링크]의 예제들을 수행하다 보면 베릴레이터(Verilator)라는 도구가 사용되고 있음을 발견 하게 된다. 정통(전통?) HDL 설계자에게 어쩌면 생소할 이 도구는 레지스터 트랜스퍼 수준(RTL)의 베릴로그 기술(description)을 C++ 또는 SystemC로 변환하는 언어 번역기다. 예제에서 왜 이 툴을 채택했을지 의문을 가져봤을 것이다. 오픈-소스로서 "무료" 사용이 가능 했기 때문 만은 아니다. 이미 상용 HDL 시뮬레이터[*]가 무상 라이센스 정책을 실시하고 있는 마당에 굳이 "언어 변환기"를 사용하는 이유를 디자인 킷 개발자의 취향이라고 한다면 단순한 답변이다.

[*] QuestaSim은 베릴로그, 시스템 베릴로그, VHDL은 물론 SystemC/C++를 모두 아우르며 언어 표준을 가장 넓은 범위로 지원하는 강력한  상용 HDL 시뮬레이터다. 인텔(intel)에서 지멘스 EDA(옛 멘토그래픽스, 그 이전에는 모델텍의 ModelSim)로부터 라이센스를 받아 무상으로 배포하고 있다. FPGA의 양대 벤더 중 하나인 알테라가 인텔에 합병되면서 라이센스 배포권이 인텔로 옮겨갔다. 또 다른 FPGA 벤더인 자일링스도 한 때 ModelSim 라이센스를 배포하기도 했으나 지금은 중지하고 자사의 XSIM을 무상 배포하고 있다. 

베릴레이터의 홈페이지에 들러 그들의 주장을 들어보자.

https://www.veripool.org/verilator/

이 툴은 베릴로그와 시스템 베릴로그 언어를 읽어 C++와 SystemC로 변환해 준다. 변환된 C++ 소스는 GNU C++ 컴파일러로 빌드할 수 있어서 실행 속도가 매우 빠르다고 한다. 이미 많은 설계 회사들에서 사용하고 있는 충분히 믿을 만한 도구라고 자랑한다. 오픈-소스 도구로서 누구든 스스로 빌드[**]해서 쓰던가 비용을 지불하면 개별 지원(Commercial Support)을 받을 수 있단다.

[**] x86/64 머신 뿐만 아니라 ARM 32/64 등 리눅스의 GNU C++ 컴파일러가 설치된 리눅스 머신에서 빌드할 수 있다.

상이한 하드웨어 구조를 가진 컴퓨팅 기계 사이의 이식성은 원시 코드가 그대로 배포되는 "오픈-소스"의 장점이다. 이는 "리눅스"라는 역시 오픈-소스 운영체제와 "빌드 툴" 덕분이다. 수많은 상용 C++ 컴파일러를 물리치고 개발 툴 전장을 평정한(!) GNU의 개발 툴은 이제 C++ 언어 표준을 이끌고 있다[link].  C++는 알고리즘 기술의 표준으로서 각종 크래스들 역시 ANSI C++언어 표준으로 제정되었다. 자료구조 라이브러리의 표준 크래스 STL(Standard Template Library)도 그중 하나다. SystemC는 시스템 수준 하드웨어 및 소프트웨어 모델링을 위해 개발된 C++ 용 오픈-소스 크래스 라이브러리로서 IEEE 표준 1666으로 제정되었고 현재  2023 개정판이 있다[SystemC LRM].

자체 사건구동(event-driven) 실행 체계(병렬 시뮬레이션 엔진)를 갖추고 그 위에서 작동되는 상용 HDL 시뮬레이터에 비해 언어 변환기를 통해 얻은 C++ 를 컴파일 하면 실행 속도가 빨라지는 것은 당연하다 하겠다.  언어변환기 "베릴레이터"를 선호한 이유가 속도만은 아니다. 상용 도구들의 정책 전환을 예상하기 어렵다는 점도 있다. 일순간 무료 라이센스 정책을 중단 하지는 않겠지만 해당 툴의 개발 방향 전환을 외부인으로써 예측이 어렵다는 점이다. 컴퓨팅 언어는 지속적으로 변화 발전하고 있고 빌드 툴 역시 이에 따른다. HDL도 예외는 아니다. 상용 HDL 시뮬레이터는 SystemC를 지원하하기 위해 GNU 빌드 툴들을 내장하고 있다. SystemC의 버젼이 3.x로 전환된지 몇년이 지났지만 상용 시뮬레이터에 내장된 버전은 2.x이며 C++ 빌드 툴 역시 구버젼이다. 이에 덧붙여 그동안 수없이 쌓아온 각종 과학기술 및 데이터 시각화 라이브러리들을 테스트벤치에 활용하려면 하드웨어 언어 표준에서 제정한 외부 언어 인터페이스 기준(PLI/VPI, DPI/UVM,  VHPI)을 따라야 한다는 점도 부담이다. 차라리 HDL을 표준 C++ 언어로 변환하여 다른 라이브러리(심지어 모든 컴퓨팅 언어를 포함)와 손쉽게 묶어 빌드하는 편이 수월하다. 게다가 우리는 C++ 라는 개발 언어에 너무나 익숙하지 않았던가! GDB와 DDD 같은 디버깅 도구들의 장점은 더 말할 필요도 없다. C++는 운영체제 자체를 만든 도구이며 수많은 컴퓨팅 언어들이 이로부터 파생되었다. C++ 라면 컴퓨터에서 할 수 있는 모든 짓을 할 수 있다! 심지어 임의의 주변장치를 달아 구동할 수 있는 장치 구동기(device driver)의 제작도 매우 수월하다. FPGA 하드웨어를 SystemC 테스트벤치 소프트웨어에 엮어 검증하는 코-에뮬레이터(Co-Emulator)를 단 몇줄의 C++ 코드로 구현한다는 점은 엄청난 장점이라 하지 않을 수 없다.

        이럼에도 불구하고 우리는 왜 상용 툴을 찾고 있는가?

요즘 뜬다는 제미나이 AI에게 베릴레이터의 장단점을 얘기해 달라고 했더니 이렇단다. AI가 내놓은 답변 속에서 이 질문의 답을 찾아보자. AI에게 싫컷 물어봤는데 뭔말인지 모른다면 그보다 슬픈일은 없을 것이다. 단, AI는 베릴레이터를 사용해본 당사자가 아니라는 점을 잊지말자. 이 장단점은 인터넷상의 누군가 경험과 주장을 요약해 놓았을 뿐이다. 그 "누군가"에 대한 신뢰성은 알아서 판단하자.

Verilator is a high-performance, open-source compiler that converts Verilog/SystemVerilog code into C++ or SystemC models for simulation. It is widely used for SoC-level, large-scale simulations, offering superior speed compared to traditional event-driven simulators, but it has specific limitations regarding language constructs and modeling techniques. 

Pros of Verilator

Extremely Fast Simulation: Verilator compiles Verilog into executable C++, often outperforming proprietary simulators by converting designs into optimized, multithreaded models.

Cost & Licensing: It is free and open-source (LGPL/Artistic license), allowing for unlimited parallel regression tests without license costs.

Performance Scaling: It scales well on a single machine and supports multithreading.

Integration with C++/SystemC: It allows for easy integration of C++ testbenches and DPI (Direct Programming Interface) calls, making it ideal for high-level modeling.

Code Quality Checks: It performs linting during compilation, helping to identify potential bugs early.

Cons of Verilator

Limited SystemVerilog/Verilog Support: It primarily supports synthesizable code and does not support full SystemVerilog IEEE standards, such as behavioral delay modeling (#10).

Two-State Simulation: It operates on a 2-state logic system (0/1), lacking native support for 4-state simulation (X/Z/U/W), which can make debugging initialization issues harder.

No Mixed-Language Support: It does not support VHDL or mixed-language simulations directly.

No Encrypted IP Support: It cannot handle encrypted IP cores, limiting its use in environments heavily reliant on vendor-provided IP.

Setup Complexity: Testbenches must be written in C++ or SystemC, which requires more effort than writing testbenches in Verilog/SystemVerilog. 

Summary Table

Summary Comparison (2026)

Feature   Verilator                   Commercial(VCS/Questa/Xcelium)
-------   --------------------------- ------------------------------
Cost      Free/Open Source            Very High (Per-seat license)
Logic     2-State (0,1)               4-State (0,1,X,Z)
Speed     Excellent(Compiled C++)     Varies(Interpreted or Compiled)
Testbench C++,Python,SystemC          SystemVerilog(UVM),VHDL
Use Case SoC logic,Unit tests,       Final sign-off, Gate-level,
          RISC-V                      Mixed-signal

Best Use Case: Large-scale SoC verification
Weakness: Behavioral simulation, Analog modeling

"오픈-소스"가 제아무리 장점이 많아도 "회사"에서 안쓴다면 그만이다. 베릴레이터를 사용한다는 회사들의 목록을 보면 꽤나 진취적이거나 스타트-업들이다. 우리가 아는, 반도체 시장을 좌지우지 한다는 그 회사는 보이지 않는다.  사실 유명 EDA 벤더들의 설계 검증용 에뮬레이터의 판매 공략 대상업체에서도 찾아보기 어렵다. 메모리 시장 호황에 미래를 맞겨도 될까?


2026년 1월 18일 일요일

"내 칩" 에뮬레이션 검증 키트: 조립과 시험(에뮬레이터 편)

"내 칩" 에뮬레이션 검증 키트: 조립과 시험(에뮬레이터 편)

"내 책상 위에서 내 칩 설계(MyChip-on-MyDesk)"

- "내 칩" 에뮬레이션 검증 키트: 자재 목록 [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (측정기 편) [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (칩 테스터 편) [링크]

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

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

목차:

1. 에뮬레이션 검증
2. PSCE-TRANS 회로도와 부품
3. PSCE-TRANS 보드 조립
    3-1. 2열 40핀 직각 헤더 핀, 2열 5핀 직각 헤더 소켓 (3개)
    3-2. 2열 24핀 헤더 소켓(2개)
    3-3. FPGA 모듈 결합
4. PSCE-MI/TRANS 보드 점검
    4-1. 보드 결합 및 전원 인가시 점검
    4-2. 피코 모듈의 외장 디스크 인식
    4-3. JTAG 다운로드 케이블 인식
    4-4. FPGA 모듈 인식
5. PSCE-MI/TRANS 동작 시험
    5-1. WSL 리눅스에서 윈도우즈 USB 장치 사용
    5-2. 예제 "FIR_PE" 에뮬레이션 실행

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

1. 에뮬레이션 검증

반도체 설계의 검증으로 널리 사용되는 방법은 시뮬레이션이다. 앞으로 제작될 칩을 재구성 가능한 하드웨어(FPGA)로 구현하여 소프트웨어 테스트벤치에 연동시키는 에뮬레이션 기법도 널리 활용된다. 칩 에뮬레이션은 시뮬레이션 보다 빠른 동작속도를 거두기 위한 목적 이었으나 통신 채널의 병목으로 실제로 이를 달성하기는 어렵다. 차라리 인 써킷 에뮬레이션(ICE, In-Circuit Emulation)에 준하는 패스트 프로토 타이핑이 효과적이다. 그럼에도 에뮬레이션 방법이 활용되는 이유를 생각해 보자.

행위 수준에서 기술된 하드웨어 모형이 칩으로 제작되려면 설계 자동화 도구에 의한 합성의 과정을 거쳐야 한다. 높은 수준의 기능(행위) 모델을 디지털 회로의 네트리스트로 합성하면서 급격한 추상화 수준의 변화가 발생한다. 기능 시뮬레이션에서 검증 되었더라도 합성으로 얻은 네트리스트 검증은 필수다. 에뮬레이션은 기능 시뮬레이션에 사용되었던 시스템 수준 테스트 벤치를 합성으로 얻은 네트리스트의 검증에 그대로 적용하기(테스트벤치 재사용) 위한 방법 중 하나다. 계산상 많은 부담을 주는 네트리스트 시뮬레이션에 비해 효과적일 뿐만 아니라 실제 하드웨어를 구동하므로서 높은 검증 신뢰도를 확보할 수 있다[*]. 뿐만 아니라 에뮬레이션으로 구축된 검증 환경은 향후 칩이 출고되었을 때 테스트를 수행 할 수 있는 장치로 신속하게 전환될 수 있다.

[*] 시뮬레이터, 합성기, 컴파일러 등 설계 자동화 도구들은 매우 정교한 "소프트웨어"다. 수많은 테스트(regression test)를 거쳐 출시되었더라도 소프트웨어 "버그"로부터 자유롭지 못하다. 게다가 우리는 스스로 만들어 쓰는 '오픈-소스' 도구들을 사용하려고 한다. 따라서 "교차 검증"은 선택이 아닌 필수다.

- MI: Modeling Interface
- TRANS: Transactor

임의 입출력을 가진 "내 칩"의 검증용 하드웨어(에뮬레이터)를 구성하는 방법에 있어서 도구의 표준화가 필요하다(Custom I/O vs. Std. Emulation). 에뮬레이터는 '설계도구'로서 DUT 마다 상이한 입출력에 대응해야 하며 설계 과정에서 지속적으로 변경되는 입출력과 디버깅 신호의 추가 삭제가 용이해야 한다. PSCE-MI/TRANS는 칩 에뮬레이션을 위한 유연한(표준화된) 하드웨어 개발 체계(에뮬레이션 API)를 갖췄다. 고도의 검증 기법을 "내 책상 위"에서 수행 할 수 있다.

[참조1] SCE-MI(Standard Co-Emulation Modeling Interface) [link]
[참조2] RTL/pong_pt1: FPGA 에뮬레이션 [링크]

2. PSCE-TRANS 회로도와 부품

* PSCE-MI 보드 회로도[링크]
** FPGA 모듈 회로도[링크]

3. PSCE-TRANS 보드 조립

3-1. 2열 40핀 직각 헤더 핀, 2열 5핀 직각 헤더 소켓 (3개)

- 좌측의 2열 40핀 직각 헤더는 "My Chip" 테스트 용
- 우측 2열 5핀 직각 헤더 소켓은 PSCE-MI에 연결

3-2. 2열 24핀 헤더 소켓(2개)

- FPGA 모듈 결합용 헤더 소켓

3-3. FPGA 모듈 결합

보드 결합:

    a. 피코(Pico) 모듈을 에뮬레이션 모델링 인터페이스(PSCE-MI) 쪽 헤더 소켓에 꼽는다.
    b. 조립한 PSCE-TRANS 보드에 FPGA 모듈을 결합한다.
        FPGA는 인텔/알테라의 싸이클론 IV로서[링크],
            - 약 6천개의 로직 엘리먼트
            - 270Kbit 내장 메모리를 가지고 있다.
    c. PSCE-MI 보드와 PSCE-TRANS 보드를  결합한다.
        * 3개의 2열 5핀 헤더가 엇나가지 않도록 주의

USB 포트 연결:

    d. PSCE-MI에 장착된 피코 모듈의 USB-C는
        - 테스트벤치 소프트웨어와 DUT 하드웨어 사이의 통신을 처리한다.
        - 피코 모듈의 RP2040 칩에 내장된 USB 시리얼 통신 장치다.
    e. PSCE-TRANS에 장착된 FPGA 모듈의 USB-C는
        - FPGA의 전원 공급용이다.
        - FPGA 모듈 상에 시리얼 통신 칩(CH340)을 가지고 있으나 사용하지 않는다.
    f. JTAG 다운로더 케이블을 FPGA 모듈에 연결한다.
        - JTAG 다운 로더는 FT232H 칩을 사용한 시리얼 통신 장치다.
        - JTAG 케이블 명칭은 digilent_hs2 다.

전원 확인:
    g. FPGA 모듈의 전원 스위치(Power S/W)를 눌러 전원 LED가 켜짐을 확인한다.
    h. FPGA에 다운로드 되지 않았으므로 Conf_Done은 꺼져 있다.

4. PSCE-MI/TRANS 보드 점검

4-1. 보드 결합 및 전원 인가시 점검

위의 3-3 절차에 따라 PSCE-MI 와 PSCE-TRANS 보드를 결합하고 USB를 통해 전원 인가 후 상태를 점검한다.

- 3개의 USB 장치(PSCE-MI의 피코, PSCE-TRANS의 FPGA 전원, JTAG 케이블)가 PC와 연결되어야 한다.
- PSCE-MI의 피코 모듈 상의 "Emulation Ready"는 켜지지 않을 수 있다.
- PSCE-TRANS의 FPGA 모듈의 "Conf_Done"은 꺼져 있어야 한다.

4-2. 피코 모듈의 외장 디스크로 인식

피코 모듈에 응용 프로그램(에뮬레이션 인터페이스)을 적재하려면 외장 드라이브로 인식 되어야 한다.

응용 프로그램이 적재되지 않았을 경우(공장 출하 상태) 운영체제는 피코 모듈을 외장 드라이브로 인식한다. 운영체제의 파일 탐색기에서 "RPI-RP2" 드라이브가 보이지 않을 경우 피코 모듈의 boot(피코의 흰색 버튼)와 동시에 PSCE-MI 보드의 리셋(좌측 적색 버튼)을 누른다.

4-3. JTAG 다운 로드 케이블 인식

윈도우즈의 파워쉘(또는 명령창)을 관지자 권한으로 실행한 후 프롬프트에서 list 명령을 주고 usbipd 를 실행 한다. JTAG 다운로드 케이블 장치의 VID:PID 는 0403:6014, DEVIDE 명은 USB Serial Converter 다. 시리얼 통신 장치로 인식되는 이유는 FT232H 칩을 사용하여 제작되었기 때문이다. BUSID는 컴퓨터의 USB 포트 인식 번호다. USB 허브의 사용에 따라 달라진다. 하지만 USB 장치의 벤더 번호(VID)와 프로덕트 번호(PID)는 고유하다.

4-4. FPGA 모듈 인식

PSCE-TRANS의 FPGA는 USB-C를 통해 전원 공급 받는다. 시리얼 통신 칩 CH340과 연결되어 있지만 사용하지 않는다. 적색 LED가 켜져 FPGA에 전원이 인가 되었는지 확인한다.

5. PSCE-MI/TRANS 동작 시험

디자인 킷에 준비된 예제를 실행 하여 에뮬레이션 키의 조립을 점검한다. 아래에 설명하는 절차는 윈도우즈 WSL에 우분투 리눅스 24.04를 기준으로 한다. 아울러 오픈-소스 설계 도구와 알테라 FPGA용 쿼터스가 설치된 경우다. 

5-1. WSL 리눅스에서 윈도우즈 USB 장치 사용

윈도우즈 운영체제에 얹어진 WSL에서는 USB 장치를 직접 접근 할 수 없다. usbipd는 본 운영체제(Host OS)와 가상 머신(Guest OS) 사이의 장치 공유를 가능케 해주는 유틸리티다. 참고로, 두 운영 체제 사이의 장치 공유는 IP 네트워크를 통한다(Socket-IPC로 IP 데몬과 클라이언트).

a. USB 장치 공유

usbipd의 list 명령으로 장치 목록을 나열해 본다. 만일 JTAG 케이블의 상태가 "Not shared"라면 이를 공유 시켜야 한다. 공유 절차는 아래와 같다.

b. USB 장치를 WSL의 리눅스에 연결

장치를 공유 시키기 위한 bind 는 관리자 권한을 가져야 하지만 연결 attach는 일반 권한의 명령 프롬프트에서도 가능하다. 장치 연결할 WSL 리눅스가 먼저 실행 중이어야 한다.

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

장착된 USB 장치들을 나열하는 리눅스 명령은 lsusb 다. JTAG 케이블이 VID와 PID가 0403:6014인 FT232H USB-UART/FIFO IC로 나열되었음을 확인할 수 있다 .

5-2. 예제 "FIR_PE" 에뮬레이션 실행

디자인 킷의 예제 "FIR_PE"를 수행하여 조립한 에뮬레이션 키트을 점검한다. 에뮬레이터의 작동(조립 상태)을 점검하기 위한 목적이므로 예제의 설계 내용은 설명하지 않는다.

a. 예제 디렉토리로 이동 후 프로젝트 환경변수 설정

    $ cd ~/ETRI050_DesignKit/Projects/RTL/FIR_PE

    $ source env_settings

    $ make

b. C/C++ 알고리즘과 RTL의 병합 시뮬레이션 수행

    $ make csim

    $ make co-sim

c. 에뮬레이션 준비(MI 펌웨어 및 TRANS 빌드)

에뮬레이션 환경 구축을 위해 아래와 같이 make 를 실행한다.

    $ make emulation

이어서 모델링 인터페이스 빌드(피코 펌웨어 컴파일)하고,

    $ make build-mi

DUT와 트랜잭터를 빌드(FPGA 용 베릴로그 합성과 배선) 한다.

    $ make build-trans

d. 모델링 인터페이스(MI) 펌웨어 업로드

모델링 인터페이스 펌웨어를 올리려면 피코 모듈은 외장 드라이브로 인식되어야 한다(위의 4-2절 참조). 윈도우즈에서 외장 드라이브로 인식된 피코 모듈을 다시 리눅스 드라이브 장치로 마운트 시킨다. 아래의 예는 피코 모듈이 윈도우즈 운영체제에서 F: 드라이브로 인식된 경우다.

    $ sudo mount -t drvfs f: /dev/f

모델링 인터페이스 펌웨어를 피코로 업로드,

    $ make upload-mi

펌웨어가 업로드 되면 피코는 즉시 리부팅 되어 외장 디스크에서 사라지고 시리얼 포드로 인식된다. 파워 쉘 프롬프트에서 usbipd list 명령으로 인식된 장치를 확인 할 수 있다. 피코의 VID와 PID는 2e8a:000a다. 처음 연결이라면 bind 한 후 모델링 인터페이스 장치로 부팅된 피코를 WSL 리눅스에 연결 attach 한다.

리눅스의 lsusb 명령으로 USB 장치들을 나열하면 다음과 같다. JTAG 케이블과 Raspberry Pi Pico 가 연결되어있는 것을 확인 할 수 있다.

e. FPGA를 DUT를 감싼 트랜잭터로 구성

FPGA에 DUT 트랜잭터를 구성(configure)한다.

    $ make config-trans

f. 에뮬레이터 실행

   $ make co-emu

에뮬레이션을 실행 하면서 ERROR 를 보게 되더라도 당황하지 말자. 에뮬레이션 하드웨어가 작동하지 않았다면 이 메시지가 나오지도 않는다.

이로써 에뮬레이터의 모델링 인터페이스(PSCE-MI)와 트랜잭션 장치(PSCE-TRANS)가 잘 작동 하는 것으로 확인 되었다. 다음은 MPW 를 통해 제작된 "내 칩"의 테스트를 해보기로 한다.


"내 칩" 에뮬레이션 검증 키트: 조립과 시험(측정기편)

"내 칩" 에뮬레이션 검증 키트: 조립과 시험 (측정기 편)

"내 책상 위에서 내 칩 설계(MyChip-on-MyDesk)"

- "내 칩" 에뮬레이션 검증 키트: 자재 목록 [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (에뮬레이터 편) [링크]
- "내 칩" 에뮬레이션 검증 키트: 조립과 시험 (칩 테스터 편) [링크]

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

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

목차:

1. PSCE-MI(Modeling Interface)/측정기 사양
2. 회로도와 부품
3. 조립
    3-1. 가장 낮은 높이의 부품부터 조립
    3-2. 직각 헤더 핀 , 8핀 IC 소켓, DIP 스위치
    3-3. 가변저항
    3-4. 택트 스위치
    3-5. 스트레이트 헤더핀, 헤더 소켓
    3-6. 기판 아랫면에 직각 헤터핀(2열 5핀)
    3-7. 테스트 후크(전선 가공)
4. PSCE-MI 보드 테스트 (측정기 용도편)
    4-1. 라즈베리 파이 피코 모의 용도
    4-2. Scoppy 오실로스코프 테스트
    4-3. 로직 아날라이져

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

1. PSCE-MI(Modeling Interface)/측정기 사양

    - 2채널 아날로그 스코프
    - 8/16 채널 로직 스코프
    - 측정 표시는 안드로이드 휴대전화 또는 태블릿

2. 회로도 및 부품

3. 조립

3-1. 가장 낮은 높이의 부품(저항 및 다이오드)부터 조립

    - 다이오드: 1N4148 x4 (방향에 주의)
    - 저항:  220옴 x8, 100옴(1/8w) x2, 680K옴(1/8w) x 2

3-2. 직각 헤더 핀 , 8핀 IC DIP 소켓, DIP 스위치

4-3. 가변 저항(1M옴)

4-4. 택트 스위치(4x4mm)

4-5. 스트레이트 헤더핀, 헤더 소켓

라즈베리 파이 피코 모듈을 꼽을 수 있는 헤더 소켓이 2곳이다. 우측은 측정기 용, 좌측은 에뮬레이션 용이다. 측정기 용으로 와이-파이 버젼 피코 모듈을 사용할 수 있다.

4-6. 기판 아랫면에 직각 헤터핀(2열 5핀)

헤더 핀은 보드의 하면에 붙인다.

4-7. 테스트 후크

5. PSCE-MI 보드 테스트 (측정기 용도편)

5-1. 라즈베리 파이 피코 모의 용도

PSCE-MI 보드에 2개의 피코 모듈을 사용 할 수 있다. 용도는 다음과 같다.

    - 에뮬레이션 모델링 인터페이스:
        FPGA에 구성된 DUT 하드웨어 와 PC/리눅스의 테스트벤치 소프트웨어 인터페이스
    - 측정기:
        아날로그 오실로 스코프 또는 로직 아날라이져

* 배포한 부품 상자(키트)에는 1개의 피코 모듈 만 포함되어 있다. 측정 용도의 피코 모듈은 선택 옵션이다. USB(유선) 또는 와이파이(무선)이 가능하다.
** 피코 모듈의 모델링 인터페이스 테스트는 에뮬레이터 편에서 설명한다.

5-2. Scoppy 오실로스코프 테스트

안드로이드 앱 "Scoppy"는 휴대장치(휴대전화 또는 태블릿)을 오실로 스코프의 표시기로 사용한다. 

a. Scoppy 오실로스코프 펌웨어 다운로드

    - Scoppy 참조:  https://oscilloscope.fhdm.xyz/wiki/firmware-versions
    - 펌웨어 다운로드:
        PICO: https://github.com/fhdm-dev/scpdl1/raw/master/a/v18/scoppy-pico-v18.uf2
        PICO W: https://github.com/fhdm-dev/scpdl1/raw/master/a/v18/scoppy-picow-v18.uf2

b. 피코 모듈을 측정기 헤더 소켓에 결합(사진의 황색 상자)

c. PC의 윈도우즈 파일 탐색기에서 "RPI-RP2" 디스크로 인식된다. 드라이브 문자는 형편에 따라 달라질 수 있다.

만일 디스크로 인식되지 않을 경우 위의 사진처럼 피코 모듈의 흰색 버튼(Boot)를 누른 후 PSCE-MI 보드의 리셋(Reset) 버튼을 누른다.

d. 앞서 내려받은 Scoppy 펌 웨어를 "RPI-RP2" 드라이브에 복사한다.

피코 모듈은 펌 웨어가 복사되는 즉시 리부트 되어 윈도우즈 디스크에서 사라지고 펌웨어의 기능을 수행한다. 리부트된 피코 모듈은 USB 장치 시리얼 포트로 인식된다.

e. 안드로이드 휴대전화(또는 태블릿)에 오실로스코프 디스플레이 안드로이드 앱 Scoppy 를 설치한다.

        https://play.google.com/store/apps/details?id=xyz.fhdm.scoppy
        * 1채널은 무료. 2채널을 사용하려면 앱 구입(약 5천원)

f. 피코 모듈의 USB를 안드로이드 휴대기기에 연결 한다. USB-C 젠더가 필요할 수 있다.

안드로이드 기기에서 Scoppy 앱을 실행하면 위의 사진 처럼 스코프가 동작하는 화면을 보게될 것이다. Scoppy 앱의 사용법과 설치는 아래의 링크에서 찾아본다.

    https://oscilloscope.fhdm.xyz/

5-3. 로직 아날라이져(옵션)

피코 모듈은 Scoppy 앱 외에도 다양한 측정기 용도로 응용될 수 있다. 디지털 설계에서 가장 많이 활용되는 계측 장치는 로직 아날라이져다. PC의 윈도우즈 응용 프로그램을 표시장치로 활용한다.

    a. 깃허브: https://github.com/gusmanb/logicanalyzer
        * 펌 웨어와 응용 프로그램 소스가 제공되지만 미리 컴파일된 바이너리 사용

    b. 펌웨어:
        https://github.com/gusmanb/logicanalyzer/releases/download/v6.0.0.0/logic-analyzer-firmware_v6.0.0_BOARD_PICO.zip

    c. 소프트웨어:
        https://github.com/gusmanb/logicanalyzer/releases/download/v6.0.0.1/all-in-one_6.0.0.1-win-x64.zip

    * 주의: 아날라이져 기능은 파이썬 3.13 이하 버젼을 지원한다.