# 순수 실리콘 데모 코딩: CPU도 메모리도 없이 4천 게이트만으로 구현

> Clean Markdown view of GeekNews topic #25225. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25225](https://news.hada.io/topic?id=25225)
- GeekNews Markdown: [https://news.hada.io/topic/25225.md](https://news.hada.io/topic/25225.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-21T17:32:37+09:00
- Updated: 2025-12-21T17:32:37+09:00
- Original source: [a1k0n.net](https://www.a1k0n.net/2025/12/19/tiny-tapeout-demo.html)
- Points: 2
- Comments: 1

## Topic Body

- **Tiny Tapeout 8** 데모 대회에서 약 4천개의 논리 게이트만으로 **VGA 그래픽과 1비트 오디오**를 출력하는 두 가지 ASIC 데모를 제작  
- 첫 번째 작품은 **3D 체커보드, 별 배경, 스크롤 텍스트, 음악**을 포함한 전통적 데모씬 스타일의 인트로로, **CPU·RAM 없이 순수 상태기계**로 구현  
- 두 번째는 **Nyan Cat 애니메이션**으로, 640x480 VGA와 **비디오 동기화된 오디오**를 사용해 한 타일 내에 거의 모든 회로를 집적  
- 모든 시각·음향 효과는 **Verilog 기반 논리 회로**로 직접 생성되며, **삼각파·펄스파 합성기, LFSR 노이즈, 시그마-델타 DAC** 등 최소 자원으로 음악을 재현  
- **Efabless의 파산으로 제조가 중단**되었으나, 이후 칩이 복구되어 실제 하드웨어에서 완벽히 동작함이 확인됨  

---

### TT08 인트로 데모
- 배경 **별 필드**, **3D 체커보드**, **파도치는 스크롤 텍스트**와 그림자 효과를 포함한 그래픽 구성  
  - VGA 해상도 1220x480, 48MHz 클럭 사용  
  - **Verilator 시뮬레이션**으로 C++ 변환 후 SDL 창에 렌더링하여 영상 생성  
- **플립플롭 293개**, 총 **3374 셀** 사용으로 면적 한계에 근접  
  - 폰트 인코딩이 게이트 면적을 많이 차지해 색상값은 포기하고 **대각선 스트라이프 패턴**으로 대체  
- **ROM 없이 데이터 인코딩**을 위해 논리 게이트로 직접 패턴을 표현  
  - Yosys 합성 파이프라인이 **truth table을 표준 셀로 변환**  
  - 데이터 복잡도보다 **주소에 따른 알고리듬적 단순성**이 면적 절감에 유리  
- **사인파 스크롤러**는 테이블 없이 벡터 회전으로 구현  
  - Minsky의 **symplectic integrator** 방식으로 원형 궤적 생성  
- **체커보드 평면 투영**은 고정소수점 연산으로 구현  
  - `recip16` 모듈이 y좌표의 역수를 계산해 **원근 변환** 수행  
  - XOR 연산으로 색상 패턴 생성, 드럼 비트에 맞춰 평면 높이 변화  

### 그래픽 세부 요소
- **그림자 효과**는 스크롤 텍스트를 평면 좌표계로 투영해 색상 비트를 쉬프트  
- **별 배경(Starfield)** 은 LFSR로 각 스캔라인별 난수 생성  
  - 프레임 카운터와 결합해 별의 위치·속도 결정, 스네어 드럼 타이밍에 맞춰 꼬리 길이 변화  

### 음악 합성
- **ABACABAD 구조**의 반복 패턴으로 논리 게이트 중복 최소화  
- **세 개의 채널** 구성  
  - 노이즈+지수 감쇠(스네어)  
  - 사각파 아르페지오(멜로디/코드)  
  - 삼각파+지수 감쇠(킥/베이스)  
- **시그마-델타 DAC**으로 오디오 출력  
  - PWM 대신 누산기 캐리 비트를 출력해 단순 구현  
- **Crooner (C64 SID)** 곡의 코드 진행을 차용  
  - 8음계 기반, 2옥타브 범위, 비트 단위 아르페지오  
  - 템포를 15·25틱으로 교차해 스윙 리듬 구현  

### 회고
- 오디오와 비디오 클럭을 분리한 설계로 **음악-영상 싱크 불일치** 발생  
- 1220x480 비표준 해상도 선택으로 **LCD 표시 품질 저하**  
- CRT에서는 자연스러운 디더링 효과가 있으나 디지털 캡처에서는 왜곡 발생  

### Nyan Cat 데모
- **Tiny Tapeout 8 마감 직전 제작**, 640x480 VGA와 60Hz 동기 오디오 사용  
  - 원본 GIF에서 프레임·팔레트를 추출해 RGB222로 디더링 변환  
  - **LFSR 기반 별 배경** 재사용  
- **음악 데이터**는 MIDI 파일을 파싱해 8음계로 리맵  
  - 베이스/킥 채널과 멜로디 채널 두 개만 사용  
  - 각 프레임 시작 시(60Hz) **지수 감쇠 엔벨로프** 적용  
- **25% 듀티 사이클 펄스파**로 멜로디 생성  
  - 옥타브별 상위 비트를 선택해 주파수 조정  
  - 저역 통과 필터 추가로 음색 조정  

### 제조 및 결과
- Tiny Tapeout 8은 2024년 9월 제조 착수 후 **Efabless 파산**으로 중단  
  - 2025년 하반기 새 운영팀이 칩을 회수해 배포  
- 실제 칩 테스트에서 **모든 디자인이 정상 동작**  
  - Donut 데모만 클럭을 45MHz로 낮춰야 안정적  
- **Nyan Cat 데모**는 LCD와 CRT 모두에서 완벽히 재생  
  - Bitluni의 유튜브 라이브에서 시연됨  

### 마무리
- 1년 이상 기다린 끝에 **실제 실리콘에서 완벽히 구동되는 데모** 확인  
- Tiny Tapeout 환경에서 **CPU·RAM 없이 순수 논리 회로로 시각·음향 효과를 구현한 사례**  
- 향후 더 발전된 **저레벨 하드웨어 데모 기법** 개발 계획 언급

## Comments



### Comment 48077

- Author: neo
- Created: 2025-12-21T17:32:37+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46337438) 
- 컴퓨터공학 전공이지만 컴퓨터엔지니어링에도 관심이 있어서, 이런 **레트로 렌더링 아키텍처**를 직접 만들어보고 테이프아웃까지 해보고 싶음  
  단순하지만 정말 재미있는 구조라서 이런 프로젝트가 너무 마음에 듦  
  - 작성자처럼 **시뮬레이션부터 시작해서 FPGA로 넘어가는 방식**을 추천함  
    FPGA만으로도 꽤 멀리 갈 수 있음. 직접 SoC를 설계할 수 있다는 게 항상 짜릿함  
    예를 들어 “I2C 포트가 9개 필요하네?” 하면 그냥 블록 복사해서 붙이면 됨.  
    소프트웨어에서 느린 연산이 있으면 하드웨어 가속기를 직접 만들 수도 있음  
  - 인터넷이 이런 **소규모 관심 커뮤니티**를 연결해주는 게 놀라움  
    모두가 연결되면서 문화가 획일화되는 면도 있지만, 전 세계 몇십 명이 이런 멋진 대회를 위해 모일 수 있다는 게 대단함  

- 그리드가 킥드럼에 맞춰 **맥동하는 연출**이 마음에 듦. 세심한 터치가 좋음  

- 인용된 **HAKMEM sin/cos 생성기**의 장기 안정성이 궁금해서 찾아봤음  
  관련 개요는 [이곳](https://news.ycombinator.com/item?id=3111501)에 있음  
  (정확한 산술 조건하에서는 안정적이라고 함)  
  우연히도 지난주에 올린 [Verlet integration 영상](https://news.ycombinator.com/item?id=46253592)과도 관련이 있음  
  - 특정 조건에서는 정확하게 동작함. 같은 **수학적 트릭**을 쓰는 셈임  
    나도 그 영상을 유튜브 추천으로 봤는데 꽤 즐거웠음  

- 대학 시절이 떠오름 — “**하드웨어와 소프트웨어는 논리적으로 동등하다**”는 말이 생각남  
  - 하드웨어 작성은 소프트웨어 작성과 비슷하지만, **병렬성은 훨씬 싸고 실수는 훨씬 비쌈**  

- 정말 인상적인 작업임. 예전에 JS demoscene, 특히 dwitter를 자주 했는데 이건 완전히 다른 수준임  
  이 댓글 덕분에 확인해보니 [TinyTapeout](https://tinytapeout.com/)이 다시 살아났다는 걸 알게 됨  

- Tiny Tapeout으로 **FPAA**를 만들어보고 싶지만, 할당된 영역에 맞지 않을 것 같음  
  - TT에서는 추가 비용을 내면 **멀티 블록 디자인**도 가능함  

- “No x, no y, just z” 같은 패턴이 **ChatGPT**에서 자주 쓰이다 보니, 이제는 일반 사용자들까지 쓰기 시작한 듯함  
  - 언어는 유동적임. LLM의 부정적인 면도 많지만, 이런 **언어적 변화**는 무해하다고 생각함  
  - 사실 나도 초등학교 때 반장 선거 구호로 “no x, no y, just z” 같은 문구를 썼던 기억이 있음  
  - 어쩌면 ChatGPT가 오히려 **일반 사용자의 표현을 학습한 것**일 수도 있음  

- 예전에 직업학교에서 **핀볼 머신을 수리하던 시절**이 떠오름. 좋은 추억임  

- 정말 멋짐!  

- 현재 **Open Shuttle**을 보니, 프로젝트에서 4KB SRAM 라이선스를 쓰려면 $2500이 필요함  
  대신 Wishbone Bus 인터페이스가 포함되어 있음  
  > 1024x32 Commercial SRAM  
  > CF_SRAM_1024x32  
  > Commercial SRAM: 1024 words x 32 bits (4KB) with Wishbone Bus interface  
  > Area: 0.17mm²  
  > License: Commercial - $2500 per project
