2024年6月14日金曜日

FreePDK3を見てみる

FreePDK3 の存在を教えてもらったので見てみた.GitHubにあります.

特徴

  • NanoSheet FET
  • 埋め込み電源層(BPR)



断面の模式図.図はSynopsysから

デザインルールで気がついたこと

  • Middle on Line (MOL)では,M0A,V0A,GCON,M0B,V0B があり,M0A で Active につなぐ.M0A は V0A で M0B につなぐ.GATE は GCON で M0B につなぐ.GCON と V0A は同じ VIA 層なのでスペースが必要.M0B は V0B で M1 につなぐ.
  • Active (Diffusion というか NanoWire というか)は連続でないといけないみたい.プレーナーみたいなパストラは作れない?
  • いわゆる Single Diffusion Break みたい.Break していないけれど.

提供されているもの

  • 回路シミュレーション (HSPICE)
  • DRC/LVS (IC Validator)
  • RC抽出 (Star-RC)
  • レイアウト設計 (CustomCompiler)
  • いくつかのセルレイアウト
  • デザインルールマニュアル

CustomCompilerのテクノロジライブラリは以下にある.
$PDK_ROOT/syncust/NSCU_TechLib_FreePDK3

セルライブラリは以下にある.
$PDK_ROOT/examples/FreePDK3_examples
Inverter,NAND2,NOR2,AND2,OR2,XOR(Single-Row,Multi-Row),Latch,D-FFセルが用意されている.


D-FF のレイアウト(イオンインプラントを除く).2-Row セルなのね.SR-Latch を呼び出して D-FF を作っているので,あまり効率が良くないような.これ並べておいたら DRC 違反出るんじゃない.そもそもGate (縦の赤いレイヤー)が密かつ規則的に配置されていないのだけれど,そんなデザインルールでいいのだろうか.

修士の学生が作ったらしいが,正直テクノロジファイルを作成するだけで精一杯だったと書いていた.そりゃそうかもしれん.BPR も Star-RC でどうモデル化したらいいかわからないと言っているし,パラメータの妥当性もよくわからないし,研究に使うには危ないかも知れない.修論はこちら

CustomCompiler,Milkyway DB ではなくて OpenAccess を使っているのね..cds.init,.cds.env を移植したら Virtuoso で表示できてびっくり.

2024年6月11日火曜日

Resistance is Futile! Building Better Wireload Models を読む

 
論理合成で配線負荷を見積もる Wire-load Model を理解するために論文をサクッと読んでみた.
Steve Golson, "Resistance is Futile! Building Better Wireload Models", SNUG, 1999

Wire-load Model の基本

Wire-load Model は実際のレイアウト情報を使う事無く,配線の特徴(配線遅延)を予測する物である.配線とそれに接続されるファンアウトから,Wire-load モデルによって負荷容量,負荷抵抗,配線の面積を予測する.ライブラリによって設計される回路の統計的情報から,Wire-load モデルは作られる.回路の配線とその負荷容量をヒストグラムにできる.得られたヒストグラムのうち,度数の90%以下を10分割して Index を作成する事で非常に保守的な Wire-load モデルを作成できる.同じ方法で抵抗および面積のWire-loadモデルを作成できる.
一般にベンダーは面積条件に応じて複数の Wire-load モデルを提供している( Area-Based Wireload Selection ).

Wire-loadモデルの「神話(根拠の薄い社会通念)」


神話1:配置配線される回路の面積レポートを元に,Wire-loadモデルを選ぶこと

これは絶対的な教義であるが,実はフロアプランがなくてもおおよそ妥当な配線負荷を Wire-load モデルは提供できる.回路が大きかろうが小さかろうが論理的に隣接するセルは近傍に置かれる事が期待されるためである.
もちろん大きいブロックは長距離配線があるのでその部分は見積もりが悲観的にはなりやすい.

神話2:ある面積条件に対して一つのWire-loadモデルで十分である

十分ではない.同じ面積であっても,回路の条件によって異なる配線負荷となりうる.一方で「単一の Wire-load モデル」で十分との報告もある.

神話3:配線抵抗はゼロにすべき

誤っている.これは配線遅延をゼロにする事に相当する.ワイヤ容量だけでも配線遅延と電力見積もりには貢献しているが.

神話4:配線面積をゼロにすべき

実際には配線は面積を要求する.面積の情報を提供できると,DesignCompiler は配線面積を考慮しながらゲートレベルの最適化を実現する.

神話5:ベンダーの提供するWire-loadモデルを常に信用すべき

そうとは限らない.仮にベンダーの Wire-load モデルがあっても,以下の条件では精度が落ちうる.
  • 設計対象がベンダーの Wire-load モデルより大きい
  • ネットリストの条件が異なる(配線が多い,混雑している,IOが多い)
  • アスペクト比が異なる
  • 設計フローが異なる.
ベンダーによっては Wire-load モデルに求める精度が異なる事も考慮すべき.

神話6:カスタムしたWire-loadモデルが常によい

これは Design-Specific Wire Model と呼ばれており,最初に配置配線を試し,そこから得られた配線の統計情報からその回路専用の Wire-load モデル を構築するものである.神話1と同様に広まっているが,同時に疑わしいらしい.

例えば以下の条件によって精度が落ちうる.
  • ベンダーが用意した大量の回路から得た統計的モデルに対し,本モデルは限られたサンプルから生成される.
  • 設計初期の Netlist から Wire-load モデルは作成されるが,それは設計後期の条件とは異なる.
  • モデル生成ツールが設計者が想定していないモデルを利用する可能性がある.
  • 各インスタンスが独自の Wire-load モデルを取得するようにフローを一意にする必要があるかもしれない(マクロごとにWire-load モデルを使い分けないといけないということ?)

神話7:Wire-loadモデルは配線後の統計と一致していないといけない

これは神話6の背景にあるものだが間違っており,一致する必要は無い.Wire-load モデルの目的は形状(配線長)の予測ではなく,配線時のタイミングを予測する事が目的である.

論文は Wire-load モデルと実際の設計の相関の解析などを紹介しているけれど,そこは省略. Design-Specific Wire Model が良いのかなと思っていたけれど,そうとは限らないというのが意外であった.あとトレッキーだな.

2024年6月3日月曜日

Linux Mint 21.2 に Gnuplot をソースから入れる

Tgif でグラフをお絵かきする古い人間なので, Linux Mint 21.2 に Gnuplot をソースから入れます.CentOS の時より変に苦労した.

オチ:
 

やった手順.ボスに絵日記と言われるやつ.
Gnuplot を SourceForge からダウンロードして解凍
https://sourceforge.net/projects/gnuplot/files/gnuplot/

 
このまま Make すると
 
で死ぬ../configure --with-qt=qt5してみたけれど単体では効果無し(そりゃそうだ)

qtbase5-dev を入れるといいらしい.
 

したら Make は通るけれど Make Installでだめ
 
調べたら,QT5のバージョン依存なので以下を入れろというアドバイスがあった.
qttools5-dev-tools libdtkwidget-dev libdtkwm-dev pkg-config

実際には qttools5-dev-tools だけ入れたら動いた.
 
libdtkwidget-dev libdtkwm-dev は apt に無かった.pkg-config は入れなくても通った.


GUI が QT になったのかね.ソースから入れると /usr/local/bin に入るのね.

だめだったアドバイス.
https://sourceforge.net/p/gnuplot/bugs/2591/
 
https://groups.google.com/g/comp.graphics.apps.gnuplot/c/1etT8-2x8cg