DeepDataFlow
G2 入門 · 全 8 エピソード

G2 入門:ダウンロードからサインオフタイミングまで

自分の Linux マシンで動くチップ設計プラットフォーム G2 を、一歩ずつ紹介します。約 27 分で、G2 に同梱されたオープンソースツールだけを使い、ダウンロードから配置配線とサインオフタイミングを終えたブロックまで進みます。

公開日 2026-10-21 · 8 エピソード · DeepDataFlow
G2 入門:ダウンロードからサインオフタイミングまで

G2 は、自分の Linux マシンで動くチップ設計プラットフォームです。プロジェクト、ブロック、ライブラリ、サインオフシナリオ、設計データがすべて 1 つの Web ページにまとまり、ツールの実行が終わるとすぐに主要な数値が表示されます。このシリーズは最短の入門コースです。約 27 分で、G2 に同梱されたオープンソースツールだけを使い、ダウンロードから配置配線とサインオフタイミングを終えたブロックまで進みます。

この記事は 8 本の動画の記事版です。各セクションには、そのエピソードの動画、内容、そして実際に手を動かすために必要なコマンドと数値をまとめています。すべて無料の G2 Community Edition で試せます。

プラットフォームG2 v1.0.0 Community Edition。Linux 上でブラウザから使うワークスペース
ツールYosys、OpenROAD、OpenRCX、OpenSTA(Verilator、Magic、Netgen も同梱)
PDKNangate45、SkyWater 130、ASAP7。すぐに実行できるデモケース付き
設計全エピソードで Nangate45 上の gcd
結果v01 はサインオフで 1 GHz に 1.95 ns 届かず、v02 で制約を直すと不足は 9 ps

トレーラー

1 分でわかる G2

1:13

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

すべてが 1 つの Web ページにあります。プロジェクト、ブロック、ライブラリ、シナリオ、設計データです。トレーラーでは実際のブロック gcd を RTL から配置配線、サインオフタイミングまで進め、すべてのステージとすべての結果を 1 つの表で見せます。ツールを実行するたびに、タイミング、密度、実行時間といった主要な数値がすぐに表示されるので、ログファイルを grep する必要はありません。タイミングが失敗したら、どのパスでも開いて遅延の原因を確認できます。

裏側では、G2 がすべての設計データをバージョン管理しているので、どのネットリストからどの結果が出たのかが常にわかります。さらに、G2 の手順を知っている AI アシスタントがフローを実行してくれます。これらすべてが 1 つのダウンロードに入っており、OpenROAD、Yosys、OpenSTA、PDK、デモが含まれています。

第 1 部:セットアップ

#1インストールと起動

3:07

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

G2 Community Edition は GitHub にあり、必要なものは 1 つのリリースパッケージにまとまっています。G2 プラットフォームは Ubuntu 22.04 以降、Rocky または RHEL 8 以降で動きます。同梱の OpenROAD、Yosys、Verilator には glibc 2.35 以降、つまり Ubuntu 22.04 以降が必要です。

G2 はいくつかの標準的な Linux ツールを使います。Ubuntu では 1 行でインストールでき、sudo が必要なのはこのステップだけです。

sudo apt-get install -y xterm tcsh vim-gtk3 firefox tcl coreutils gzip

次にリリースパッケージ(約 530 MB)をダウンロードして展開します。G2 にはインストーラーがなく、root 権限も不要です。中には G2 本体、同梱の Node.js ランタイム、Nangate45・sky130・ASAP7 を含む pdk フォルダがあります。オープンソースの EDA ツールは g2/free にあります。

wget https://github.com/DeepDataFlow/G2/releases/download/v1.0.0/G2_v1.0.0.tar.gz
tar zxvf G2_v1.0.0.tar.gz
mkdir g2
cd g2
../G2_v1.0.0/g2/bin/g2init
source g2.rc
g2

ワークスペースはプロジェクトとデータを置く場所です。g2init は空いているポートを選び、ワークスペースのフォルダを作り、g2.rc を書き出します。g2.rc は環境を設定し、G2 と同梱ツールをすべてパスに追加します。g2 はサーバーを専用のウィンドウで起動します。サーバーはトークン付きのログイン URL を表示します。 トークンを含めた URL 全体を Firefox にコピーしてください。

ホームページはプロジェクトの一覧です。プロジェクトを作ると、プロジェクトページには G2 の各機能のタブがあります。

タブ内容
Impl実装:ツールを実行する場所
Specプロジェクト設定
Blk各ブロックの目標(速度や面積など)
Scenサインオフシナリオ:モードと PVT コーナー
LIMライブラリマネージャー
DDM設計データをバージョン管理する設計データマネージャー
SCMスクリプト

次回からは 3 つのコマンドだけです。ワークスペースに cd し、source g2.rc、g2 を実行します。

#2コマンド 1 つでデモプロジェクト

3:55

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

G2 には 3 つの PDK すべてのデモケースが付属しており、このシリーズでは Nangate45 を使います。build.sh は短い手順のリストです。プロジェクトを作り、サインオフシナリオを定義し、PDK を指定し、ライブラリをインストールし、gcd と spm の 2 つのブロックを作ります。どの手順も UI で手作業でできますが、スクリプトなら時間を節約できます。

$G2_ROOT/demo_case/nangate45/build.sh   # sky130/ と asap7/ もあります

新しいプロジェクトで各タブの内容を見てみます。

  • Spec はプロジェクト全体の設定です。テクノロジー LEF、RC ファイル、論理合成で使うコーナー。
  • Scen には functional と shift の 2 つのモードがあり、それぞれ 4 つの PVT コーナーを持ちます。125 °C と −40 °C の低速、高速、標準です。以降のすべてのタイミング解析でこれを使います。
  • LIM には Nangate45 のスタンダードセルがバージョン v1 としてインストールされています。G2 がすべての liberty ファイルを解析しているので、セル、面積、ピン機能をその場で閲覧できます。メモリマクロも同じ方法で管理します。
  • Blk は各ブロックの目標です。gcd はクロック 1 GHz、占有面積 600 × 600 µm です。各ブロックは使うライブラリを名前とバージョンで指定しており、どのフローもどのライブラリを読み込めばよいかがわかります。
  • DDM にはすでに gcd の RTL が入っています。

第 2 部:RTL からサインオフへ

#3Yosys、OpenROAD、OpenSTA で RTL から GDS へ

6:16

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

G2 では、実装の試行はすべてバージョンです。バージョンは最初は空のフォルダで、そこにフローを 1 つずつチェックアウトします。このエピソードでは gcd の v01 を作ります。

まず論理合成です。ここでシリーズで最も重要なことを学びます。G2 のすべてのフローは、同じビューを同じ順番で持っています。

ビュー役割
Script実行スクリプトを取得
LIMライブラリを選択
DDM入力データをリンク
Execツールを実行:Gen が実行スクリプトを書き、Run が起動
QAチェックリスト
Chkin結果を DDM に公開

Yosys でこれを覚えれば、OpenROAD、OpenSTA、その他すべてのフローでも同じです。DDM ビューには、この実行が使う入力データが正確に表示されます。ここでは RTL バージョン v2 と論理合成用の SDC です。実行後、QoR がログとレポートを解析し、セル数、レジスタ数、エラー数のカードに表示するので、ログを読まなくても成功したかどうかがわかります。チェックインでネットリストが syn v01 として DDM に公開されます。これが受け渡しです。次のフローはこのフォルダからではなく、DDM からネットリストを受け取ります。

OpenROAD にも同じビューがあり、フローは 8 つのタスクに分かれています。init、フロアプラン、配置、クロックツリー合成、ポスト CTS、配線、ポストルート、フィニッシュです。各タスクには専用のサブページとログがあります。Gen all、Run all を実行すると、各タスクがステータスと QoR を報告します。実行時間、エラー、シナリオごとのタイミング、密度です。

完成した gcd:大 2 個・小 4 個の計 6 個のメモリマクロと、その周りに配置されたスタンダードセル。
完成した gcd:大 2 個・小 4 個の計 6 個のメモリマクロと、その周りに配置されたスタンダードセル。

続いてサインオフです。OpenRCX が配線済みレイアウトから寄生成分を抽出し、SPEF を DDM にチェックインします。OpenSTA の Gen all は、Scen タブのシナリオごとに 1 回の実行を作ります。2 モード × 4 コーナーで、それぞれのワーストスラックが一目でわかります。

そしてサインオフが問題を見つけます。 低速コーナーでセットアップが 2 ns 近く(−1.95 ns)不足しています。ブロックの仕様は 1 GHz ですが、配置配線の制約では 4 ns のクロックを使っていました。これこそサインオフの役目で、第 5 回で修正します。

このエピソードでクリックした操作はすべてスクリプト化できます。回帰テストや夜間ビルドに便利です。

$G2_ROOT/demo_case/nangate45/gcd_rtl2gds.sh

#4設計データ管理(DDM)

2:26

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

G2 では、フローが互いのフォルダを直接読むことはありません。すべてのフローは設計データマネージャー DDM から入力を受け取り、出力を DDM に公開します。

すべてのフローは DDM から読み、DDM に公開します。Yosys は RTL を読んで syn を公開し、OpenROAD は apr_finish を公開し、OpenRCX が SPEF を加え、OpenSTA は両方を読みます。
すべてのフローは DDM から読み、DDM に公開します。Yosys は RTL を読んで syn を公開し、OpenROAD は apr_finish を公開し、OpenRCX が SPEF を加え、OpenSTA は両方を読みます。

DDM タブには、プロジェクト内のすべてのブロックとデータタイプが表示されます。gcd には RTL、論理合成のネットリスト、モードごとの SDC、そして配置配線の各ステージ後のスナップショットがあります。各データタイプは多くのバージョンを持てて、そのうち 1 つが公開(publish)されます。下流のフローが既定で使うのはこれです。

各バージョンは自分の出どころを覚えています。ネットリスト syn v01 は impl/gcd/v01 の Yosys 実行で作られたもので、1 クリックでその実行に戻り、ログと QoR を確認できます。使う側では、各フローとタスクに DDM ビューがあります。OpenROAD の init タスクは syn v01 と配置配線の制約を読みます。別の制約を試すには、そこでバージョンを変えて再実行するだけで、ファイルをコピーする必要はありません。

中身は普通のフォルダとシンボリックリンクです。保守すべきデータベースはなく、すべてシェルから確認できます。どんな結果についても、それを作ったデータは何か、そしてそのデータを作った実行はどれか、という 2 つの問いに答えられます。

第 3 部:比較とデバッグ

#5実装結果を並べて比較

4:15

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

実験の変更は 1 つだけです。v02 には DDM で新しい配置配線制約 sdc_apr_func v02 を使い、仕様に合わせてクロックを 1 ns にします。各バージョンは独立しているので、v01 には影響しません。フローはこれまでどおり実行し、OpenROAD の init タスクは sdc_apr_func v02 を読むようになります。1 つ重要な点があります。OpenRCX と OpenSTA は、入力ができてからチェックアウトしてください。そうすることで v02 のレイアウトに紐づきます。

v01 と v02 を並べた Status ビュー:サインオフのセットアップが −1.951 ns から −0.009 ns に。
v01 と v02 を並べた Status ビュー:サインオフのセットアップが −1.951 ns から −0.009 ns に。

ブロックレベルの Status ビューでは 2 つのバージョンが並びます。ステージセレクターで表示する指標を切り替えます。フロントエンドは論理合成の数値、APR は配置配線、Signoff はシナリオごとのタイミングです。v01 は 1 GHz に 2 ns 近く届かず、v02 の不足は 9 ps です。Column ボタンで表示する指標を正確に選べるので、1 つの数値を探しているときに便利です。1 つ上の階層では、プロジェクトのすべてのブロックを一度に見られます。プロジェクトリーダーが毎朝確認する画面です。

#6tpath でタイミングパスをデバッグ

2:19

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

対象は低速コーナー(0.81 V、125 °C)のセットアップです。OpenSTA の元のレポートは数千行あり、普通はスクロールして grep するものです。tpath はこれを解析して要約します。まずパスグループごとのワーストスラックが表示され、どの種類のパスが問題なのかがすぐにわかります。レジスタ間が 9 ps 不足し、入力からレジスタ(+0.145 ns)とレジスタから出力(+0.247 ns)は満たしています。次に、すべてのパスがスラック順に並びます。

tpath で開いた 1 本のパス:データ遅延 0.978 ns とセットアップ 0.030 ns に対し、周期は 1 ns。理想クロックなのでクロックレイテンシとスキューはゼロ。
tpath で開いた 1 本のパス:データ遅延 0.978 ns とセットアップ 0.030 ns に対し、周期は 1 ns。理想クロックなのでクロックレイテンシとスキューはゼロ。

パスを開くと、始点と終点、ラウンチクロックとキャプチャクロック、スラックが表示されます。そしてパスを要素に分解します。データロジックが 0.978 ns、キャプチャ側のフリップフロップに 30 ps のセットアップが必要で、1 ns の周期をわずかに超えます。この実行は理想クロックなのでクロックレイテンシとスキューはゼロです。つまり直すべきはロジックであって、クロックツリーではありません。 このパスの元のレポートテキストも 1 クリックで開けます。tpath は PrimeTime、Tempus/Innovus、DC、Fusion Compiler のタイミングレポートも読めます。

第 4 部:AI アシスタント

#7チップ設計フローの AI アシスタント

3:09

YouTube で見る(英語) ↗Bilibili で見る(英語) ↗

G2 の AI アシスタントは スキル から知識を得ます。各スキルは、G2 のタスク 1 つ分の手順書です。プロジェクトやブロックの作成、ライブラリのインストール、Yosys・OpenROAD・OpenSTA の実行などがあります。スキルはプレーンテキストで、第 3 回と同じ手順を並べています。チェックアウト、スクリプトの取得、ライブラリの取得、生成、実行、チェックインです。アシスタントは独自の手順を作らず、G2 の実際の手順に従います。

動画ではエージェントに opencode を使っています。エージェントの指示とスキルをワークスペースにコピーして起動します。

cd $G2_SYS
cp $G2_ROOT/aiagent/AGENTS.md .
mkdir .opencode
cp -r $G2_ROOT/aiagent/skills .opencode/
opencode
  • 「How do I run OpenROAD for gcd?」のようにやり方を尋ねると、何も実行せずに説明します。
  • 「Create a new version v03 for gcd in nangate45」のように実行を頼むと、新しいバージョンがすぐにブラウザに現れます。
  • 「Run yosys on gcd v03 and check the netlist into DDM」のような大きな作業では、まず計画を立て、UI のボタンと同じコマンドで 1 ステップずつ進めます。結果は普通の G2 の実行で、同じ QoR カードと同じ DDM チェックインがあり、確認することも手作業でやり直すこともできます。
  • 何かが足りないときは推測しません。まだバージョンのないブロックで「Run yosys on spm」と頼むと、止まって先に v01 を作るかどうかを尋ねます。

次のステップ

これが G2 です。すべてのフローの Web UI、バージョン管理された設計データ、そして手順を知っているアシスタント。