4.3 Sky130における設計制約の実践的整理
本節では、SkyWater提供のSky130 PDK(Process Design Kit)を前提に、PoC設計で考慮すべき設計制約を整理します。物理設計においては、プロセス固有のルールや制約が設計品質に直結するため、RTL設計時からの制約意識が重要です。
🧱 Sky130 PDKの基本情報
- 提供元:SkyWater Technology
- 特徴:
- 130nmノード(実効L = 約150nm)
- 1.8V, 3.3V両対応(今回は1.8Vドメインを使用)
- 5メタル層構成(M1〜M5、通常はM1〜M3使用)
- オープンPDKとして自由に利用可能
- PDK構成要素:
- DRC/LVSルール、デバイスモデル、レイアウトセル(LEF/GDS)、ライブラリ、シンボル
📏 PoC設計における主要な設計制約
🔋 電源・電圧
項目 |
値 |
備考 |
VDD |
1.8V |
多くの標準セルライブラリに準拠 |
GND |
0V |
共通グランド |
⏱️ タイミング制約
項目 |
値 |
備考 |
クロック周波数 |
≤ 25 MHz |
Setup/Hold制約を緩和して確実に動作させるための保守値 |
クロックスキュー |
< 200ps |
PoCレベルではツール任せで可 |
📐 レイアウト制約(OpenLane利用時)
区分 |
制約内容 |
説明 |
マクロサイズ |
50µm × 50µm 程度以下 |
各ブロックごとにコンパクトに収める |
Metal使用制限 |
M1〜M3中心 |
M4/M5は配線密度が必要な場合に限定 |
DRCルール |
Sky130AのDRCに準拠 |
Magicでチェック可能 |
配線間隔 |
M1: ≥ 0.14µm 他 |
PDK定義のルールで自動処理に任せる |
🧪 検証条件
種別 |
ツール |
備考 |
DRC |
Magic |
magic -dnull で確認 |
LVS |
Netgen |
GDSとSPICEの接続一致確認 |
STA |
OpenSTA |
Setup/Holdタイミング検証 |
Simulation |
Verilator or iverilog |
RTLとポストレイアウトで使用可 |
📁 OpenLane用の制約ファイル例
# design_config.tcl より抜粋例
set ::env(CLOCK_PERIOD) "40.0"
set ::env(FP_CORE_UTIL) "30"
set ::env(PL_TARGET_DENSITY) "0.5"
set ::env(DESIGN_IS_CORE) "1"
• CLOCK_PERIOD:25MHz相当(40ns)
• FP_CORE_UTIL:利用率上限(物理的なセルの詰まり具合)
• PL_TARGET_DENSITY:配置密度(ルーティングしやすくする)
📝 設計制約を意識したRTL記述の指針
• 入出力名やビット幅の明示(例:[3:0]、flag_doneなど)
• 同期リセット使用(非同期リセットはOpenSTAで警告の原因になることがある)
• 定数名のプレフィックス(例:STATE_IDLE, MUX_SEL_B)
• 論理合成時のflattenやoptimizeの挙動に対応したシンプル構造
🔗 次節への接続
次節4.4では、これらの制約を反映したVerilog HDLの記述とテストベンチ構成について具体的に解説します。FSM/MUX/AdderそれぞれのRTL設計の実例を提示します。