第7章:用語集・トラブルシューティング・コミュニティ(完全リファレンス)
本書の締めくくりとして、毎回の講義の予習・復習、定期試験の対策、および実際の演習中に遭遇する様々なエラーをその場で即座に自己解決するための、決定版リファレンス集を掲載します。
7.1 大学定期試験・レポート用 必須技術用語20選(分野別)
暗記の取りこぼしを防げるよう、20の必須用語を5つの分野に整理しました。試験前は分野ごとに「用語→一行定義」を言えるか確認すると効率的です。
① 基盤・製造インフラ
- PDK (Process Design Kit)
- 半導体製造工場が設計者に提供する、特定の製造プロセスに特化したルールブックと標準セルライブラリのデータセット。
- SkyWater 130nm
- 米国SkyWater社が製造する、世界で初めて完全オープンソース化されNDAなしで利用可能となった130nm製造プロセス。
- Tiny Tapeout
- 1枚のシリコンの領域を多数の設計者で小分けにして相乗りさせることで、超低コストでの実製造を実現した画期的サービス。
- GDSII
- ICの物理的な平面図形パターンを表現する、半導体業界標準の最終提出用バイナリデータ形式。
- LEF (Library Exchange Format)
- セルの外形サイズやピンの位置のみを記述した、配置配線ツール向けの軽量な抽象化レイアウトデータ。
② 部品とデータ構造
- 標準セル
- AND、OR、フリップフロップなど、あらかじめ高さと電源レールの位置が完全に統一された基本論理回路部品。
- ネットリスト
- 論理合成によって生成される、標準セル同士のピンの接続関係指示書。
③ 設計工程
- 論理合成
- Verilogなどの抽象的なRTL記述を、具体的な論理ゲート(標準セル)の接続図(ネットリスト)へ自動変換するプロセス。
- CTS (Clock Tree Synthesis)
- クロック・スキューを極小化するため、全フリップフロップへ均等に分岐・到達するバッファの樹状配線構造を自動生成する工程。
- DRC (Design Rule Check)
- 微細配線の細さや配線同士の間隔が、工場の物理限界ルールに違反していないかを検証するチェック。
- LVS (Layout Versus Schematic)
- 配置配線が完了したレイアウトから抽出した接続トポロジーが、元の論理合成ネットリスト回路図と完全一致しているかを比較するプロセス。
④ タイミング解析
- STA (Static Timing Analysis:静的タイミング解析)
- 回路内のあらゆる経路の遅延時間を数学的に計算し、クロックに同期して正常動作するかを最悪条件で網羅検証する手法。
- Setup Time (セットアップ時間)
- フリップフロップにクロックが入力される直前、データ信号が入口で安定していなければならない最低限の必須時間。
- Hold Time (ホールド時間)
- フリップフロップにクロックが入力された直後、データ信号がその場に維持されていなければならない最低限の必須時間。
- Slack (スラック)
- タイミング制約に対する余裕時間。プラス(MET)であれば合格、マイナス(VIOLATED)であれば動作不可。
- クロック・スキュー
- 配線の長さの違いにより、チップ内の異なるフリップフロップにクロックが到着する時間に生じる物理的なズレ。
- メタステーブル状態
- セットアップ/ホールド時間を破ったことにより、フリップフロップの出力が0か1か定まらず不安定に振動してしまう現象。
⑤ Verilog記述
- ノンブロッキング代入 (<=)
- Verilogにおいて、すべてのレジスタへの代入がクロックに同期して一斉に同時に実行される代入方式。順序回路記述の鉄則。
- ブロッキング代入 (=)
- Verilogにおいて、ソフトウェアのように上の行から順番に評価が確定していく代入方式。組み合わせ回路で使用。
- テストベンチ
- 設計した回路に対し、仮想的なクロックや試験信号を流し込んでその応答をシミュレータ上で観測するための専用回路。
7.2 実験室演習トラブルシューティング
演習中に手が止まりやすい代表的な3症状を「症状 → 原因 → 対処」で先に俯瞰し、その後で各対処の具体手順を示します。
症状(エラー表示) 主な原因 最初に試す対処 ───────────────────────────────────────────────────────────────────────────── Docker daemon is not running Docker未起動 / WSL連携OFF Docker Desktop起動・WSL連携ON Congestion(配線渋滞で停止) 面積に対し回路が過密 配置密度を下げて再ハーデン slack (VIOLATED)(負のslack) 1クロック内の遅延が過大 クロック周期を緩めて再実行
Q1:ハーデン実行時に「Docker daemon is not running」と怒られる
【対策】 Windows側でDocker Desktopアプリが起動しているか、Settings ➔ Resources ➔ WSL integrationを開き、利用中の「Ubuntu-24.04」の連携スイッチがONになっているか確認してください。
Q2:第5章のRISC-V統合時に、配線工程(Routing)で「Congestion」エラーが出て停止した
【対策】 領域に対して回路規模が大きすぎます。設定ファイル(テンプレート同梱の config.json 等)に "PL_TARGET_DENSITY_PCT": 45 のように密度を%で指定するパラメータを追記し、セルを広く均等に分散配置するよう指示を出して再実行します。
Q3:タイミング解析レポートで「slack (VIOLATED)」と表示され、マイナスの時間が出た
【対策】 1クロック内の遅延が多すぎます。設定ファイル内の CLOCK_PERIOD(単位ns)の値を 20(50MHz)から「40(25MHz)」や「80(12.5MHz)」へ大きく緩めて周波数を落とすことで、多くの場合は解消します。
🔧 詳しく知りたい方向け:現行フロー(LibreLane 3.0.x / ttsky25b)でのコマンドと設定キーの注意点
本講座が前提とする現行のTiny Tapeoutフローでは、ハーデン(物理設計の実行)は専用ラッパースクリプトを通して行います。古い資料に出てくる tt harden 単体のコマンドは現行版には存在しないため、以下を使ってください。
# ユーザー設定ファイルの雛形を生成 ./tt/tt_tool.py --create-user-config # ハーデン(合成 → P&R → 物理検証を一括実行) ./tt/tt_tool.py --harden # 警告の確認 ./tt/tt_tool.py --print-warnings
設定キー名・密度パラメータの注意
- 密度パラメータ: 現行のLibreLane(OpenLane 2系)では
PL_TARGET_DENSITY_PCT(0〜100の%指定)を使います。旧OpenLane 1系のPL_TARGET_DENSITY(0〜1の小数指定)とは別物なので混同しないでください。 - 設定ファイル名・キー名:
info.yaml/config.yaml/config.jsonやsource_files/input_filesはテンプレートの世代によって差があります。「テンプレート同梱の実ファイルに合わせる」のが最も確実です。 - 成果物の場所: 実行結果は
runs/wokwi/配下に出ます(最終GDSはruns/wokwi/final/gds/)。レポートはステップ別フォルダに分散するためfind runs/wokwi -name "*.rpt"で探すのが実務的です。
7.3 コミュニティへの招待
半導体設計の民主化運動は、世界中のエンジニアや学生たちのコミュニティによって進化しています。Tiny Tapeout公式DiscordやFOSSi Foundationには世界中から設計者が集まり議論しています。ぜひあなただけのオリジナルシリコンSoCを設計し、世界へ送り出してください!