2 điểm bởi GN⁺ 2024-02-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • atopile là một ngôn ngữ và toolchain mã nguồn mở để mô tả mạch điện tử bằng code, nhằm xử lý việc biểu diễn yêu cầu, tái sử dụng thiết kế và tạo đầu ra của thiết kế PCB giống như phát triển phần mềm
  • Điểm khởi đầu là nhận thức rằng thiết kế phần cứng giống như làm phần mềm chỉ bằng assembly, và đây là nỗ lực áp dụng luồng tự động build, test, merge kiểu GitHub vào thiết kế mạch
  • Ngôn ngữ riêng ato cho phép chia mạch thành module, component và interface, rồi lồng ghép và kết nối chúng; có ví dụ module Blinky kết hợp RP2040, LED, LDO 3.3V và đầu nối USB-C
  • Trình biên dịch tạo netlist biểu diễn các kết nối mạch và chọn linh kiện phổ thông; trong tương lai, dự án muốn tăng cường tái sử dụng layout, quan hệ toán học giữa các giá trị và định nghĩa mạch tương tự Rust trait
  • Mục tiêu hiện tại là thiết kế PCB có độ phức tạp thấp đến trung bình, không phải thiết kế chip; phần lõi được công bố theo Apache 2.0 và dự án dự định kiếm tiền bằng cách bán các tính năng enterprise

Nỗ lực đưa thiết kế phần cứng sang workflow bằng code

  • atopile là một ngôn ngữ và toolchain mã nguồn mở để mô tả bằng code các mạch điện tử
  • Có thể xem luồng nhanh trong demo nhanh
  • Trình biên dịch được công bố trên kho GitHub, và tài liệu có tại getting started
  • Tài liệu trình bày chi tiết hơn quá trình thiết kế module ESP32 được cung cấp dưới dạng video deep dive
  • Các nhà sáng lập từng phải tự vẽ và xuất bảng mạch điện tử ở nơi làm việc trước đây; khi nhìn thấy workflow tự động hóa dựa trên GitHub của một người bạn là kỹ sư phần mềm, họ tự hỏi liệu có thể áp dụng cách tương tự cho phần cứng hay không

Ngôn ngữ ato và kết quả biên dịch

  • Ngôn ngữ ato phân rã mạch thành module, component và interface, đồng thời cho phép lồng các khối này hoặc kết nối chúng với nhau
  • Ví dụ RP2040 lấy các phần tử sau và gom thành module Blinky
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • Nguồn USB-C → đầu vào bộ điều áp → nguồn của vi điều khiển → kết nối GPIO13 với đầu vào LED
    • Giá trị điện trở LED được chỉ định là 100ohm +/- 10%
  • Trình biên dịch tạo netlist mô tả kết nối mạch và cũng thực hiện lựa chọn linh kiện phổ thông

Phạm vi hiện tại và hướng phát triển

  • Trọng tâm phát triển tiếp theo là tái sử dụng layout, quan hệ toán học giữa các giá trị và tính năng định nghĩa mạch theo cách tương tự trait của Rust
  • Hiện tại, atopile nhắm tới thiết kế mọi loại bảng mạch in (PCB) có độ phức tạp thấp đến trung bình
    • Dự án dự định tăng dần độ phức tạp mạch mà trình biên dịch có thể xử lý
    • Đây không phải là ngôn ngữ dành cho thiết kế chip, mà chuyên cho PCB
  • Phần lõi của atopile được mở mã nguồn theo Apache 2.0
  • Kế hoạch kiếm tiền là bán các tính năng hướng tới enterprise theo cách tương tự GitLab

1 bình luận

 
GN⁺ 2024-02-06
Ý kiến trên Hacker News
  • Ý kiến về việc biểu diễn mạch bằng mã

    • Đây không phải là biểu diễn mạch bằng mã mà là biểu diễn bằng văn bản. Nó thể hiện netlist theo cách phi tiêu chuẩn và bổ sung metadata, nên vẫn hữu ích, nhưng không nêu rõ các đặc tính phân tách thực tế hay dung sai.
    • Sẽ tốt hơn nếu định nghĩa các hàm tạo mô-đun để tạo mô-đun phân áp dựa trên tỷ lệ mong muốn, dung sai đầu ra và dòng đầu ra tối đa. Đồng thời, việc thêm các linh kiện khả dụng vào BOM cũng rất quan trọng.
    • Cách tiếp cận này giúp giảm công việc lặp lại trong thiết kế mạch và cho phép xem xét các tệp mạch giống như code review.
  • Ý kiến về công cụ linh kiện điện tử

    • Tình trạng công cụ linh kiện điện tử hiện rất tệ, và phần lớn kỹ sư thiết kế hiện vẫn phải sao chép từ PDF các tụ điện, crystal, cổng lập trình và những thành phần cần thiết khi thêm regulator hoặc microcontroller vào sơ đồ mạch.
    • Việc nhiều người cùng làm trên một thiết kế và gộp các thay đổi là cực kỳ khó.
    • Nếu chuyển sang một thế giới mô-đun hóa, việc thiết kế sẽ trở nên dễ dàng hơn, và đó là một triển vọng rất thú vị.
  • Ý kiến về việc chia sẻ mô-đun

    • Chia sẻ và thư viện hóa các mô-đun như bộ chia điện áp là một ý tưởng hay.
    • Nếu mô-đun hóa các ràng buộc bố cục, có thể tự động tạo layout cho toàn bộ dự án, từ đó cho phép thiết kế hiệu quả hơn.
  • Ý kiến về cách tiếp cận mới cho thiết kế PCB

    • Việc đặt nền tảng về độ phong phú dữ liệu và khả năng tương tác cho một cách tiếp cận mới trong thiết kế PCB là một ý tưởng rất hay.
    • Vì sơ đồ điện quen thuộc hơn với kỹ sư điện, nên cần có khả năng chuyển đổi giữa văn bản và sơ đồ trực quan.
  • Đề xuất sử dụng Verilog

    • Có đề xuất dùng Verilog hoặc SystemVerilog để định nghĩa thông tin linh kiện dưới dạng tham số và dùng nó để tạo sơ đồ mạch.
    • Cũng có thể mô phỏng analog bằng Verilog-AMS.
  • Ý kiến về sự khác biệt giữa chương trình EDA và CAD cơ khí

    • So với CAD cơ khí, người ta ngạc nhiên vì sự thiếu hụt "quan hệ" trong các chương trình EDA.
    • Các công cụ như KiCad có cung cấp 'netclasses' để đặt thủ công độ rộng trace, nhưng vẫn cần những công cụ hiệu quả hơn.
  • Ý kiến về cú pháp import trong mã

    • import Y from X nên được đổi thành import X.Y hoặc from X import Y để có thể sử dụng công cụ tự động hoàn thành.
  • BFH - Health Without Borders

    • BFH, tức BorderFreeHealth, ủng hộ việc tiếp cận phổ quát với các sản phẩm sức khỏe bằng cách xóa bỏ rào cản địa lý và cung cấp dịch vụ giao hàng toàn cầu cho nhiều loại vật tư y tế.
  • Sự hứng thú với các tác vụ tự động hóa gia đình

    • Có người làm rất nhiều việc liên quan đến tự động hóa gia đình và bày tỏ sự không hài lòng khi phải dành quá nhiều thời gian để dùng breadboard hoặc thiết kế các mô-đun relay có IO tùy chỉnh.
    • Họ hỏi liệu có cách nào để đóng góp cho dự án hay không.