2P by GN⁺ | ★ favorite | 댓글 1개
  • 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 모듈로 묶음
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • USB-C 전원 → 전압 레귤레이터 입력 → 마이크로컨트롤러 전원 → GPIO13과 LED 입력 연결
    • LED 저항값은 100ohm +/- 10%로 지정함
  • 컴파일러는 회로 연결을 설명하는 netlist를 만들고, 범용 부품 선택도 수행함

현재 범위와 개발 방향

  • 다음 개발 초점은 레이아웃 재사용, 값 사이의 수학적 관계, Rust의 trait과 비슷한 방식으로 회로를 정의하는 기능임
  • 현재 atopile은 낮은~중간 복잡도의 모든 종류의 인쇄 회로 기판(PCB) 설계를 대상으로 함
    • 컴파일러가 처리할 수 있는 회로 복잡도는 점진적으로 높일 계획임
    • 칩 설계용이 아니라 PCB 전용 언어임
  • atopile 코어는 Apache 2.0으로 오픈소스화됨
  • 수익화는 GitLab과 비슷하게 엔터프라이즈 대상 기능을 판매하는 방식으로 계획됨

댓글과 토론

Hacker News 의견
  • 회로를 코드로 표현하는 것에 대한 의견

    • 이것은 회로를 코드로 표현하는 것이 아니라 텍스트로 표현하는 것임. 비표준적인 방식으로 넷리스트를 나타내고 메타데이터를 추가하는 것으로, 유용하긴 하지만 실제 분할 특성이나 허용 오차 등은 명시되지 않음.
    • 모듈 생성 함수를 정의하여 원하는 비율, 출력 허용 오차, 최대 출력 전류를 기반으로 분배 모듈을 생성하는 것이 바람직함. 또한, 가능한 구성 요소를 BOM에 추가하는 것도 중요함.
    • 이러한 접근 방식은 회로 설계의 반복 작업을 줄이고, 코드 리뷰와 같이 회로 파일을 검토할 수 있게 함.
  • 전자 부품 도구에 대한 의견

    • 전자 부품 도구의 상태가 매우 나쁘며, 대부분의 설계자들이 회로도에 레귤레이터나 마이크로컨트롤러를 추가할 때 필요한 캐패시터나 크리스탈, 프로그래밍 포트 등을 PDF에서 복사하는 것이 현재의 기술 상태임.
    • 여러 사람이 동일한 설계 작업을 하고 변경 사항을 병합하는 것은 매우 어려움.
    • 모듈화된 세계로 이동하면 설계가 더 쉬워질 것이며, 이는 매우 흥미로운 전망임.
  • 모듈 공유에 대한 의견

    • 전압 분배기와 같은 모듈을 공유하고 라이브러리화하는 것은 좋은 아이디어임.
    • 레이아웃 제약 조건을 모듈화하면 전체 프로젝트의 레이아웃을 자동으로 생성할 수 있으며, 이는 효율적인 설계를 가능하게 함.
  • PCB 설계에 대한 새로운 접근 방식에 대한 의견

    • PCB 설계에 대한 새로운 접근 방식을 위한 데이터 풍부함과 상호 운용성의 기초를 마련하는 것은 멋진 아이디어임.
    • 전기 회로도가 전기 엔지니어에게 더 친숙하므로 텍스트와 시각적 회로도 간에 전환할 수 있는 기능이 필요함.
  • Verilog 사용 제안

    • Verilog나 SystemVerilog를 사용하여 부품 정보를 매개변수로 정의하고, 이를 이용해 회로도를 생성하는 것이 제안됨.
    • Verilog-AMS를 사용하여 아날로그 시뮬레이션도 가능함.
  • EDA 프로그램과 기계 CAD의 차이에 대한 의견

    • 기계 CAD에 비해 EDA 프로그램에서는 "관계"의 부족에 놀람.
    • KiCad와 같은 도구는 수동으로 트레이스 너비를 설정하는 'netclasses'를 제공하지만, 더 효율적인 도구가 필요함.
  • 코드 임포트 구문에 대한 의견

    • import Y from X는 자동완성 도구를 사용할 수 있도록 import X.Y 또는 from X import Y와 같은 방식으로 변경되어야 함.
  • BFH - Health Without Borders

    • BFH, 즉 BorderFreeHealth는 지리적 장벽을 없애고 다양한 의료 용품의 글로벌 배송을 제공하는 보편적인 건강 제품 접근을 지지함.
  • 홈 자동화 작업에 대한 열정

    • 홈 자동화 작업을 많이 하며, 빵판을 사용하거나 맞춤형 IO가 있는 릴레이 모듈을 설계하는 데 많은 시간을 소비하는 것에 대한 불만이 있음.
    • 프로젝트에 기부할 수 있는 방법이 있는지 물음.