2018年11月29日木曜日

Preparing missing pieces for IC Compiler in ASAP 7nm PDK

Arizona State University collaborated with ARM provides predictive 7nm process PDK for education[1].
http://asap.asu.edu/asap/

They provide LEF for Cadence Innovus for P&R, however, they did not provide technology file for Synopsys IC Compiler.
(in ICCAD 2017[2], the tech file for ICC is announced as under construction).

To use IC Compiler in ASAP 7nm PDK, following files are required.

(1) Technology file for IC Compiler(Astro, .tech/.tf)
Defines layer stack properties, design rules, VIA macros, display settings for IC Compiler. Techfile is converted from the LEF file using Milkyway.
(2) GDS2A
Layer conversion table from GDS to Astro(Milkyway).
(3) A2GDS
Layer conversion table from Astro(Milkyway) to GDS.
(4) Interconnect Technology File (ITF)
Defines layer stack specifications. For ASAP 7nm, layer stack specifications are described in [3].
(5) TLUplus (Table Lookup plus?)
Defines layer stack specifications for IC Compiler. TLUplus is converted from the ITF using StarRC.
(6) Milkyway physical library
With (1) ~ (5), Milkyway library is converted from a GDS.
(7) Timing library (Synopsys database, .db)
Timing library (.db) is converted from Liberty (.lib), using LibraryCompiler.



Since TLUplus is used to estimate RC parasitic in inter-cell routing, ITF design is important.

[1] L. T. Clark, V. Vashishtha, L. Shifren, A. Gujja, S. Sinha, B. Cline, C. Ramamurthy, and G. Yeric, “ASAP7: A 7-nm finFET predictive process design kit,” Microelectronics J., vol. 53, pp. 105–115, 2016.
[2] V. Vashishtha, M. Vangala, and L. T. Clark, “ASAP7 predictive design kit development and cell design technology co-optimization: Invited paper,” in ICCAD, pp. 992–998. 2017.
[3] V. Vashishtha, A. Dosi, L. Masand, and L. T. Clark, “Design technology co-optimization of back end of line design rules for a 7 nm predictive process design kit,” in ISQED , pp. 149–154, 2017.

2018年11月11日日曜日

レイアウトを画像に変換する

大量のセルレイアウトを画像にしたくなったので調べたら,Cadence Community ForumにQ&Aがあった.
https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/21784/export-image

dd=ddGetObj( "libname" "cellname" "layout" "*")
viewType=ddMapGetFileViewType(dd)

wid = hiCreateWindow( list(0:0 800:800) "none" "Export Window")
wid->neverCurrentWindow = t 
deOpenCellView( "libname" "cellname" "layout" viewType wid "r")

sprintf(imageFile "%s.png" "cellname")
hiExportImage(
  ?fileName strcat("pic" "/" imageFile)
  ?exportRegion 'entireDesign
  ?bgType 'transparent
  ?window wid 
)
hiCloseWindow(wid)

hiExportImage ではstrcatを使って,保存ディレクトリ,"/",ファイル名を結合して特定のディレクトリにファイルを保存しているようだ.

Andrewさんいつも的確に答えていて素敵すぎる.

2018年10月16日火曜日

SiliconSmart がキャラクタライズに失敗するときの対策

SiliconSmart を用いてキャラクタライズをしているとき,あまりにも遅いセルを使っていると

Info:    Failed tasks:
Info:      INV_01X_1:
Info:          delay__A__lh__YB__hl__ACQ_1

とキャラクタライズに失敗する.セルが最大入力スリュー時間制約(=シミュレーション時間制約)や最大出力スリュー制約を満たさない時,このようにキャラクタライズに失敗する.この場合,時間制約を延ばすと出力が反転しシミュレーションに成功する可能性がある.これらスリューの制約は以下の設定で変えられる.

largest_slew float:最大入力スリュー時間
max_tout float:最大出力スリュー制約

長くするとそれだけシミュレーション時間が長くなる.

2018年10月10日水曜日

論理合成で回路の活性化率を指定する

入力ピンの活性化率によって,回路の動的電流とリーク電流の割合が変化する.
これを論理合成時に考慮させるには,以下のオプションを使う.

set_switching_activity -toggle_rate trate -clock clk -static_probability staticp -select inputs
staticp は0.0から1.0の値で,入力が1となる割合.
trate は0.0から1.0の値で,入力の遷移確率.

2018年10月9日火曜日

レイアウトを拡大縮小する(XScale)

レイアウトを拡大縮小する(Zoomするのではなく,物理的に拡大縮小する)方法として,Virtuoso についているXScaleを使う手法がある.

% XScale -mag [倍数] -lib [OAlib name] -view layout (-cell [cell name])

-mag にはズーム比を入れる.4であれば,縦横4倍の16倍の大きさとなる.0.5など小数も受け付ける.

2018年9月26日水曜日

3D Layout GUI (on innovus)

Cadence Innovus の最新版(18.1)では,レイアウトを3Dで表現できるらしい.

(画像はThe Sound of Cadenceへのリンク)
https://www.cadence.com/content/cadence-www/global/ja_JP/home/soc/2018/jul/volume27/issue2.html

自動配置配線(Innovus)よりはカスタムレイアウト(Virtuoso)で欲しかった機能ではある.ここで断面を見たい!と何度思ったこと事やら.
時代がようやく土谷先生に追いついた感じ.(土谷先生のはこちら)
http://www-lab13.kuee.kyoto-u.ac.jp/~tsuchiya/gsu/index.html

2018年9月18日火曜日

VISAとSCPI

VISAとSCPIの違いがよくわからなくなったのでまとめた.

VISA (Virtual instrument software architecture) は計測器接続用のソフトウエアの標準仕様.
「VISAライブラリ」を使う事で,インターフェースの規格(GPIB/シリアル/LAN/USB)を仮想化する事で,インターフェースの規格を気にすることなく測定器を制御できる.

PCがサポート(インストール)されている必要がある.NI-VISAだったり,Pythonならpyvisa を使う.

SCPI (Standard Commands for Programmable Instruments,スキッピ)は,計測器側がサポートしている測定器制御コマンドの事.多くの測定器は制御側(PC)からアスキー文字を受け付けその文字列に従って制御を行う事ができるが,その文字列(コマンド)のフォーマットの一つがSCIP.
Keysight,Tektronixなど大手がサポートしている.

なお,メーカーによっては異なるフォーマットをサポートしている事もある,例えば今評価中のADC(Advantest)ではADコマンドというコマンドらしい.Keysightの前のAgilentの前のHPの測定装置はSCIPとはちょっと異なるコマンドだったりした.

2018年9月14日金曜日

Virtuosoが新しいCent OSで起動しない時の対応法

Virtuosoが古い場合,新しいCent OSでは起動しない問題を解決したい.
具体的には,
IC6.1.4.500.10

Cent OS 7.4.1708
で起動したい(ちなみにCent OS 6.8なマシンでは同じバイナリが起動する)

% virtuoso 
virtuoso:   ERROR: The command /cad/cadence/IC610_lnx86/share/oa/bin/sysname returned an error status:
                            unknown
virtuoso:    INFO: Note that OpenAccess (OA) requires running the Configure phase.
virtuoso:          See the "OpenAccess Installation and Configuration Guide" before
virtuoso:          you complete the configuration step. This manual is included with
virtuoso:          the Cadence product documentation.

とエラーが出る.sysname はシェルスクリプトなのでをテキストエディタで開くと,check_global ルーチンで弾かれていることがわかる.これを避けるためには,
[VirtuosoDir]/share/oa/bin
の中に存在する,登録されている(インストールされている)Linuxのバージョンを環境変数OA_UNSUPPORTED_PLATに指定すればよい.
% export OA_UNSUPPORTED_PLAT=linux_rhel40
これでVirtuosoが起動する.

詳細には,sysname 中の check_linux ルーチンでカーネルのバージョンを調べるのだが,2.4 と 2.6 の分岐しか無く,バージョン 3 以上の時にカーネル情報の取得に失敗してしまい起動できなくなる.2.6系列と大きく変わらないはずなので,linux_rhel40 (2.6)と指定すればよいだろう.

TLU+を作る

IC Compiler で配置配線する際に,配線容量を考慮した配置配線を行う.そのために配線層の寄生容量のモデルが必要であり,IC CompilerではTable Look Up Plus (TLU+)を使う.
TLU+はInterconnect Technology File (ITF)から作る.ITFでは,プロセスの縦構造を定義する,つまり各配線層の幅,ピッチ,厚み,および誘電率を定義できる.誘電率は途中で変える事もできる.フォーマットは以下のBlogに詳しい.
http://vlsi-concept.blogspot.com/2009/01/interconnect-technology-file-itf.html

ITFができたら,TLU+を作る.StarRC付属の grdgenxo で作る事ができる.
% grdgenxo -itf2TLUPlus input.itf -o output.tluplus

StarRCで使う配線の縦構造を表す nxtgrd ファイルを作る事もできる.(めちゃくちゃ時間がかかります)
% grdgenxo input.itf

プロセスの縦構造を画像にする事もできる.
% grdgenxo -profiler input.itf -jpg output.jpg 



暗号化されていない nxtgrd を逆コンパイルして ITF を作る事もできるらしい.

余談,IC Compilerが呼び出すStarRCはTLU+によるルックアップベースの配線容量見積もりをしているので,StarRCによるRC抽出に比べて精度が落ちる.タイミング解析も同じで,簡易型のPrimeTimeによるタイミング解析なので本物に比べてタイミング解析精度が落ちるのが欠点らしい.

2018年9月13日木曜日

InnovusのテクノロジファイルをIC Compilerに変換する

某PDKでは,Innovusのテクノロジファイル(というかLEF)しか提供されておらず,IC Compilerのテクノロジファイルが無い.ICCAD 2017のスライドでは構築中とある.

テクノロジファイルを手で書くのはしんどいので変換できないか調べたら,EDA BoardにMilkywayを使ってLEFからIC Compilerのテクノロジファイルを抽出するやり方が載っていた.

https://www.edaboard.com/showthread.php?156781-Converting-lef-library-to-plib-pdb-without-Physical-Compiler
の3番目の投稿である.

Milkywayを立ち上げ,
read_lib
をコマンドウィンドウに入力する.
適当にライブラリを指定し,Prepare Physical Libraryを選択,Physical Input Format にLEFを指定し,Import LEFを押す.するとREAD LEF画面がでるので,Tech LEF Filesに読み込むLEFを指定し,OKを押す.

次にファイルの書き出し.Mikyway→Tech File→Write To File と指定し,LEFのテクノロジを適用したMikywayライブラリを指定して,ファイル名を指定しOKを押せばよい.

全てのルールが変換されているわけでは無さそうだが,まあ何とか使えるかな??,というクオリティのものができた.

なおTLU+は無いのでこれは自作するしかない.Timing Drivenな配置配線なんてできないわな.(これはInnovusでも同じだけれど)