2018年12月20日木曜日

SiliconSmartでHSPICEのライセンスを使わない(HSPICE_embedded)

SiliconSmart 2016では,シミュレータとしてHSPICE_embeddedを選択する事ができ,これを使うとSiliconSmartのライセンスだけでHSPICEを用いてキャラクタライズをする事ができる.
(ただしHSPICEは2015.06より新しくないといけない)

configure.tclのシミュレータ選択に以下のように書けばよい.

set simulator hspice_embedded
set simulator_cmd { full-path-to-hspice < input_deck > -o < listing_file >}


これでHSPICEのライセンスをモリモリ消費せずにキャラクタライズを回せる.

2018年12月18日火曜日

FineSimを使ってみる

TAU Workshopで「HSPICE遅すぎるんですけど(><)」って文句を言いまくっていたら,「FineSimいいよ,マルチコア対応だし速いし」と元MagmaからSynopsysに移った人がお勧めしていたので使ってみた.試したのは FineSim M-2017.03-SP2-5,普段使いは HSPICE J-2014.09-SP1-2 .FineSimをSPICE互換モードで利用するには以下のようにする.マルチプロセッサで実行するために-np [numCPU] を付けている(HSPICEの-mtと同じようだ).-autoオプションを付けると,独立したsweepを別プロセッサで実行する(HSPICEの-mpと同じようだ).

% finesim  spice.sp -mode=spicemd -np [numCPU] -auto -spice

あるプロセスのDFFのD2Q遅延とセットアップ時間を評価してみた.D2Cを変えながらD2Qの最小値を求める.

D2Q遅延:1.4% の差(FineSimの方が速い)
Setup:同じ(刻みは0.1ps)

ほとんど同等の結果だ.

速度は以下のような感じ.201点スイープです@intel Core i7 4790K 8-thread.

HSPICE (-mp -merge) 37秒
FineSim (-np) 22秒
FineSim (-np -auto) 13秒

めっちゃ速い.FineSimは標準出力へのログの吐き出しが無ければもっと速くなりそう.

気になったところ
・HSPICEの構文解析でOKな記述がFineSimではエラーになったりする.
・.measureに失敗したときに,HSPICEは"failed"と表示するが,FineSimは"error"と表示する.
・FineSim-EmbeddedというのがSiliconSmartに入っていてライセンス無く使えるらしい.
・FineSimは2つの解析エンジンを持っているので,どちらのエンジンで実行すべきか指定する(指定しないと自動選択されるらしい).
(1) FineSim Pro,回路分割を行いマルチCPUで解く.いわゆるFastSPICEでほどよい精度と速度のトレードオフをもつ.オプションは-mode=promd
(2) FineSim SPICE,回路分割を行わなず,単一のマトリックスをマルチCPUで解く.いわゆる普通のSPICEでSPICE精度を保ちマルチコア対応で速い.オプションは-mode=spicemd

2018年12月17日月曜日

SiliconSmart Aceで出力スリューの大きいセルをキャラクタライズする

SiliconSmart Aceで特に出力がRail-to-Railにスイングしにくいセルをキャラクタライズするには以下の設定を追加する.

・configure.tclに対する追加
set total_slew_multiplier [val]
内部パラメータであるtotal_slewの定数倍を指定する.total_slewは遅延やエネルギーを計算するウィンドウを示すパラメータで以下の式で計算される.
total_slew = largest_slew / (logic_high_threshold - logic_low_threshold) * total_slew_multiplier
largest_slewは入力スリューの最大値.

・該当セルの.instに対する追加
set_config_opt -type -timing -to [PIN] -pin [PIN] partial_swing 1
フルスイングしない信号ピンに対し,Rail-to-Rail以外の電圧を評価できるようにする設定.partial_swing を 1 にすると,SiliconSmartの波形解析エンジンではなく,.measureで評価した電圧の絶対値を評価するようになる.ただ,デバッグ用?でNLDMに使えるのかはよくわからない.

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とはちょっと異なるコマンドだったりした.