2025년 10월 27일 월요일

un-timed vs. timed 모델링 인터페이스 실습

un-timed vs. timed 모델링 인터페이스 모델 실습

준비물:

    1. Raspberry PI Pico + 어댑터 보드
    2. Arduino DUE + 어댑터 보드

FIR 디지털 필터 알고리즘의 언-타임드 C++ 모델

환경변수 설정,

$ cd ~/ETRI050_DesignKit/Projects/HLS/FIR8

$ source env_settings

    #****************************************************************
    #* Environment setting for HLS, Co-Simulmatio/Emulation & ETRI050
    #****************************************************************
    Setting Environment variables as follows;
        PROJECT_DIR=~/ETRI050_DesignKit/Projects/HLS/FIR8
        TOP_MODULE=FIR8
        HW_STYLE=FIR_MAC_VERSION
        MODE=CA
        MI=DUE_NORMAL

언-타임드 C++ 모델 빌드,

$ cd c_untimed
$ make
    Makefile for un-timed C simulation of FIR8
        TOP_MODULE=FIR8 HW_STYLE=FIR_MAC_VERSION make build
        TOP_MODULE=FIR8 make run
        TOP_MODULE=FIR8 make clean

$ make build

    clang++ -I/opt/systemc/include -L/opt/systemc/lib \
     -o FIR8_TB \
     -DFIR_MAC_VERSION_SC \
     ./calcDFT.cpp ./cnoise.cpp ./FIR8.cpp ./FIR8_TB.cpp \
     -lsystemc -lgsl

언-타임드 모델 실행: 알고리즘 시뮬레이션 출력 저장

$ make run | tee result.txt

    ./FIR8_TB

        SystemC 3.0.2-Accellera --- Aug 19 2025 16:50:37
        Copyright (c) 1996-2025 by all Contributors,
        ALL RIGHTS RESERVED

    0 124 26.243 496 36.263
    1 90 13.222 1848 23.956
    2 124 11.542 4676 22.473
     ......
    4795 185 14.501 15444 24.305
    4796 59 13.516 15475 23.078
    4797 121 13.911 16278 23.623
    4798 109 11.542 16676 22.473
    4799 73 13.222 16634 23.956

시뮬레이션 데이터 가시화(파이썬)

$ python3 plotDFT.py

    plotDFT.py <TXT> <option>
         Plot graph from text file. <option> is one of followings,
            input, inputDFT, output, outputDFT

$ python3 plotDFT.py result.txt outputDFT

    Traceback (most recent call last):

      File ".../FIR8/c_untimed/plotDFT.py", line 32, in <module>
        y1.append(int(lines[1]))
                  ~~~~~^^^
    IndexError: list index out of range

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

* result.txt 파일에서 첫줄 삭제

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

$ python3 plotDFT.py result.txt input

$ python3 plotDFT.py result.txt inputDFT

$ python3 plotDFT.py result.txt output

$ python3 plotDFT.py result.txt outputDFT

타임드 인터페이스 모델

    인터페이스 모델 테스트벤치

        sc_FIR8_TB.h [링크]
        sc_FIR8_TB.cpp [링크]

    에뮬레이터 프록시

        EFIR8.h [링크]


모델링 인터페이스

a. Arduino DUE 에서 언-타임드 모델 실행

$ cd ~/ETRI050_DesignKit/Projects/HLS/FIR8/emulation/PSCE-MI

$ MODE=AL MI=DUE_NORMAL make build

   Linking Un-Timed model...
   arduino-cli compile --clean --fqbn arduino:sam:arduino_due_x_dbg \
   EFIR8_AL \
--build-path ./EFIR8_AL/build \
--build-property compiler.cpp.extra_flags=\
    "-DOLED_DISPLAY -DDUE_NORMAL -DUART_BPS=115200 -DCYCLONE_IV"\
    " -DFIR_MAC_VERSION"

    Error during build: Platform 'arduino:sam' not found:
                                        platform not installed

    Try running `arduino-cli core install arduino:sam`

    make: *** [Makefile:66: build] Error 1

설치된 코어보드 목록 보기

$ arduino-cli board listall

    Board Name                       FQBN
    Adafruit Circuit Playground      arduino:avr:circuitplay32u4cat
    Arduino BT                       arduino:avr:bt
    Arduino Duemilanove or Diecimila arduino:avr:diecimila

    .....

Atmel ARM 코어 개발 툴 설치

$ arduino-cli core update-index

    Downloading index: package_index.tar.bz2 downloaded

$ arduino-cli core install arduino:sam

    Downloading packages...
    arduino:arm-none-eabi-gcc@4.8.3-2014q1 downloaded
    arduino:bossac@1.6.1-arduino downloaded
    arduino:sam@1.6.12 downloaded
    Installing arduino:arm-none-eabi-gcc@4.8.3-2014q1...

    Configuring tool....
    arduino:arm-none-eabi-gcc@4.8.3-2014q1 installed
    Installing arduino:bossac@1.6.1-arduino...

    Configuring platform....
    Platform arduino:sam@1.6.12 installed

$ MODE=AL MI=DUE_NORMAL make build

   arduino-cli compile --clean --fqbn arduino:sam:arduino_due_x_dbg \
    EFIR8_AL \
    --build-path ./EFIR8_AL/build \
    --build-property compiler.cpp.extra_flags=\
    "-DOLED_DISPLAY -DDUE_NORMAL -DUART_BPS=115200 -DCYCLONE_IV"\
    " -DFIR_MAC_VERSION"

    In file included from
    .../HLS/FIR8/emulation/PSCE-MI/EFIR8_AL/PSCE_Config.h:33:0,
                 from
    .../HLS/FIR8/emulation/PSCE-MI/EFIR8_AL/EFIR8_AL.ino:6:
    .../HLS/FIR8/emulation/PSCE-MI/EFIR8_AL/PSCE_APIs.h:21:54:
                   fatal error: U8g2lib.h: No such file or directory

    #include <U8g2lib.h>        // OLED Display Libraries
                                                      ^

    compilation terminated.

    Used library Version Path
    Wire         1.0
    ~/.arduino15/packages/arduino/hardware/sam/1.6.12/libraries/Wire

    Used platform Version Path
    arduino:sam   1.6.12
    ~/.arduino15/packages/arduino/hardware/sam/1.6.12

    Error during build: exit status 1

    make: *** [Makefile:66: build] Error 1

u8g2 라이브러리 설치

$ arduino-cli lib install u8g2

    Downloading U8g2@2.35.30...
    U8g2@2.35.30 downloaded

    Installing U8g2@2.35.30...
    Installed U8g2@2.35.30

빌드,

$ MODE=AL MI=DUE_NORMAL make build

   arduino-cli compile --clean --fqbn arduino:sam:arduino_due_x_dbg \
    EFIR8_AL \
--build-path ./EFIR8_AL/build \
--build-property compiler.cpp.extra_flags=\
    "-DOLED_DISPLAY -DDUE_NORMAL -DUART_BPS=115200 -DCYCLONE_IV"\
    " -DFIR_MAC_VERSION"

    Sketch uses 35048 bytes (6%) of program storage space.
    Maximum is 524288 bytes.

USB에 연결된 장치 확인

$ lsusb

    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
    Bus 001 Device 003: ID 2341:003d Arduino SA Due Programming Port
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

인터페이스 모델 업로드

$ MODE=AL MI=DUE_NORMAL make upload

    arduino-cli upload -p /dev/ttyACM0 --fqbn  \
        arduino:sam:arduino_due_x_dbg EFIR8_AL \
        --input-file ./EFIR8_AL/build/EFIR8_AL.ino.bin

    Cannot perform port reset: 1200-bps touch: opening port at
        1200bps: Permission denied

    No device found on ttyACM0

    Failed uploading: uploading error: exit status 1

    make: *** [Makefile:91: upload] Error 1

$ ls -l /dev/ttyACM0

    crw-rw---- 1 root dialout 166, 0 Oct 27 17:22 /dev/ttyACM0

$ sudo chmod 666 /dev/ttyACM0

    [sudo] password for mychip: 

$ ls -l /dev/ttyACM0

    crw-rw-rw- 1 root dialout 166, 0 Oct 27 17:22 /dev/ttyACM0

$ MODE=AL MI=DUE_NORMAL make upload

    arduino-cli upload -p /dev/ttyACM0 --fqbn  \
    arduino:sam:arduino_due_x_dbg EFIR8_AL \
    --input-file ./EFIR8_AL/build/EFIR8_AL.ino.bin

    Atmel SMART device 0x285e0a60 found
    Erase flash
    Write 37140 bytes to flash (146 pages)
    [==============================] 100% (146/146 pages)
    done in 8.820 seconds
    Set boot flash true
    CPU reset.
    New upload port: /dev/ttyACM0 (serial)

언-타임드 모델 재사용 빌드 확인

$ ls -l EFIR8_AL

    total 8
    -rw-rw-r-- 1 mychip ... EFIR8_AL.ino
    lrwxrwxrwx 1 mychip ... FIR8.cpp -> ../../../c_untimed/FIR8.cpp
    lrwxrwxrwx 1 mychip ... FIR8.h -> ../../../c_untimed/FIR8.h

    ......

에뮬레이터 실행

$ make run

    ./sc_FIR8_TB

        SystemC 3.0.2-Accellera --- Aug 19 2025 16:50:37
        Copyright (c) 1996-2025 by all Contributors,
        ALL RIGHTS RESERVED

    Info: (I703) tracing timescale unit set: 100 ps (EFIR8.vcd)
    Request emulator connection......

make: *** [Makefile:73: run] Interrupt

모델링 인터페이스 보드 리셋

$ make run

./sc_FIR8_TB

        SystemC 3.0.2-Accellera --- Aug 19 2025 16:50:37
        Copyright (c) 1996-2025 by all Contributors,
        ALL RIGHTS RESERVED

    Info: (I703) tracing timescale unit set: 100 ps (EFIR8.vcd)
    Request emulator connection......
    Connection established...

    Info: (I703) tracing timescale unit set: 100 ps (sc_FIR8_TB.vcd)
    [   0] y=    0 Y=    0 OK
    [   1] y=    0 Y=  628 ERROR
    [   2] y=  628 Y= 2056 ERROR
    [   3] y= 2056 Y= 4941 ERROR
    [   4] y= 4941 Y= 8345 ERROR
    [   5] y= 8345 Y=11513 ERROR
    [   6] y=11513 Y=13553 ERROR
    [   7] y=13553 Y=14122 ERROR
    [   8] y=14122 Y=14180 ERROR
    [   9] y=14180 Y=14007 ERROR
    [  10] y=14007 Y=14480 ERROR
    ......
    [4793] y=15039 Y=15367 ERROR
    [4794] y=15367 Y=15031 ERROR
    [4795] y=15031 Y=14326 ERROR
    [4796] y=14326 Y=14271 ERROR
    [4797] y=14271 Y=14512 ERROR
    [4798] y=14512 Y=15436 ERROR
    [4799] y=15436 Y=15868 ERROR

    Info: /OSCI/SystemC: Simulation stopped by user.

출력 타이밍 변경,

void loop()
{
  psce.EMU_Blinker(0x40);   // Blinker speed
  psce.RxData(N_RX);

  y_ap_vld = ap_ready = ap_idle = ap_done = false;

  if (psce.rxByte[0] & C_AP_RST)
    cState = S_RESET;
  else
  {
    switch(cState)
    {
      case S_RESET:
        ap_idle = true;
        cState = S_IDLE;
        break;

      case S_IDLE:
        if (psce.rxByte[0] & C_AP_START)
          cState = S_READY;
        else
          ap_idle = true;
        break;

      case S_READY:
        ap_ready = true;
        cState = S_GET_INPUT;
        break;

      case S_GET_INPUT:
        x = psce.rxByte[1];
        cState = S_DONE;
        break;

      case S_DONE:
        y_ap_vld = ap_done = true;
        //FIR8(&y, x);
        cState = S_SET_OUTPUT;
        break;

      case S_SET_OUTPUT:
        cState = S_IDLE;
        FIR8(&y, x);
        break;
    }
  }

  psce.txByte[0] = 0x00;
  if (y_ap_vld) psce.txByte[0] |= C_Y_AP_VLD;
  if (ap_ready) psce.txByte[0] |= C_AP_READY;
  if (ap_idle)  psce.txByte[0] |= C_AP_IDLE;
  if (ap_done)  psce.txByte[0] |= C_AP_DONE;

  psce.txByte[1] = y;
  psce.txByte[2] = (y>>8);
  psce.TxData(N_TX);
}





2025년 10월 19일 일요일

라즈베리 파이 피코 활용, "내 칩" 테스트 장치(오실로스코프, 로직 아날라이져) 자작

라즈베리 파이 피코 활용,
"내 칩" 설계와 검증 그리고 테스트 장비 자작


1. Raspberry Pi PICO 보드 2개 (USB-C 타입 커넥터)

2. 어댑터 보드

왼쪽의 피코보드는 24채널 로직 아날라져 또는 "내 칩" 에뮬레이터-테스터 용이다.
오른쪽 피코보드는 2채널 아날로그-8채널 로직 오실로스코프다.

2-1. 회로도:

    https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK/blob/main/PSCE_API/Board/Raspberry_PICO/PI_PICO_SCH.pdf

2-2. PCB 거버:

    https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK/blob/main/PSCE_API/Board/Raspberry_PICO/Gender_Raspberry_PICO_Y3.zip

2-3. PCB 제작비:

    2천원(댓글 문의시 무상?)

2-4. 오실로스코프 프론트-엔드용 부품

    참조: https://oscilloscope.fhdm.xyz/wiki/Analog-Front-End

    Op Amp: MCP6002(8핀 DIP) x2
    다이오드: 1N4148 x4
    저항:  100옴(1/8w) x10, 680K옴(1/8w) x 2
    가변저항(트리머): 1M옴 x2
    커페시터(탄탈): 100n x3
    택트스위치: 4mm 소형 x2
    핀헤더: 수직(1열), 앵글(2열)
    핀헤더소켓: 수직(1열)

3. 조립

 

 

헤더 핀 긴 것으로 기판 양쪽으로 돌출 시키려면 가공과 조립이 다소 어렵지만 테스트 클립을 물리거나 확장할 때 매우 유용하다.


4. 소프트웨어: 오실로스코프와 로직 아날라이져

4-1. 피코 오실로스코프 펌웨어

    a. 참조:
        https://oscilloscope.fhdm.xyz/wiki/firmware-versions

    b. 펌웨어 다운로드:
        https://github.com/fhdm-dev/scpdl1/raw/master/a/v18/scoppy-pico-v18.uf2

    c. 오실로스코프 디스플레이 안드로이드 앱:
        https://play.google.com/store/apps/details?id=xyz.fhdm.scoppy
        * 1채널은 무료. 2채널을 사용하려면 앱 구입(약 5천원)

4-2. 로직 아날라이져:

    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

5. "내 칩" 검증 에뮬레이터-테스터 사용법

    a. 위의 두 앱은 자작파들 사이에 매우 잘 알려져 있어서 굳이 별도의 설명이 필요 없을만큼 차고 넘친다.

    b. 펌-웨어를 교체할 수 있으므로 FPGA 보드를 연결하여 칩 검증과 테스트 용도로 사용할 수 있다. 사용법은 디자인 킷 예제를 참조할 것.

    "내 칩 제작 서비스" 표준 셀 디자인 킷:
    https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK


2025년 10월 4일 토요일

MyChip MPW STD-II/디자인 킷 예제 pong_pt1 을 자가 실습

디자인 킷 예제 pong_pt1 을 자가 실습

이 설계는 "내 칩 제작 서비스" MPW 를 통해 칩으로 제작되어 테스트 결과 20개 시료에서 수율 100%가 나왔습니다. 디자인 킷의 깃 허브 저장소에서 Project/RTL/pong_pt1 예제가 오늘자(10월 9일)로 갱신 되었습니다. 링크는 아래와 같습니다.

https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK/tree/main/Projects/RTL/pong_pt1

자습과제는 다음과 같습니다.

1. 준비된 예제 pong_pt1 를 수행 하십시요. HOW-TO.txt 문서에 정리해 두었으니 그대로 따라하는데 어려움은 없을 것입니다.


* 에뮬레이션과 칩 테스트 부분은 하드웨어가 준비되지 않았다면 생략 하십시요.

2. 예제의 수행 절차가 디자인 플로우(아래 링크)의 어느 부분을 수행하는지 비교 하십시요.


3. RTL 시뮬레이션에 사용되었던 테스트 벤치가 네트리스트 시뮬레이션에서 재사용됩니다. 테스트벤치 재사용(Testbench Reuse)의 의미를 정리해 보십시요.

4. RTL 시뮬레이션에서 적용한 기법(베릴로그+SystemC)과 네트리스트 시뮬레이션(베릴로그 VPI+SystemC)의 기법을 비교하십시요.

5. 두 시뮬레이션으로 얻은 각각의 VCD 를 열어 어떤 차이가 있는지 확인 하십시요.

위 과제를 수행하고 각자 연구노트에 기록합니다. 토론 할 수 있도록 궁금한 점을 적어봅시다. 호기심이 발동 되었길 바랍니다.

베릴로그로 작성된 비디오 게임기를 테스트하기 위해 SystemC와 SDL2 게임 엔진 라이브러리를 활용한 테스트벤치로 검증 했고 이를 다시 FPGA로 프로토타이핑 검증 한 후,


MPW로 제작한 칩이 작동하는 모습은 아래와 같습니다.


칩 설계의 전 과정은 모두 내 책상 위에서 이루어 졌습니다.


참조: 기술노트 15: 내 책상위의 반도체 설계실 꾸미기[링크]









2025년 9월 28일 일요일

"내 칩" 위에 그림 넣기....

"내 칩" 위에 그림 넣기....

뉴욕 타임스 기사 입니다. 제목이 재미있군요.

Hidden Inside Our Electronics, Tiny Doodles From Another Era
https://www.nytimes.com/2025/08/12/technology/silicon-chips-doodles.html

첫 단락이 이렇게 시작됩니다.

Decades ago, designers etched microscopic doodles onto silicon chips to leave their marks. Now, techno-archaeologists search for the tiny fossils.

이 기사에 등장하는 분은 칩을 벋겨내서 확대 사진을 찍어 올리는 유명한 분입니다.

https://www.youtube.com/shorts/JvfHnt2z42g

ETRI050_DesignKit에 흑백 사진을 레이아웃으로 변환해 주는 도구가 포함되어 있어요. 아래 사진은 "내 칩 제작 서비스"의 MPW로 제작한 칩 한귀퉁이에 그림을 넣은 겁니다. 재미있을 것 같죠?

공학에도 유머와 위트가 넘칩니다.

"내 칩"에 "내 얼굴" 사진을 넣을 수도 있습니다. 먼 훗날 반도체 고고학 연구자가 "내 칩"에서 "내 얼굴"을 발견 할지도 모른다고 생각하면 셀레지 않을 수가 없습니다.


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 허브