シリーズ全体を読む
この記事は、Quilterの物理法則に基づくレイアウト自動化を使い、NXP i.MX 8M Mini搭載コンピューターを再現した過程を詳しく紹介するシリーズの一部です。
Quilterでは、手作業の設計に数日から数週間かかっていた基板が数分で生成されるようになったとき、電子機器の開発がどのように変わるのか、日々考えています。
2月にQuilterを初めて公開したとき、特によく寄せられた意見の1つが「Quilterは遅すぎる」でした。当時、平均的なジョブでは、最初の成功した候補が返されるまでに2〜3時間、すべての候補の探索を終えるまでに約4〜8時間かかっていました。
Quilterを一晩動かす必要があると、反復を通じて学び、発見するためのツールとしての有用性は大きく下がります。そこで、公開以来、「数分でPCB設計」という約束を実現するため、Quilterの性能向上に注力してきました。
本日は、Quilterのコンパイラに対する2回目の大幅な高速化をお知らせします。大域配線サブモジュールを再構築したことで、配線がさらに4倍高速化し、Quilterの平均ジョブ時間が<1時間になりました。

<1時間で数十の選択肢
4月のブログ記事をお読みになった方は、Quilterが5つの主要サブモジュールで構成され、すべてのレイアウトジョブの配置、配線、後処理を担っていることを覚えていらっしゃるかもしれません。
同じ基板にも配線方法は無数にあるため、ほぼ無限の探索空間から最良の解を見つけることは、部品配置よりも配線のほうがはるかに困難です。社内ベンチマークにもそれが表れており、公開当初、Quilterに送信された平均的なジョブでは、配線がジョブ時間の約70%を占めていました。
4月にリリースした最初の大幅な配線の高速化は、局所配線サブモジュールの再構築によるものでした。このモジュールは、配線経路の指定と障害物の回避を担います。PythonからネイティブのC++へ実装し直すことで、配線を6.7倍高速化し、平均ジョブ時間を3.6分の1に短縮しました。
続く改善として、大域配線計画サブモジュールも全面的に再構築しました。これは、主要な配線をどのようにまとめ、基板のどの領域に通すかを決めるモジュールです。

この再構築により、次のような結果が得られました。
- 配線時間 については、公開当初に対する高速化が6.7倍から → 27倍になりました
- ジョブの総所要時間 については、公開当初に対する高速化が3.6倍から → 9.4倍になりました
最も重要なのは、これにより、典型的な成功ジョブでは50以上の異なる設計を探索し、DRC違反がなく100%完了した候補を20件生成できるようになったことです。しかも、すべて1時間未満で完了します。
Quilterは、一晩かけて使うだけのツールではなくなりました。全社会議や昼休みの間にも設計を探索できるようになり、プロの電気エンジニアにとって、設計パートナーとしての有用性が大きく高まりました。
高速化を実際の価値につなげる
今回の高速化を本当に役立つものにするには、Quilterは優れた設計を生成しなければなりません。単に完了した設計では十分ではありません。
そのため、この数か月間、回路図に含まれる物理的要件を理解し、それをPCBレイアウトに忠実に反映するQuilterの能力を高めることに力を注いできました。

予告:差動ペア
差動ペア配線は、高速デジタル設計で一般的に求められます。しかし、層構成の定義、インピーダンス特性の計算、煩雑な配線作業、期待に合わない製造業者の納期、そしてまた最初から、という堂々巡りに陥りがちです。
Quilterは間もなく、回路図内の差動ペアを自動で検出して配線できるようになります。さらに、次のことも可能になります。
- 配線幅と配線間隔を自動計算し、ユーザーが定義した差動インピーダンスの目標値に必要な条件を求めます。
- 主要な製造業者と連携して作成した、定義済みの層構成のライブラリから、独自の設計を生成します。
- IPC規格を用いて「自らの成果を評価」し、ヒューリスティクスも活用して、製造性と性能のトレードオフを明らかにします。
差動ペアは、新しい制約タイプを追加するロードマップの第一歩です。これらの制約によって、Quilterはより優れた設計を、これまで以上に速く生成できるようになります。
次は何を開発すべきでしょうか?
Quilterの今後の製品ロードマップづくりにご協力いただける方は、公開プロダクトポータルで、追加してほしい機能の閲覧、提案、投票をお願いします。
























