はじめに
昨日のブログでは、GAAのセルは、Nanosheetの幅によって決めるというのを学びました。
で、そのセルをツールではどのようにして、使い分けるのか?
ということで、今度は、Google Gemini (無料版)に聞いてみました。
半導体プロセスの各セルを使い分けるためには、どのようなツールをどのように使うの?
半導体設計において、膨大な種類がある「セル(Standard Cells)」を最適に使い分けるプロセスは、人間の手作業では不可能です。そのため、EDA(Electronic Design Automation)ツールと呼ばれる専用ソフトを駆使して自動化するのが一般的です。
具体的に「どのツール」を「どう使うか」を、設計のフローに沿って解説します。
1. セルの「使い分け」を判断する3つの基準
ツールを動かす前に、何を基準にセルを選ぶのかを知っておく必要があります。
- P(Power): 消費電力(リーク電流を抑える高しきい値セルか、低電力セルか)
- P(Performance): 動作速度(高速に動く低しきい値セルか)
- A(Area): 面積(実装密度を上げるための小型セルか)
これらを総称してPPA最適化と呼びます。
2. ツールとその活用方法
セルの使い分けは、主に以下の3つのステージで行われます。
① 論理合成(Logic Synthesis)
使用ツール: Design Compiler (Synopsys), Genus (Cadence) など
- 役割: RTLコード(Verilog等)を実際のセルの組み合わせ(ゲートレベル・ネットリスト)に変換します。
- 使い分けの仕組み: ツールに「制約条件(Constraint)」を与えます。「この回路は1GHzで動かせ」と命令すると、ツールはライブラリの中から高速なセルを優先的に選びます。逆に、速度に余裕がある部分は、面積が小さく電力消費の少ないセルを割り当てます。
② 配置配線(Place and Route - P&R)
使用ツール: IC Compiler II (Synopsys), Innovus (Cadence) など
- 役割: チップ上のどこにセルを置くかを決めます。
- 使い分けの仕組み: セル同士の距離が離れると配線抵抗が増し、信号が遅れます。ツールは配線の混雑度や遅延をリアルタイムで計算し、「ドライブ能力(信号を押し出す力)の強いセル」に差し替えたり、バッファを挿入したりして調整します。
③ サインオフ・ECO(Engineering Change Order)
使用ツール: PrimeTime (Synopsys), Tempus (Cadence) など
- 役割: 最終的なタイミング検証と微調整です。
- 使い分けの仕組み: 設計の最終段階で、わずかに速度が足りない箇所(セットアップ違反)や、早すぎる箇所(ホールド違反)を見つけます。ツールは「セル・スワッピング」を行い、ピン互換のある別の特性のセル(例:低速・低電力セル → 高速・高電力セル)にピンポイントで入れ替えます。
3. 使い分けを支える「ライブラリ(PDK)」
ツールがセルを使い分けるためには、その「カタログ」が必要です。これがPDK(Process Design Kit)に含まれるライブラリです。
| セルの種類 | 特徴 | 使いどころ |
|---|---|---|
| HVT (High Threshold) | 遅い、電力消費が極めて少ない | 速度を求められない制御回路など |
| SVT (Standard Threshold) | 標準的な速度と電力 | 一般的なロジック部分 |
| LVT (Low Threshold) | 速い、リーク電流(電力漏れ)が多い | 演算器など速度が重要なパス |
まとめ:ツールの使いこなし方
- ライブラリを読み込む: ツールに複数のしきい値(HVT/SVT/LVT)のセル情報を与える。
- 制約を与える: ターゲットとなる周波数や消費電力の目標値を設定する。
- 自動最適化を実行: ツールが「速度が足りない場所だけLVTを使い、他はHVTで電力を絞る」といった計算を自動で行う。
設計者は、ツールが「無理なセルの使い方(特定の場所に高電力セルが集中して熱を持つなど)」をしていないかをログやレポートでチェックし、必要に応じて制約を修正するのが主な役割となります。
TSMCのFINFLEXの3種類のセルを使い分け
論理合成は、1992年ぐらいから使っているけど、そんなに簡単にセルを指定できないような気がしたので、続けて、
TSMCのFINFLEXの3種類のセルを使い分ける場合、どんなツールを使うの という質問をしてみた
TSMCの3nmプロセス(N3)で導入されたFINFLEX(フィンフレックス)は、1つのチップ(ダイ)の中に、フィン構成の異なる3種類の標準セルを混在させる画期的な技術です。
この「使い分け」を人間が手動で行うのは不可能に近いため、Cadence(ケイデンス)やSynopsys(シノプシス)といった主要EDAベンダーの最新ツールが、TSMCとの共同開発によって自動最適化に対応しています。
1. FINFLEXで使い分ける「3つのセル」
まず、ツールが何を使い分けるのかを整理します。
| セル構成 | 特徴 | 主な用途 |
|---|---|---|
| 3-2フィン | 最高速(Ultra-High Performance) | CPUコア、高速演算回路 |
| 2-2フィン | バランス(Efficient Performance) | 一般的なロジック、GPUコア |
| 2-1フィン | 低電力・高密度(Ultra-Power Efficiency) | 制御回路、SRAM周辺、常時稼働ブロック |
2. 具体的な使用ツールと役割
FINFLEXの使い分け(ハイブリッド・ライブラリ設計)には、以下のツール群が使われます。
① 配置配線(P&R)ツール:これが主役
主なツール:
- Innovus (Cadence)
- IC Compiler II / Fusion Compiler (Synopsys)
- どう使うか: ツールに「このブロックは速度優先(3-2フィン)」、「このブロックは電力優先(2-1フィン)」という属性を与えます。 最新のツールは「混合配置(Mixed Row Placement)」に対応しており、同じエリア内に高さの異なるセル(2-1フィンと3-2フィンなど)を混在させて、タイミングが厳しいパス(道筋)だけを高速なセルに自動で置き換えます。
② 論理合成ツール
主なツール:
- Genus (Cadence)
- Design Compiler NXT (Synopsys)
- どう使うか: 設計の初期段階で、RTLからゲートレベルに落とし込む際、あらかじめ用意されたFINFLEX用の複数ライブラリを読み込ませます。ツールは、全体的な電力・面積(PPA)のバランスを見て、どの構成をベースにするかを選定します。
③ タイミング・サインオフツール
主なツール:
- Tempus (Cadence)
- PrimeTime (Synopsys)
- どう使うか: 最終確認ステージで、配線の影響で速度が足りなくなった箇所を特定します。その後、ECO(設計変更)フローを通じて、ピンの互換性を保ったまま「2-2セル」を「3-2セル」へ差し替えるといった精密な修正を行います。
3. ツールを使うための「準備」
ツールが自動で判断するためには、TSMCから提供される以下のデータ(PDK内)をツールに読み込ませる必要があります。
- Multi-Track Library: フィン数が異なるとセルの「高さ(トラック数)」が変わるため、高さがバラバラでも配置できるための特殊なLEF/LIBファイル。
- DTCO(設計とプロセスの共同最適化)ルール: 異なるフィン構成のセルを隣り合わせに置く際の電気的な制約ルール。
まとめ
FINFLEXを使いこなすには、CadenceのInnovusやSynopsysのFusion CompilerといったP&Rツールを使い、TSMC N3用のライブラリを「ハイブリッド・セット」として読み込ませて自動配置させるのが標準的な手法です。
どうやら
配置配線(P&R)ツール:これが主役
が重要っぱい。
IC Compiler II / Fusion Compiler (Synopsys)
が出てきたので、Fusion Compiler での使い方を聞いてみた
SynopsysのFusion Compilerで、TSMCのFINFLEX(N3プロセス以降)を使い分けるのは、どうするの?
SynopsysのFusion CompilerでTSMCのFINFLEX(N3プロセス以降)を使い分けるには、従来の「単一のライブラリ(Single-Track)」の考え方から、「Multi-Track Library (MTL)」という設計フローへの切り替えが必要です。
具体的にツール上でどのように指定・制御するのか、その主要なステップを解説します。
1. ライブラリの読み込み(Setup Phase)
まず、フィン構成(トラック数)が異なる複数のライブラリ(.dbファイル)をツールに認識させます。FINFLEXでは、3-2フィン(高トラック)、2-2フィン(中)、2-1フィン(低トラック)など、高さの異なるセルを共存させるため、これらを一括で読み込みます。
# 異なるトラック数(例:5T, 6T, 9Tなど)のライブラリをリンク set_app_var link_library "* lib_5t_lvt.db lib_6t_lvt.db lib_9t_lvt.db ..."
2. ライブラリ・コンフィギュレーションの定義
Fusion Compilerにおいて、FINFLEXの「使い分け」を司る最も重要なコマンドが set_lib_cell_purpose です。
ツールに対して、「どのライブラリを、どの最適化(PPA)のために使ってよいか」を明示的に指定します。
- コマンド例:
# 2-1フィン(高密度・低電力)を基本の配置(Optimization)用として定義 set_lib_cell_purpose -include optimization [get_libs lib_2_1_fin_5T] # 3-2フィン(高性能)をタイミング改善(Hold/Setup修正)用として定義 set_lib_cell_purpose -include {hold setup} [get_libs lib_3_2_fin_9T]
3. 混合配置(Mixed-Track Placement)の有効化
FINFLEXの最大の特徴は、同じエリアに高さの異なるセルを混在させる「Mixed-Track Placement」です。これを有効にするには、フロアプラン段階で以下の設定を行います。
- サイト定義(Site Definition): 異なる高さのセルを置くための「行(Row)」を定義します。
- アプリ・オプションの設定: ツールが自動で「タイミングが厳しいパスには高いフィン(3-2)を、それ以外には低いフィン(2-1)を」と判断できるようにします。
# Mixed-trackの最適化を有効にする set_app_options -list {place_opt.flow.mixed_track_utilization true} set_app_options -list {opt.common.allow_mixed_track_swap true}
4. 戦略(Strategy)による制御
特定のブロック(例:高速演算ユニット)だけを3-2フィンで固めたい場合は、set_pao_strategy (Power, Area, Optimization Strategy) を使用して、エリアごとの「重み付け」を変更します。
- クリティカル・パスへの集中適用: ツールはデフォルトで「面積最小化」を狙いますが、タイミングが間に合わない場合にのみ、自動的に「3-2フィン」のライブラリからセルをピックアップしてスワップ(入れ替え)します。
実務上のポイント
- Track Patterns: FINFLEXでは、電源レール(VSS/VDD)の共有が複雑になります。TSMC提供のテックファイル(tf)とLEFを読み込んだ後、
check_finflex_grid(または類似の検証コマンド)で、異なる高さのセルが正しくグリッドに乗っているか確認することが不可欠です。 - VT(しきい値電圧)との組み合わせ: 「フィン数(FINFLEX)」と「しきい値電圧(LVT/SVT/HVT)」の組み合わせは膨大になります。通常は、まずVTのスワップで最適化し、それでも届かない場合にフィンのスワップ(トラック変更)を行うのが定石です。
GAA のケース
TSMC N2 は、GAA (NanoFlex)なので同じように聞いてみた
TSMCのN2(2nmプロセス)では、トランジスタの構造自体が従来のFinFETからナノシート(Nanosheet / GAA:Gate-All-Around)へと劇的に進化します。
Fusion Compilerなどのツール上での扱いは、N3のFINFLEXをさらに進化させた「NanoFlex」という概念に移行します。
1. N2における「セルの使い分け」の進化
N3のFINFLEXでは「フィンの本数(2-1, 2-2, 3-2)」で特性を変えていましたが、N2のナノシートでは「ナノシートの幅(Width)」を調整することで、性能と電力を制御します。
- セルの高さの柔軟性: N2では「NanoFlex」と呼ばれる技術により、設計者はブロックごとに最適な高さの標準セルを選択できます。
- PPAの向上: N3Eと比較して、同じ電力なら10〜15%の速度向上、同じ速度なら25〜30%の消費電力削減が可能になるとされています。
2. Fusion Compilerでの設定・運用の変化
N2でも基本的なコマンド(set_lib_cell_purposeなど)は踏襲されますが、以下の点がより重要になります。
① ナノシート幅の自動最適化
これまでは「フィンの本数」という不連続な選択肢でしたが、ナノシートは理論上、幅を連続的に変えられます。Fusion Compilerは、タイミングの厳しさに応じて、ライブラリ内から最適な「シート幅」を持つセルを自動選択します。
② Backside Power Delivery (BSPD) への対応
N2の後半(N2Pなど)からは、チップの裏側から電源を供給する背面電源供給網(BSPD)が導入されます。
- ツールの役割: 従来の「表面の信号線と電源線の混雑」が解消されるため、Fusion Compilerはより高い密度でセルを配置できるようになります。これに伴い、
create_gridやset_power_railといった電源周りのスクリプト構成が大きく変わります。
③ AI駆動型設計(Synopsys.ai / DSO.ai)
N2は設計ルールが極めて複雑なため、人間がパラメータを振るのが限界に達しています。Fusion Compilerと連携するDSO.aiを使い、ツール自体に「どのエリアにどのNanoFlexセルを配置するのがベストか」を強化学習で探索させるフローが標準的になります。
3. 設計フローで準備するもの
N2向けにFusion Compilerを動かす際は、以下のデータが新たに必要になります。
- N2用iPDK: ナノシート特有の寄生容量(Cgs/Cgd)を考慮した新しいデバイスモデル。
- NanoFlexライブラリ: シート幅の異なる複数のセルライブラリセット。
- BSPD対応テックファイル: 裏面電源配線のルールが記述された最新のファイル。
まとめ:N3からの主な変更点
| 項目 | N3 (FinFET / FINFLEX) | N2 (Nanosheet / NanoFlex) |
|---|---|---|
| 調整パラメータ | フィンの数(離散的) | シートの幅(より柔軟) |
| 電源供給 | 表面配線 | 裏面配線 (N2P以降) |
| EDAツールの焦点 | トラック混在の最適化 | AIによる複雑なPPA探索 |
次は、N2での具体的な「背面電源(Power Rail)」の設計手法や、ライブラリのVT(しきい値)とシート幅の組み合わせ戦略について深掘りしましょうか?
TSMCによるN2 Nanosheet技術の解説ビデオ このビデオでは、TSMCがN2プロセスで導入するナノシート構造の利点や、次世代の演算性能・電力効率について視覚的に解説しています。
おわりに
- 論理合成 : Design Compiler NXT (Synopsys)p
- 配置配線 : IC Compiler II / Fusion Compiler (Synopsys)
が重要。Fabless だと、配置配線までやれるのは、なかなか難しいような気がしますね。
そういう意味でも、TSMC N3 は、かなり敷居が高いということなんですかね。。。