ラベル Milkyway の投稿を表示しています。 すべての投稿を表示
ラベル Milkyway の投稿を表示しています。 すべての投稿を表示

2024年1月15日月曜日

Milkyway でセルが正常に更新されなくて困っていた

オチ:Virtuoso の StreamOut のログとMilkywayのログをちゃんと確認すること.

ASAP7 ではセルを 4x して配置配線するので,1x ライブラリをコピー→ XScale を使って 4x → StreamOut → Milkyway DB → IC Compiler で配置配線をしていたのだが,一部のセルのサイズが変わらなくて困っていた.オチはは OA ライブラリ中に同名の別セルが存在していたことが原因だった (具体的には,4x ライブラリのセルが 1x ライブラリの INVx2_ASAP7_75t_SL をインスタンスとして読んでしまっていた).

StreamOut はちゃんと警告していて,ダブった方を "INVx2_ASAP7_75t_SL_0" とリネーム("_0")している.リネームされたのが 1x セルならよかったのだが,4x セルがリネームされてしまったのであった.

...
WARNING (XSTRM-145): The structure name 'INVx2_ASAP7_75t_SL' has been changed to 'INVx2_ASAP7_75t_SL_0' by the translator. This could be because multiple cells with the same cell name exist in different libraries, the same cell name has been mapped to multiple cell names, or the cell name length is greater than the '32' that was specified using the '-respectGDSIINameLimit' or '-gdsCellNameLength' option.
...

Milkyway の setPRBdry のログを確認すると正しく電源が抽出されているように見えたのだが,

...
Cell [INVx2_ASAP7_75t_SL_0.FRAM] has 2 horizontal p/g rails on MET1.
         the 1 rail's net type is gnd
         the 2 rail's net type is power
Extracting P/G track for cell INVx2_ASAP7_75t_SL_0.FRAM
power/ground track (low, high): (-144, 144) (4176, 4464)
...

これはリネームされた 4x セルで,本来の名前のままの 1x セルは処理中には異なる位置の電源が抽出されており,ちゃんと「電源おかしいで」と警告されていたのであった.

...
Cell [INVx2_ASAP7_75t_SL.FRAM] has 2 horizontal p/g rails on MET1.
         the 1 rail's net type is gnd
         the 2 rail's net type is power
Extracting P/G track for cell INVx2_ASAP7_75t_SL.FRAM
power/ground track (low, high): (-36, 36) (1044, 1116)
WARNING: cell AOI321xp33_ASAP7_75t_SL.FRAM and NAND2x1p5_ASAP7_75t_SL.FRAM have different PG rail extension.
...

余談だけれど,スタセルの外形情報は Milkyway のログから抽出してもいいかもしれない.Virtuoso をゴリゴリスクリプトで動かすのは結構遅いので.

2021年3月11日木曜日

Milkywayでセルの配線可能性を確認する.(check_library)

Milkywayでライブラリの検証を行う事ができる.最初に set_check_library コマンドで検証対象を設定し,check_library コマンドで検証を実行する.

set_check_library
-routeability:配線可能性を確認し,オフトラックのポートの数と名前をレポートする
-drc:FRAMに対してDRCをかける
-view_comparison:CELとFRAMの整合性を確認する
-antenna:アンテナ検証を行う
-signal_em:エレクトロマイグレーションルールの無い配線層を確認する
-same_name_cell:異なるリファレンスライブラリで同じ名前のセルが無いか確認する
-rectilinear_cell:セルが矩形の境界内に収まっているか確認する
-phys_property place:セルの配置制約を確認する.配置配線の境界条件,セルの高さ,UnitCell,タイルパターンなど.
-phys_property place:セルの配線制約を確認する.ポートへの配線層,配線可能性など.
-physical_only_cell:タップやダミーなどタイミング情報の無いセルを確認する.
-rail view_data:セルの電源情報を確認する.PrimeRailで作成するCONN Viewが必要.
-tech_consistency:複数のライブラリ間のテクノロジファイルの整合性を確認する
-tech:ライブラリのテクノロジーデータを確認する.
-cell {list cell1 cell2...} :チェック対象のセルを列挙する.列挙しない場合は全てチェックする.
-all:全て確認する.

実行してみるとこんな感じ
Milkyway> set_check_library -routeability
1
Milkyway> check_library

#BEGIN_CHECK_LIBRARY

   Main library name: /home/****
   Check date and time: Mon Mar  1 19:00:50 2021

#BEGIN_CHECK_PHYSICALPROPERTY

Information: List of routing properties  (LIBCHK-122)
Unit tile : unitTile
  -----------------------------------------------------------------------
              Preferred      Track
   Layer      direction    direction   Offset    Pitch     Remarks
  -----------------------------------------------------------------------
   M1             V            V       0         0.072     OK
   M2             H            H       0         0.072     OK
   M3             V            V       0         0.144     OK
   M4             H            H       0         0.192     OK
   M5             V            V       0         0.192     OK
   M6             H            H       0         0.256     OK
   M7             V            V       0         0.256     OK
   M8             H            H       0         0.32      OK
   M9             V            V       0         0.32      OK
   Pad            H            H       0         0.32      OK
  -----------------------------------------------------------------------

#END_CHECK_PHYSICALPROPERTY

#BEGIN_CHECK_ROUTABILITY


   Total number of pins without on-track routeability: 0 (out of 0)

#END_CHECK_ROUTABILITY

#END_CHECK_LIBRARY

1
Milkyway> 

ちなみに,IC Compiler のマニュアル(Library Data Preparation for IC Compiler, 2011)に「Milkyway の tcl モードでこのような検証ができます」と紹介されていたのだが,マニュアルでは set_check_library_options とされていた (ICCで実行する時は set_check_library_options なのかもしれないが,実行すると「LibraryCompilerがインストールされてないぞ!」と怒られた).一方でMilkywayのマニュアルを調べたところ,調べられた最古の Version 2007 から PDF は「将来リリースするよ」というダミー PDF しか入っていなかった.ダメじゃん.(いろいろ打ち込んでコマンド違いに気がついた)

2019年11月19日火曜日

Milkywayでセルの配線可能性を評価する

Milkyway でライブラリ中のセルの配線可能性について評価するには,Check Wire Track を実行する.メインウィンドウのWire Tracks -> Check Pin on Track を選ぶ.
ライブラリ名を指定し,Unit Tileを指定すると,そのUnit Tileを利用するセルの配線可能性を評価し,配線がオフグリッドのものを列挙してくれる.(セル名とピン番号を列挙してくれる)

IC Compiler でマルチハイトセルを使う

IC Compiler でマルチハイトセルを使うメモ.ちゃんとしたセルを使わないと罠にはまるので注意.

(1) マルチハイトのセルを作成する.
このとき,最も下の行(横列)の電源の構造が,シングルハイトセルと同じにならなければいけない制約がある.つまり,普通のセルの電源レールが上から VDD/VSS の場合,マルチハイトセルは VSS/VDD/VSS となるべきで VDD/VSS/VDD ではいけない.

(2) マルチハイトの Unit Tile をテクノロジファイルに定義する.
一般に配置配線ツールはスタンダードセルの最小単位(Unit Tile)を定義し,そのグリッドにスタンダードセルを配置する.Astro (ICC)のテクノロジファイルにマルチハイトの Unit Tile の大きさを定義する.

/*シングルハイト*/
Tile "unit" {
width = 0.2
height = 1.8
}
/*マルチハイト*/
Tile "unit_2" {
width = 0.2
height = 3.6
}

(3) マルチハイトセルを認識させる
Set PR Boundaryを実行する.実行すると,セルの高さを認識し電源レールの順番を報告してくれる.

この後,Set Multiple Height PR Boundary (cmSetMultiHeightProperty)を実行する.
このとき以下のフィールドに以下のように記入する.
Library Name : ライブラリの名前
Cell Name : マルチハイトセルの名前,アスタリスクも使える.

LEF IN の時だけ必要で GDS IN の時は不要という説もあるらしい.また,マルチハイトセルでは複数の電源を持つこともできる.パワーゲーティング用だろうか.

(4) 配線トラックの定義
Unit Tile の配線トラックを定義する.Define Wire Tracks (axgDefineWireTracks) を使ってシングルハイトセル用のトラックを定義しているはずなので,それをマルチハイトセルにも実行する.この際,テクノロジファイルで定義した Unit Tile の名前をつけること.

;; シングルハイトセル
geOpenLib
setFormField "Open Library" "Library Name" "myLib"
formOK "Open Library"
axgDefineWireTracks
setFormField "Define Wire Track" "m1Dir" "horizontal"
setFormField "Define Wire Track" "m2Dir" "vertical"
...
formOK "Define Wire Track"
;; マルチハイトセル
geOpenLib
setFormField "Open Library" "Library Name" "myLib"
formOK "Open Library"
axgDefineWireTracks
setFormField "Define Wire Track" "Apply To" "specified"
setFormField "Define Wire Track" "User TileName" "unit_2"
setFormField "Define Wire Track" "m1Dir" "horizontal"
setFormField "Define Wire Track" "m2Dir" "vertical"
...
formOK "Define Wire Track"

(1) にはまった,というか,普通VDD/VSSで作ったらマルチハイトセルはVSS/VDD/VSSで作るのが直感的だと思うが,そうでない作り方をされてしまった.自由な発想だ.よい子のみんなは自然な設計をしようね.

2013年7月13日土曜日

MilkywayでFRAM Viewが作られないときの対応方法

Milkywayでフィジカルライブラリを作成するときに,

Warning: Skip generating FRAM view for cell (HOGE) because cell
 type option is not enable or mis-matched. (RT-116)


といってFRAM Viewが作られない事がある.ワーニングの通り,マクロのcell typeが指定されていない事が原因である.GDSをStream Inする時に,Cell Type Difinition Fileを適切に読み込む事でcell typeを指定する.Cell Type Difinition FIleには,cell typeと対応するマクロの名前を書けばよい.例えばHOGEをスタセルとして認識させるには

gdsStdCell HOGE

とすればよい.GDS中のすべてのセルを指定するのであれば

gdsStdCell *

の様に'*'を使うことも可能である.

MilkywayのコマンドとしてCell Typeを定義することもできる(Schemeモードであれば cmMarkCellType)が,なぜかこのコマンド実行してもTrueを返すわりにcell typeの定義はできていないようで,cmMarkCellTypeを実行してもFRAM Viewは作られない(バグ?).