科学・技術
ASICをリバースエンジニアリングできますか?
Can you reverse engineer an ASIC? (blog.janestreet.com)
要約
Jane Streetは、参加者がチップレイアウト(GDSファイル)からカスタムASIC(特定用途集積回路)をリバースエンジニアリングするパズルを発表しました。この記事では、チップ設計プロセスを説明し、参加者がネットリストを復元し、回路の目的を理解し、隠された文字列を見つけるためのリソースを提供しています。
全文翻訳
ASICをリバースエンジニアリングできますか?
2026年8月5日 | 5分読む
Facebookで共有する Twitterで共有する LinkedInで共有する
作成者: Anish Singhani
作成者: Benjamin Devlin
今年の初めに、私たちは完全なニューラルネットワークを提示し、それが何をするのかを突き止めるパズルを公開しました。反響は素晴らしかったので、また作りました!今回は、技術スタックのさらに奥深くに進みます。このパズルでは、チップを設計しましたが、提供するのはレイアウトのみです。
チップ製造の簡単なコース
現代のチップはコードから始まります。ハードウェアデザイナーは、Verilogのようなハードウェア記述言語で回路を記述し、それがNAND、NOR、XOR、フリップフロップなどのロジックゲートのネットリストに合成されます。次に、電子設計自動化ツールがそれらのゲートを配置およびルーティングします。つまり、ダイ上の各ゲートの物理的な場所を選択し、多くの積層されたルーティングレイヤーにわたる金属配線を、ビアで接続しながら描画します。最終的な結果はGDSファイルです。これは、トランジスタからその上のすべての金属に至るまで、チップ上のすべてのレイヤーのすべてのポリゴンの幾何学的な記述です。これは、IntelやTSMCのようなファウンドリが物理的なシリコンを製造するために使用するファイルです。GDSは、非常に現実的な意味で、チップそのものです。回路が行うすべてのことは、そこにあります。難しい点:何もラベル付けされていません!
パズル
私たちはASICを設計し、その最終マスクを提供します。金属、ルーティング、アクティブトランジスタのすべてのレイヤーと、いくつかのサンプル入出力が含まれます。あなたの仕事はそれをリバースエンジニアリングすることです。まず、レイアウトからネットリストを復元します。次に、回路の真の目的を突き止めます。そして、パズルの中のパズルが待っています。チップが何をするかを理解したら、それを使用して探している出力を引き出し、最終的な答えである文字列値を見つけます。必要なものはすべてここで見つけることができます。
開始するためのいくつかのヒント:
回路は機能を示唆するように物理的に配置されているため、レイアウトを注意深く見てください!
出力生成に使用されるデザインの一部がありますが、[success]出力には影響しません。初期のリバースエンジニアリング手順では、これを安全に無視できます。
ソリューションをテストし、最終出力を取得するために、基盤となる回路をシミュレートする方法を考案する必要があります!
[success]出力信号が高くなったときに、正しいソリューションに到達したことがわかります。
各入力試行の前に[rst_n]をトグルすることを忘れないでください。
回路とリポジトリ(メインパズルを解決するために見る必要のない部分も含む)に、いくつかの楽しいイースターエッグを隠しました。パズルを終えたら、それらを見つけられるか確認してください。
解決したら、どのように行ったかの簡単な説明とともに、ここで回答を提出してください。提出は2026年9月4日に締め切られます。
パズルについて友人と協力することは自由ですが、提出が締め切られるまで、ネタバレ(または完全な解説)をオンラインに投稿することは控えてください。提出締め切り後にソリューションを公開する場合(個人のブログやリポジトリで)、私たちにメールしてください。フォローアップ投稿でリンクを含めるかもしれません!
パズルファイルを直接AIツールに投入したり、それを使用して解説を生成したりしないでください。ただし、パズルの解決の一部として必要なスクリプトやコードの作成にAIを使用することは自由です。ウォームアップパズルを解決するためにAIを使用することも公平です。
解決を進める中で質問がある場合は、asic-puzzle@janestreet.comまでご連絡ください。ヒントは提供できませんが、それ以外の場合は喜んでお手伝いします。最も興味深い解説とテクニックをフォローアップ投稿で紹介し、お気に入りのソリューションには景品を送ります。
ウォームアップ
GDSファイルを一度も開いたことがなくても心配いりません。ほとんどの人がそうだからです。開始を支援するために、小さな作業例を提供します。シンプルなバイナリ加算器で、そのVerilogソース、ゲートレベルのネットリスト、および結果のGDSが含まれています。回路がレイアウトにどのようにマッピングされるかを理解し、構築したツールを実際のパズルに向けた前にテストするために使用できます。ウォームアップファイルはパズルリポジトリで利用可能です。
必要なものはすべて無料かつオープンソースです。デザインはオープンソースのPDKを使用しており、KLayoutやMagic VLSIのようなツールはGDSを問題なく開き、レイヤーを調べることができます。
さらに大きな挑戦が来る
このパズルをそれ自体のウォームアップと考えてください。今年後半には、私たちのチップをリバースエンジニアリングする代わりに、独自のチップを設計するコンペティションを開始します。最も興味深い応募作品は実際に製造され、実際の生活でチップをテストできるようになります。今後の数ヶ月で、詳細をこのブログで発表しますので、ご期待ください。
Jane Streetのハードウェア
Jane Streetのハードウェアチームは、世界最速の取引システムのいくつかを実行するFPGAとASICを設計しており、日々の業務はこのようなパズルに満ちています。ゲートの海、タイミングレポート、または波形をじっと見つめ、何が本当に起こっているのかをゆっくりと解き明かしていきます。これらの問題は、解決することに深い満足感を与えるような難しさがあり、正直なところ、それが私たちがここで働くのが好きな大きな理由の一つです。
それが興味をそそるものであれば、さらに学ぶためのいくつかの方法があります。
ハードウェア(FPGAおよびASIC)のインターンシップとフルタイムの職務を確認してください。
Hardcaml(当社のオープンソースOCamlハードウェア設計ライブラリ)について読んでください。
学術面では、訪問研究員および大学院フェローシッププログラムについて読んでください。
連絡を取り続けたい場合は、このフォームに記入してください。
BenはJane Streetのハードウェア開発者です。元々ニュージーランド出身で、東京大学で電気工学の博士号を取得しています。アウトドア、SF、暗号、そしてほぼすべての技術関連のものに興味があります。
Anishは2024年にカーネギーメロン大学を卒業後、FPGAエンジニアとしてJane Streetに入社しました。特にハードウェア設計をより効率的にするためのソフトウェアツールの構築を楽しんでいます。
続きを読む:ASCII波形を使用してハードウェア設計をテストする
続きを読む:Memtraceでメモリリークを見つける