← 목록
기타 2026-06-21 4KB 읽기 4분

FPGA 세션1 최종정리 — 한선씨로 RTL부터 실 비트스트림까지

한 줄 요약

한선씨(한국어)로 기술한 회로가 오픈소스 플로우(yosys/nextpnr/ecppack)를 통해 iCE40(.bin)·ECP5(.bit) 두 칩 패밀리의 실 FPGA 비트스트림으로 합성·배치되고, iverilog 기능검증까지 자동으로 도는 완결된 생태계. 하드웨어만 꽂으면 원스탑 구동.

달성 (브리프 4단계 기준)

  • 1단계 오픈소스 합성 파이프라인: 한선씨 RTL → 합성가능 Verilog → 비트스트림 (왕복검증, 손-레퍼런스와 바이트동일)
  • 2단계 합성가능성 보장: 전단 가드(합성검사/합성가드.한선) + 정적 case LUT
  • 3단계 제약파일 생성기: 보드별 .pcf(iCE40)/.lpf(ECP5) 자동 생성
  • 4단계 실보드 데모: 비트스트림·플래시 경로 완비, 하드웨어 연결만 대기

회로 라이브러리 (전부 한선씨 → 비트스트림 검증)

회로경로검증
blinky/카운터/시프트/LUT직접 에미터(회로합성.한선)합성, blinky는 바이트동일 왕복
ALU/FSM/다중always회로방언(.회로)합성, 셀 동등성
UART tx/rx/echo회로합성.한선iverilog 5/5 바이트 에코 + 비트스트림
PWM/호흡등회로합성.한선iverilog duty 64/256 + 비트스트림
BRAM회로합성.한선write→read 3/3 + 블록RAM(SB_RAM40_4K) 추론
가산기(폭추론)회로방언 배선iverilog 200+100=300 절단없음

핵심 컴포넌트

  • 에미터 libs/회로합성.한선 — 프래그먼트 + 고수준 합성기(블링키/카운터/시프트/룩업/UART/PWM/BRAM) + .pcf
  • 회로방언 rtl/fpga/회로방언.한선.회로 → 합성가능 Verilog 트랜스파일러(블록스택, 다중always/중첩case·if/배선 폭추론). 전단 가드 자동.
  • 합성 가드 libs/합성가드.한선 — 나눗셈/초월함수/always내while 검출 → 비합성 회로 차단
  • 보드 레지스트리 libs/보드.한선 — 7보드(iCE40 4 + ECP5 3) 패밀리/디바이스/패키지/핀/프로그래머
  • 원스탑 드라이버 rtl/fpga/구동.sh — doctor/boards/probe/bringup/flash/run, ice40·ecp5 패밀리 분기
  • 회귀 합성.sh(합성, 다보드) + 시뮬.sh(iverilog 기능 5종)

툴체인 (doctor 전부 그린)

  • iCE40: yosys synth_ice40 / nextpnr-ice40 / icepack / iceprog (brew)
  • ECP5: yosys synth_ecp5 / nextpnr-ecp5(소스빌드 → /opt/homebrew/bin) / ecppack(prjtrellis) / openFPGALoader
  • 시뮬: iverilog/vvp

보드 도착 시 (원스탑)

bashcd /Users/ef/CrownyOS/crownyc/rtl/fpga
./구동.sh doctor                       # 준비도
./구동.sh probe                        # 보드 인식
./구동.sh bringup icestick             # iCE40 → .bin → LED
./구동.sh bringup ulx3s                # ECP5 → .bit → LED
./구동.sh run 에코.한선 icestick uart_echo myecho   # UART 에코 → 시리얼 터미널
상세: 하드웨어연결.md

한선씨 VM/도구 함정 (이 세션에서 축적)

  • 예약어 매개변수/변수명 불가: 신호(→버스), 오류(→오류수)
  • 이 hanseonc_high는 인라인 ; 주석을 코드로 파싱 → 인라인주석/한 줄 다중문장 금지
  • yosys 한글 식별자 거부 → 이름맵 ASCII
  • 한글 env명 bash 미전달 → ASCII(CIRCUIT/OUTV/BOARD)
  • output reg(tx/busy/dout) initial 초기화 없으면 시뮬 x 전파
  • ECP5 25F 패키지 = CSFBGA285(CABGA285 아님), openFPGALoader 보드명 orangeCrab(대문자)

잔여 (다음 세션)

  • 실보드 LED/UART/호흡등 육안 검증 (하드웨어)
  • orangecrab RGB LED 실제 SITE 보정(현재 placeholder)
  • UART 보드레이트 다양화, SPI/I2C, 더 큰 .회로(파이프라인 CPU)