ASIC のリバースエンジニアリング

2026/09/08 1:02

ASIC のリバースエンジニアリング

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Jane Street は、GDSII および VCD ファイルを用いて独自に設計された ASIC チップの構造をリバースエンジニアリングする課題を発表しました。具体的には、レイアウト用の

puzzle.gds
とテストケース用の
example_inputs.vcd
が提供されています。この設計は SkyWater 130nm プロセスに基づいて構築されており、トランジスタ(
nwell
diff
poly
)および 5 メタル層を含む主要なレイヤーが含まれています。チップには 92 のフリップフロップ、R4 領域に配置されたグリッド座標をパッチにマッピングするための 147 ゲートからなるルックアップテーブル、ならびに R11 領域に配置された 200 以上のセルを含む出力ライターが統合されています。入力には
clk
rst_n
enable
および 121 ビットのデータストリーム(
I
)が含まれ、出力には 8 ビットの ASCII 形式の結果(
O
)と
success
フラグが含まれています。このハードウェアは「スター・バトル」論理グリッドゲームのバリデーターとして機能し、各行、各列、各領域にちょうど 2 つの星を配置し、隣接する星がないという制約を強制します。論理的な R6 および R7 はそれぞれ行およびパッチの検証を担当し、すべての条件(合計 22 つの 1、隣接ペアなし、正しいカウント)が満たされた時点で R10 によって最終的な
success
ビットが駆動されます。現在提供されたテストケースのシミュレーションでは、VCD トレースに記録されている 730 ビットの出力と一致して "TRY AGAIN" というメッセージが表示されます。この演習は、回路図なしで生粋のハードウェア記述およびデジタル論理制約を解釈するための高度なベンチマークとして機能します。

本文

GDS ファイルからのチップ解読:Jane Street 逆工学課題の攻略法

Kjartan van Driel と Leander Post による「Per aspera ad astra(道は険しければ、星にたどり着く)」というスローガンのもと、Jane Street が発表した ASIC チップの動作推測・解読課題に対するアプローチを解説します。 本稿は、GDS ファイルを読み込み、製造プロセスを理解し、論理回路を復元してシミュレーションを行うまでの一連の流れを整理しています。


第 1 編:GDS とは何なのか?

ファイル構成とレイヤー構造

パズルは主に以下の 2 つのファイルで構成されています。

  • puzzle.gds
    : **グラフィックデータシステム(Graphic Data System)**形式の設計ファイル。チップの物理的なレイアウト情報を含みます。
  • example_inputs.vcd
    : テストケース。入力信号と、チップが生成するべき出力を示すログです。

レイヤーの理解

GDS ファイルは異なる種類の多角形(Polygon)を「層(Layer)」ごとに区別して記述します。

  • 注釈情報: ファイル内には意味のないテキストが含まれており、一見すると混乱を招きます。
  • プロセスの特定: 論理セルの名前がヒントになります。
    sky130_fd_sc_hd__
    で始まる名前は、SkyWater 130 nm プロセス向けのスタンダードセルライブラリであることを示します。公開されたドキュメントを参照することで、各層の意味を特定できます。
  • 層の分類:
    • トランジスタ構成:
      nwell
      (N 型ウェル)、
      diff
      (拡散領域)、
      poly
      (ポリシリコン)。
    • 局所配線:
      li1
      (local interconnect)など、セル内部でトランジスタを接続する層。
    • メタル配線:
      met1
      met5
      。チップ全体を横断する信号伝送用。複数の層があるため、物理的に交差しても電気的には接続しないように設計されています。

接続の理解

  • 形状 vs 電気接続: 上面から見て重なる場合でも、異なる層上にある場合は電気的に接続されていません。
  • 接続方法: 層間を接続するにはコンタクトまたは**ビア(via)**が必要です。
  • ピンラベル: セル上の
    A
    ,
    B
    ,
    X
    などのラベルは導通していませんが、直下の
    li1
    レイヤー上の配線を指し示しています。

コンポーネントの機能

トランジスタ(MOS)

  • 動作原理: ポリシリコンゲートに電圧をかけると、ソース・ドレイン間が導通します。
  • 種類:
    nMOS
    (高電位で導通)と
    pMOS
    (低電位で導通)の 2 種類を使用し、論理回路を構成します。

ロジックセル例:XOR ゲート

  • 機能: 入力
    A
    ,
    B
    が異なれば出力
    1
    、同じであれば
    0
  • 実装: 複数のトランジスタを組み合わせた単一の論理ブロックとして扱います。

メモリセル例:フリップ・フロップ

  • 機能: データ入力
    D
    をクロックエッジ(立ち上がり)の瞬間に取り込み、その値を保持します(
    Q
    )。
  • リセット:
    RESET_B
    が低電位になると、クロック待ちなく
    Q
    をゼロに強制できます。
  • 規模: チップ全体に 92 個あり、92 ビットのステートメモリとして機能します。

クロックバッファ

  • 信号を強化して広範囲に伝える役割を持ちますが、論理的なシミュレーション上は経路追跡だけで十分です。

第 2 編:回路の復元

アプローチ:抽象化とネットリスト作成

トランジスタごとの詳細なシミュレーションは不要です。セル名からその機能(例:

xor2
)を特定し、セル間の接続を追跡します。

接続追跡の手順

  1. 接続位置の確認:
    • セル上のラベル(例:
      67/5
      li1
      レイヤー)から入出力端子の位置を特定。
    • メタルレイヤー(
      met
      )と局所配線(
      li1
      )、そしてビアによってセル間が接続されているかを確認。
  2. ネットリストの抽出:
    • 各ピンの接続先配線をグラフ構造として描画。
    • 電源ラインは論理動作上の定数として省略し、クロックバッファは駆動経路として扱います。

シミュレーション戦略

  • 初期状態:
    example_inputs.vcd
    からリセットシーケンス(3 クロックサイクル低電位)を読み取り、初期値を設定。
  • 入力処理: 121 ビットの入力を 1 バイトずつ送るシークエンスを再現。
  • 同期更新: 全てのフリップ・フロップは同じクロックエッジで同時に更新されます。新しい
    D
    値に基づき
    Q
    を更新し、出力を確認。
  • 検証: シミュレータの出力と VCD ファイルの記録を比較。すべてのビットが一致することで、回路構造の復元成功を確認しました。

第 3 編:回路の推論

グリッドへの分割

121 ビットの入力空間全体をチェックするのは不可能なため、コンポーネントの位置情報を活用してチップを領域に分割します。

  • R1〜R11: チップは約 11 つの主要な機能ブロック(領域)に分けられます。
  • 出力ライター:
    R11
    は最終結果を出力する独立したブロックです。

各領域の機能解明(ルール導出)

各領域は「カラムカウント」「行チェック」などの役割を持ち、情報の流れを追跡することで論理機能を特定します。

領域名機能概要推論プロセス
R1入力判定と開始カラムカウンタ(0〜10)を循環。入力ビットの有無でカウントを開始・停止。
R2行カウンタ同様に「行カウンタ」を生成。カラムカウンタと組み合わせて座標系を構築。
R3完了判定ゲート
enable
と両カウンタの完了信号を受け取り、入力読み込み可否を制御。
R4パッチマップ (Patch Map)2D グリッドの各座標に対応する「パッチ番号」を生成するルックアップテーブル。11 つのパッチにグリッドを分割します。
R5カラムカウント (Column Count)各カラム内の
1
の数を数え、3 で停止。「2 つの 1 が並ぶか?」を検出(YES/NO)。
R6行チェック (Row Check)行内の
1
の数をカウントし、誤りを検出するフラグを立てる。
R7パッチカウント (Patch Count)パッチマップを用いて各パッチ内の
1
の数を数え、「2 つの 1 が並ぶか?」を検出。
R8隣接チェック (Neighbour Check)直近の 12 ビットの入力を保持し、左/上など早期隣接セルと比較。「エッジで 2 つの 1 が接触するか?」を検出。
R9合計カウント (Total Count)入力された
1
の総数をカウントし、特定値(22)を達成したかを確認。
R10成功判定 (Success)全ての条件を満たしているかを確認。
* 各行に 2 つの 1
* 各列に 2 つの 1
* 各パッチに 2 つの 1
* 接触していないペアなし
* 合計 22
これらが全て成立すれば、成功フラグが立ちます。
R11出力ライタR10 の結果を読み取り、ASCII コードとして画面に印刷します。

ルールの正体

これらの条件(各行・列・パッチに 2 つずつ、接触禁止、合計 22)は、ボードゲーム**「スターバトル(Star Battle)」のルールと全く同一です。 この ASIC チップは、星の数と配置を検証するスターバト検証器**であることが明らかになりました。


解答と結論

R11 の出力ライタにより、正しい入力パターンの場合、チップは以下の文字列を出力します。

TRY AGAIN

(※これは解読プロセスのテスト用メッセージですが、実際の課題では特定の入力データを与えると解が導かれます)

まとめ

  1. GDS ファイル解析: プロセスドキュメントとレイヤー構造から物理回路を読み取る。
  2. ネットリスト化: セル間の接続をグラフとして抽象化し、シミュレータを作成する。
  3. 空間的分離: コンポーネントの配置に基づき機能領域を分割する。
  4. 論理同定: 各領域の動作を追跡し、「2 つずつ」「合計 22」といったゲームルールを特定する。

謝辞

  • Leander Post: パズル解法の支援とビジュアル制作への協力に感謝します。
  • Jane Street: チallenge の提供に感謝します。
  • Fabiio Crameri: 視覚的に優れた色マップ(Scientific colour maps)の作成に協力したことに感謝します。

本記事では、複雑な物理回路から論理構造を抽出し、人間の知恵と計算によってその機能(ゲーム検証器)を読み解くプロセスを紹介しました。

同じ日のほかのニュース

一覧に戻る →

2026/09/08 23:55

Google DeepMind、AlphaGenome アトラスをリリース

## Japanese Translation: ## サマリー: Google DeepMind は、ヒトゲノムにおけるあらゆる可能な単一ヌクレオチド変異の影響を予測することを目的とした画期的なツール「AlphaGenome Atlas」を導入しました。この 1 ペタバイト規模の巨大データセットは、全ての 90 億個の可能性のある変化について事前に影響を計算しており、「AVI スコア」というスコアを用いてどの遺伝的変異が最も重要かを瞬時に優先順位付けします。この革新は、稀少疾患の原因特定という重要な課題に対処しており、例えば広域研究所(Broad Institute)で同定された *DNM1* 遺伝子の特定の突然変異によって誤ったスプライスサイトが作成される問題に対処しています。さらに、54,000 人以上の UK Biobank 参加者のデータに適用した際、アトラスは非コード領域と身体質量指数(BMI)との新しい関連性を発見しました。予測された分子効果に基づいて変異をグループ化することで、従来の手法よりも 22% も多くの関連性を明らかにし、BMI に関連する 19 の遺伝的領域を同定しました。複雑で高度なプログラミングスキルを必要とする以前の手法とは対照的に、このツールは直感的なウェブサイトポータルを通じてアクセス可能となり、世界の臨床研究者へのアクセスを民主化しています。結局のところ、アトラスは科学者が膨大な技術的専門知識を必要とせずに最も有望な遺伝的なリードにリソースを集中させることを可能にし、発見のスピードを加速させています。

2026/09/09 5:07

MacBook Pro で 4 つの SSD からストリーミングし、トークン速度が 1 トークン/秒の Kimi K3(2.8T)

## 日本語翻訳: 元のサマリーは読みやすいですが、Key Points List に含まれる数量的な深みに欠け、欠落している指標なしでは具体的なパフォーマンスに関する主張を評価することが困難です。以下の改良版は、重要なデータポイントを取り入れつつ文脈の流れを維持したものです: ## サマリー このプロジェクトは、ARGODRIVE の Deltafin フォークを使用して、アップストリーム仕様に従い(専門家プリューニングやウェイトの減少など、品質を犠牲にするショートカットを導入しない)、Apple M5 Max MacBook Pro(128 GB RAM)上で 2.8T パラメータの Kimi K3 MoE モデルをフルスケールで展開することを実証しています。**パフォーマンス分析**によると、デコードスループットはプロンプト長に応じて約 0.96〜1.13 tokens/s(アップストリームの約 0.68 tokens/s)と安定しています。しかし、このセットアップには 512 トークンのプロンプトに対する「最初のトークンまでの時間」(Time to First Token)の遅延が約 375 秒と大きく、これはプリフィル中に特定のメモリ専門家を読み直す効率が悪い(具体的には各レイヤーの専門家を 8 倍読み返す)ことが原因です。SSD スケールは対数曲線に従い、最も低速なレイヤーがペースを規定します。ドライブを追加しても収益性が低下し、1 ドライブがベースラインである 4 ドライブの約 52%、2 つのミラーリングが約 73%、3 ドライブが約 90% を提供します。このプロジェクトは、精度を犠牲にして(例えば専門家のウェイトを約 3 bit に減少させるなど)人工的に速度を上げる他のイニシアチブと区別されます。ユーザーは `--full` モード(1.7 TB のローカルダウンロード)または `--stream`(オンデマンドキャッシング)のいずれかを選択できます。デフォルトでは Inferact の Kimi-K3-DSpark が含まれており、生テキストタスク用にはオプションの Qwen アクセラレーラーが用意されています(チャット速度ではありません)。コードは MIT ライセンスで公開され、Moonshot AI と何らの関係もありません。アップグレードには `cargo build` を通じた手動メンテナンスが必要であり、アップストリームのライセンス条項に従っています。将来の計画は、プリフィルの読み直し問題を解決して起動遅延を排除することに焦点が当てられています。

2026/09/09 6:47

大規模言語モデルが適応的探索によって新たな社会的バイアスを発明する

## Japanese Translation: OpenReview にアクセスする前に、新規ユーザーは作業を続行するには強制のセキュリティ検証手順を完了する必要があります。既存のアカウント保有者は直接ログインすることでこの要件を回避でき、これにより自動的にメインインターフェースに遅延なくリダイレクトされます。その結果、新規ユーザーはチェックを完了させるまでワークフローを一時的に停止する必要があり、登録済みアカウント向けの免除を利用しない限りです。組織が新しい人材オンボーディングを行う場合、これらの個人が認証を完了する間、一時的な摩擦が発生する可能性があります。したがって、このプラットフォームは新規参入者に対して厳格な入場を強制し、一方で検証済みのユーザーにはシームレスなアクセスを維持します。

ASIC のリバースエンジニアリング | そっか~ニュース