ダイショット写真とデータシートから、機能互換(functional-compatible)のネットリスト/HDLを 復元し、HDLシミュレータで検証するための Claude Code スキル。
die = 構造 / datasheet + ドメイン知識 = 機能 / シミュレータ + 独立した正解 = 検証。 このリポジトリは 機能互換 までを確実に出すための手順をまとめたもの。 ビット/サイクル完全一致には実チップ実測が必要(理由は下記)。
| パス | 内容 |
|---|---|
dieshot-to-hdl/SKILL.md |
本体: 全チップ対応の5フェーズ・ワークフロー(規律・限界・検証イディオム込み) |
dieshot-to-hdl/scripts/make_overview.py |
巨大画像→俯瞰+スカウトタイル (Phase1, 汎用) |
dieshot-to-hdl/scripts/compare_vectors.py |
golden-vector 比較 (Phase4, 汎用) |
requirements.txt |
Python依存(pyvips[binary], opencv, numpy 等) |
- 互換仕様の固定 — dieを見る前に外部契約(ピン/レジスタ/挙動)をgolden化(既存実装非依存)
- フロアプラン — 俯瞰→構造シグネチャでブロック分類(ROM/PLA/regfile/datapath/FSM…)
- サブブロック復元 — 観測(die)→解釈(docs)→Verilog→iverilog検証 を1ブロックずつ
- 結合 — 結線・クロック整合・時間多重。結合でしか出ないバグを潰す
- 独立検証 — 仕様から導いたgolden vectorで採点、可能なら実機I/Oで照合
- 循環検証の禁止: 穴埋めと採点に同じ既存実装を使わない
- 中立入力: エージェントへの入力名/プロンプトでバイアスを混入させない
- provenance分離:
observed / inferred / datasheetを区別して記録 [APPROX]タグ: 推測した単位・係数・タイミングを明示- 複製でなく生成: 数式で定義されるテーブルは式から生成、RTLは独自記述
- メタル付き単一光学画像では net接続・トランジスタ型・ROM/PLAビット値は読めない (メタル遮蔽+注入式ROMは光学不可視)。トランジスタ完全抽出には剥離+染色済みの層別整列画像が要る。
- 本手順が確実に出すのは 機能/挙動の互換。ビット/サイクル完全一致は[APPROX]数値を実機実測で校正 しないと到達できない(datasheet+dieだけでは原理的に詰め切れない)。
- アナログ部(DAC/PLL/アンプ)は別途アナログモデルが必要。
スキルとして使うには dieshot-to-hdl/ を Claude Code のスキル置き場へコピー:
# プロジェクト単位
cp -r dieshot-to-hdl <your-project>/.claude/skills/
# またはユーザー単位
cp -r dieshot-to-hdl ~/.claude/skills/
以後 /dieshot-to-hdl、または「ダイショットからHDL」「reverse engineer this chip」等で起動。
dieshot-to-hdl/scripts/*.py は単体でも実行できます(pip install -r requirements.txt)。
LICENSE を参照。