2019年11月19日火曜日

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で作るのが直感的だと思うが,そうでない作り方をされてしまった.自由な発想だ.よい子のみんなは自然な設計をしようね.

0 件のコメント:

コメントを投稿