- atopile은 전자 회로를 코드로 기술하는 오픈소스 언어·툴체인으로, PCB 설계의 요구사항 표현, 설계 재사용, 산출물 생성을 소프트웨어 개발처럼 다루려 함
- 출발점은 하드웨어 설계가 어셈블리만으로 소프트웨어를 만드는 일처럼 느껴졌다는 문제의식이며, GitHub식 자동 빌드·테스트·머지 흐름을 회로 설계에도 적용하려는 시도임
- 자체 언어 ato는 회로를 모듈, 컴포넌트, 인터페이스로 나누고 중첩·연결할 수 있게 하며, RP2040·LED·3.3V LDO·USB-C 커넥터를 조합한 Blinky 모듈 예시가 있음
- 컴파일러는 회로 연결을 나타내는 netlist를 만들고 범용 부품을 선택하며, 앞으로는 레이아웃 재사용, 값 사이의 수학적 관계, Rust trait과 유사한 회로 정의를 강화하려 함
- 현재 목표는 낮은~중간 복잡도의 PCB 설계이고 칩 설계용은 아니며, 코어는 Apache 2.0으로 공개하고 엔터프라이즈 기능 판매로 수익화를 계획함
하드웨어 설계를 코드 워크플로로 옮기려는 시도
- atopile은 전자 회로를 코드로 설명하기 위한 오픈소스 언어와 툴체인임
- 빠른 흐름은 빠른 데모에서 볼 수 있음
- 컴파일러는 GitHub 저장소에 공개되어 있고, 문서는 getting started에서 확인할 수 있음
- ESP32 모듈 설계 과정을 더 자세히 다룬 자료는 deep dive 영상으로 제공됨
- 창업자들은 이전 직장에서 전자 회로 기판을 직접 그리고 내보내야 했고, 소프트웨어 엔지니어 친구의 GitHub 기반 자동화 워크플로를 보며 같은 방식을 하드웨어에도 적용할 수 있는지 고민함
ato 언어와 컴파일 결과
- ato 언어는 회로를 모듈, 컴포넌트, 인터페이스로 분해하고, 이 블록들을 중첩하거나 서로 연결할 수 있게 함
- RP2040 예시는 다음 요소를 가져와
Blinky모듈로 묶음RP2040KitLEDIndicatorBlueLDOReg3V3USBCConn- USB-C 전원 → 전압 레귤레이터 입력 → 마이크로컨트롤러 전원 → GPIO13과 LED 입력 연결
- LED 저항값은
100ohm +/- 10%로 지정함
- 컴파일러는 회로 연결을 설명하는 netlist를 만들고, 범용 부품 선택도 수행함
- 관련 설명은 cloud components 글에서 다룸
현재 범위와 개발 방향
- 다음 개발 초점은 레이아웃 재사용, 값 사이의 수학적 관계, Rust의 trait과 비슷한 방식으로 회로를 정의하는 기능임
- 현재 atopile은 낮은~중간 복잡도의 모든 종류의 인쇄 회로 기판(PCB) 설계를 대상으로 함
- 컴파일러가 처리할 수 있는 회로 복잡도는 점진적으로 높일 계획임
- 칩 설계용이 아니라 PCB 전용 언어임
- atopile 코어는 Apache 2.0으로 오픈소스화됨
- 수익화는 GitLab과 비슷하게 엔터프라이즈 대상 기능을 판매하는 방식으로 계획됨