序章:全体像と宣言 ― なぜ自作SoCなのか
基礎編(FPGA入門)では、自分で書いたVerilogを実機で光らせ、最後にはRISC-VのCPU(PicoRV32)を自分のFPGAの上で走らせるところまで来ました。本実践編は、その続きです。あの章の終わりに見えていた「夢」――小さなCPUを土台に、まわりに周辺回路を足していけば、それは自分たちのオリジナルなSoC(System on Chip)になる――を、今度は本気で形にします。FPGAで徹底的に検証し、テープアウト(実チップ製造)し、基板(PCB)に載せて動かす。一気通貫で、本物のチップを作り上げるまでの長い旅です。
はじめにお断りします――これは「完成した手順書」ではありません。 本講座は、著者自身が実際にSoCを設計し、検証し、製造へ送り出すまでを並走して綴る実験の記録です。だから本文には「ここはまだ未検証」「この部品は実物で要確認」といった正直な留保が何度も出てきます。それは欠陥ではなく、実験の途中であることの誠実なしるしです。この読み方については、最後の0.9で改めてお話しします。
0.1 まず到達点を見る ― 何を作るのか
長い旅なので、最初にゴールの姿を見ておきましょう。私たちが目指すのは、ただ動くだけのSoCではありません。「先輩たちの名作マイコンボードの弱点を上回る、実用的なオリジナルボード」です。基準線として、世界中で愛されてきた3枚の先輩――Arduino UNO、CH32V003、ESP32-C――を並べ、それぞれの強みに敬意を払いつつ、弱点をどう超えるかを見定めます。
先輩ボードと、目指す自作SoC(数値は各社公称。必ずデータシートで要確認)
──────────────────────────────────────────────────────────────────────────
Arduino UNO CH32V003 ESP32-C(C3) 目指す自作SoC
コア 8bit AVR RV32EC RV32IMC RV32I系
@16MHz @48MHz @160MHz (PicoRV32, FPGA上)
RAM 2KB 2KB 400KB ★外部RAMを実装
Flash 32KB 16KB 外付け(〜16MB) ★外部SPI Flash
I/O 14(PWM6) 最大18 22 ★GPIO IPで増設
ADC 10bit×6 10bit 12bit XADC(Artix-7内蔵)
通信 UART USART/I2C/SPI +Wi-Fi/BT 有線重視+
=無線なし (技適前提) ドングル外付け
USB (書込のみ) なし デバイスのみ ★ホストを設計
音声 PWM音程度 弱い I2S×1だが非力 ★I2S入出力+並列処理
モータ PWMで間接 PWM PWM ★ドライバ前提で強化
立ち位置 買う既製品 買う既製品 買う既製品 ★自分で"作る"
表の一番下の行が、本講座のいちばん大事なメッセージです。先輩たちはすべて「買ってくる既製品」。本講座が作るのは「自分で設計し、自分で焼く一点物」です。この違いが、以降のすべての章の通奏低音になります。
※スペックは断定しません: 上の表の数値は各社の公称をもとにした概略で、版や型番で変わります。比較の目的は「どこで勝負するかを見定める」ことであって、数字の優劣を競うことではありません。正確な値は必ず各データシートでご確認ください。本講座は変動する数値を本文に固定しないよう努めます。
0.2 なぜ今、個人が「自作チップ」を狙えるのか
「チップを自分で作る」と聞くと、ひと昔前なら数千万〜数億円の費用と、大企業の設備が必要な、個人には手の届かない世界でした。それが今、現実的な選択肢になっています。理由は、チップ作りに必要な道具がことごとくオープンソース化・クラウド化されたからです。
設計ツールが無料に(OSS-EDA)
RTLからレイアウト(GDSII)への変換を、OpenLane/LibreLane(内部でYosys・OpenROAD等が動く)が全自動・無償で行います。かつて高価な商用EDAが独占した領域が、誰の手にも開かれました。
製造が相乗りで安く(シャトル)
Tiny Tapeout や Efabless系のシャトルサービスは、多数の設計を1枚のウェハに相乗りさせることで、個人でも手の届く費用で実チップ製造を引き受けます。
堅実なコアが公開されている
本講座が使う PicoRV32 をはじめ、実績あるRISC-V CPUコアや周辺IPが、オープンソースで公開されています。ゼロから作らず、巨人の肩に乗って始められます。
0.3 何で「勝つ」のか ― 土俵を間違えない
先輩たちは手強い相手です。だからこそ、勝てない土俵で正面から殴り合わないことが、いちばんの戦略になります。本講座は、先輩への向き合い方を3つの層に分けて考えます。誇張せず、正直に。
① 非力さは、正面から上回る
CH32V003やUNOの弱点――メモリの少なさ、ピンの少なさ、通信の弱さ――は、外部メモリの実装、GPIOの増設、有線通信IPの追加で、はっきりと超えられます。ここは堂々と勝ちにいきます。
② 量産の強みには、挑まない
CH32V003の10セントという価格や、ESP32-Cの内蔵無線・絶対性能は、量産品の圧倒的な強みです。ここに「より安い・より速い」と挑むのは誇張になります。先輩の強みは、強みとして認めます。
③ 「作る自由」で、別次元へ
本当の勝負どころはここ。中身を全部自分で設計し、自分の用途に最適化し、実チップにできる自由。買う既製品には決して持てない価値です。これが本講座の答えです。
★本講座の旗印: 量産を狙う企業に対し、シャトル便クラスの個人やコミュニティには「気兼ねなく、何度でも、果敢に新機能を試せる」という別の強みがあります。そして今、AIは企業もベテランも個人も学生も同じ条件・同じレベルで使えます。誰もがAIと共に、新しいSoCへ動き出せる時代です。力ある者は、世界のどこからでも這い上がってくる。世界中の有志とコミュニティが、その挑戦を応援してくれます。本講座は、その挑戦の一つの実例を、世界に示すことを目指します。
0.4 本講座の地図 ― FPGAで固めて、焼いて、載せる
長い旅の全体像を、一枚の地図にしておきます。本講座は大きく3つの段階を、この順に進みます。「FPGAで徹底的に試してから、初めて製造へ送る」――これが背骨です。
本講座の道のり(FPGAで固めてから、製造へ)
───────────────────────────────────────────────────────────────
【段階1】設計と検証(第1〜12章)
RTLを書く → シミュレーション → Basys 3(FPGA)で実機検証
↑↓ 何度でも書き換えて反復(無料・製造待ちなし)
│ ここで「完全に固まった」RTLだけを次へ
▼
【段階2】テープアウト(第13章)
LibreLane(内部でOpenROAD)で RTL→GDSII → シャトル提出
│ ここから先は一発勝負。後で直せない
▼
【段階3】基板化と完成(第14章〜終章)
届いた実チップ → KiCadで基板設計 → 実機で検証 → テキスト改訂で完成
なぜ「FPGAで固めてから」なのか。テープアウト(製造)は一発勝負で、焼いてしまったチップは後から直せないからです。一文字のバグが、数ヶ月と製造費用を無駄にします。だから、何度でも書き換えられるFPGA(手元のBasys 3)で、納得いくまで試して固める。FPGAは、一発勝負に臨む前の、いちばん頼れる安全装置です。これは基礎編が一貫して説いてきた「FPGAの嬉しさ」を、SoC規模に広げたものです。
0.5 本講座の流儀 ― 人がアーキテクト、AIが実装・検証
本講座には、もう一つの隠れた主題があります。人とAIの協働で、ここまで作り込めるという現代的な開発スタイルの実演です。役割分担は、はっきりしています。
人間=アーキテクト(思想と判断)
「何を作るか」「どんな構成にするか」「どのIPを採り、どれを捨てるか」――こうした上位の設計判断は、人間が握ります。これは人にしかできない仕事です。
AI=実装・検証エンジン
IPの探索、バスをつなぐグルーコード、テストベンチの生成、波形からのデバッグ提案――こうした緻密で大量の実務を、AIが高速に回します。
※ただし、AIの出力は人間が必ず検証します(最重要の規律): AIは強力ですが、万能でも全知でもありません。とくに外部IPの固有名や作者、ライセンス、法規(技適など)、そして「これで確実だ」という断定は、AIが取り違えたり、楽観しすぎたりすることがあります。本講座では、AIが挙げた候補は必ず人間が一次情報(GitHub・公式ドキュメント・データシート・法令)で裏取りしてから本文に採用します。「AIがあれば100%確実」とは決して書きません。AIは大幅な省力化をもたらしますが、最後の判断と責任は人間が持つ――この一線を、全章で守ります。
0.6 開発環境 ― Basys 3 一台で、どこまで作れるか
本講座の開発の足場は、基礎編と同じBasys 3(Artix-7 / XC7A35T)一台です。新しい高価な機材は要りません。「手元のFPGA一枚で、実用SoCをどこまで作れるか」に挑みます。基礎編で確かめたとおり、PicoRV32はFPGA全体のわずか数%。残りの広大な余地に、周辺回路を足していけます。
Basys 3 だけで作れる範囲
CPUコア、Wishboneバス、GPIO・タイマ・PWM・UART・SPI・I2C、外部メモリ制御、音声処理、PCの可視化(LED・7セグ)――SoCの論理(RTL)の大半は、ボード一台で設計・検証できます。
外付けはPmod経由で
マイク・スピーカ・モータドライバ・Ethernet・USBドングルなどの外部部品は、Basys 3 のPmod拡張ポート経由でつなぎます(基礎編で「いまは使わない」とした、あの拡張ポートの出番です)。
基板化に送る範囲
Pmodで届かない本格的な実装――複数USB端子とハブIC、電源(LDO)、水晶、QFNチップの実装など――は、第14章の基板設計(PCB)で扱います。FPGAは「論理を固める場」、基板は「製品にする場」と役割を分けます。
0.7 本講座のIP調達ワークフロー ― 突然「このIP」を出さない
本講座のいちばんの教材は、じつは「どうやってそのIPにたどり着いたか」という道順です。世の中には優れたオープンソースIP(回路データ)が無数にあります。それを「こう探し、こう見極め、こうつなぐ」という型を身につければ、本講座が終わったあとも、自分で別のIPを探して組み込めるようになります。だから本講座では、IPが登場するたびに、必ず次の7ステップを通して見せます。いきなり「これを使います」とは言いません。
IP調達ワークフロー(IPが登場するたびに、この順で道順を示す)
───────────────────────────────────────────────────────────────
1. 要求を言語化 何が要るか(対応バス/機能/リソース/ライセンス)を箇条書き
2. 探索先を定める GitHubトピック検索, OpenCores, LiteX/Migen, 論文, README
※AIは「候補のリスト化」まで。実在確認は人間が一次情報で
3. 候補を絞る 対応バス/成熟度(更新・実績)/ライセンス/規模/Doc を表で比較
4. 現物を確認 README・ポート定義・LICENSE を自分の目で(固有名は必ず裏取り)
5. 採否を判断 なぜ採るか/なぜ落とすか を記録(落とした理由こそ教材)
6. 統合する 自分のWishboneに接続。方言が違えばブリッジを噛ませる
7. 検証する IP単体→SoCに載せて、シミュレーション&FPGAで確認
なぜ「道順」を見せるのか: 完成したレシピだけ渡されても、応用が利きません。魚を一匹もらうより、釣り方を覚えるほうが、ずっと遠くまで行けます。とくにステップ4の「現物を確認する」は要です。AIが挙げたIPの名前や作者が、実際とは微妙に違っていることがあります。リポジトリを自分の目で開き、READMEとライセンスを確かめる――この一手間が、後の大きな手戻りを防ぎます。
0.8 一般的なSoC開発フローと、本講座の対応
本講座は思いつきの順ではなく、実務のSoC開発が踏む標準的な流れに沿って進みます。いま自分が開発のどの段階にいるかを見失わないよう、標準フローと各章の対応を示しておきます。
一般的なSoC開発フロー 本講座での対応 ─────────────────────────────────────────────────────────────── 仕様定義・アーキテクチャ設計 序章・第1章・第2章(コア理解とバス/メモリマップ) IP調達(自作 vs 既製の判断) 第3章(自作)・第4〜6章(調達)※毎回7ステップ 統合(バス接続・ブリッジ) 第2〜6章(Wishboneへ接続、方言はブリッジ) 機能の作り込み 第8章(音声)・第9章(モータ)・第10章(カメラ/表示) ソフトの足場 第11章(Arduino対応・MicroPython移植) 検証(ユニット→結合→システム) 各章末+第12章(集大成・サインオフ) テープアウト 第13章(LibreLane/OpenROAD・シャトル提出) 基板実装 第14章(KiCad・PCB) 実機検証・改訂 終章(実チップで答え合わせ→テキスト完成)
0.9 この講座の読み方 ― “完成記録”ではなく“実験の並走記録”
最後に、いちばん大切な読み方をお伝えします。冒頭でも触れたとおり、本講座は完成済みの清書ではなく、実験の並走記録です。著者自身が、実際に設計し、つまずき、IPを探し直し、検証を重ねながら書いています。だから本文には、次のような留保が随所に現れます。
「未検証」
コードや手順が、まだ実機・シミュレーションで確かめきれていない段階。正直にそう書きます。読者と一緒に検証していく、という姿勢です。
「要・実機確認」「要・一次情報」
IPの固有名・ライセンス、ツールの版、法規など、変動し・取り違えうる事項。本文で断定せず、必ず出典を自分で確かめてくださいという印です。
「改訂マーカー」
実チップが届いたあと、検証結果をもとに見直す箇所。終章で、これらを拾い直してテキストを更新し、そこで初めて本講座を「完成」とします。
留保は、弱さではなく誠実さです。 「すべて完璧に動きます」と言い切るテキストより、「ここはまだ確かめていない」と正直に書くテキストのほうが、本当の実験には誠実です。本講座の完成は、遠い未来――実チップが届き、それが本当に動いたと確かめられたときにあります。その日まで、このテキストは読者とともに育ち続けます。さあ、長い旅の始まりです。次の第1章では、旅の主役となるCPUコア――PicoRV32――の中身を、本格的に分解することから始めましょう。