2 ポイント 投稿者 GN⁺ 2024-02-06 | 1件のコメント | WhatsAppで共有
  • 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 に近い形で、エンタープライズ向け機能を販売する方式を計画している

1件のコメント

 
GN⁺ 2024-02-06
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を備えたリレーモジュールを設計したりするのに多くの時間を費やしていることへの不満がある。
    • プロジェクトに貢献できる方法があるかと尋ねている。