2019年8月23日金曜日

IC Compilerの実行時間を一時的に早くする (set_fast_mode)

設計初期段階などで IC Compiler の実行速度を高速化したい場合は,set_fast_mode オプションを有効にする.

set_fast_mode true

本設定を有効にすると,以下のオプションをつけることと等価になる.
place_opt コマンドは -effort low 相当になり,ユーザーの指定する -effort オプションは無効化される.
さらに実行時間を削減したければ,-no_congestion オプションをつける.
clock_opt コマンドは無効化される.
route_opt コマンドは -effort low 相当になり,ユーザーの指定する -effort オプションは無効化される.

マニュアルによると,30%から50%ほど実行時間を短縮できるらしい.当たり前だが回路の品質はかなり悪化するので,フローが完成したら set_fast_mode オプションは削除したらよいだろう.

2019年8月22日木曜日

HSPICEのVariation Blockを無効にする (option ignore_variation_block)

Fab提供のPDKにおいてVariation Blockが利用されている場合,これまでの伝統的なばらつき生成(Agaussなど)とは異なるばらつきが生成されてしまう(PDKにもよるが,ローカルばらつきとグローバルばらつきを同時に生成したり,空間相関ばらつきを生成することができる).その場合,Variation Blockを使わないようにするために以下のオプションを定義する事で,これまでの伝統的なばらつきを生成できる.
Variation Blockに対するオプションなので,.variation 関数中に書く.

.variation
option ignore_variation_block=yes
.end_variation

Variation Blockに対する他のオプションも併記しておく.

・ローカルばらつきを生成しない
option ignore_local_variation=yes

・グローバルばらつきを生成しない
option ignore_global_variation=yes

・空間相関ばらつきを生成しない
option ignore_spatial_variation=yes

・配線ばらつきを生成しない
option interconnect_local_variation=yes

Variation Blockが使われた場合,*.mc0ファイルが生成され,その中にどのようなオプションが使われたか記載されているので,このファイルの中を確認する事で現在のオプションを知ることができる.

他にも,特定のインスタンスのみばらつきを与えたり,特定のサブサーキットにはばらつきを与えないなど,柔軟にばらつきを制御できるようだ.

2019年8月20日火曜日

MentorGraphicsのツール名とでできることの対応表

わからないのでまとめた.ただし半導体集積回路設計で使うものだけです.

・シミュレーション
0-in:機能検証
Analog FastSPICE Platform (AFS):FastSPICE
Questa Advance MS (ADMS/AMS):デジタル・アナログ・RF回路向けシミュレーションツール.Eldo (Eldo-classic, Eldo-RF)が入っている.
Modelsim:RTLシミュレーション,波形ビューア.
QuestaSim:Modelsimに機能検証を加えたもの,とあるが,古い情報かもしれない.今はもう無い?

・カスタムIC設計
Pyxis Layout:カスタム設計CAD

・PCB設計
BoardStation:PCB設計CAD
Xpedition:PCB設計CAD
PADS:PCB設計CAD

・検証
Calibre:物理検証ツール.以下のツール群が入っている.他にも機能があると思われるが把握していない.
Calibre DRC:デザインルールチェッカ
Calibre LVS:Layout Versus Schematic
Calibre xRC:ルールベースレイアウト抽出
Calibre xACT:電磁界解析ベースレイアウト抽出
Calibre RVE:DRCなどの結果を設計レイアウトルールへ反映させるインターフェース.ネットリストを視覚化する事もできるので,ネットリストビューアとしても便利.
Calibre DESIGNrev:GDSビューア,エディタ.各種物理検証ツールを呼び出す事もできる.
Calibre WORKbench:GDSビューア,エディタ.OPCや光学シミュレーションなどができる.

・高位合成
Catapult HLS:高位合成ツール
DK Design Suite:Hendel-Cによる高位合成ツール.Celoxicaを買収して手に入れた?

・論理合成
LeonardSpectrum:ASIC,FPGA向け論理合成ツール

Calibre,Modelsim以外は使ったことがないので大いに間違っているかもしれない.Wikipediaの方が正確かも.
https://ja.wikipedia.org/wiki/メンター・グラフィックス

Mentor Graphics というと,「Bjarne Stroustrup インタビュー (?)」を思い出してしまう (ネツゾウとの噂ですが).

2019年8月19日月曜日

HSPICE互換シミュレータ

HSPICE はゴールデンな回路シミュレータですが,みんなが使うのでライセンスがなくなりやすい.パンがなければお菓子を食べれば(ry と言われるけれど,じゃあどんなお菓子(選択肢)があるのか気になります. 代替になりうるシミュレータについて調べてみた.

・FineSim SPICE
旧Magma の SPICE / FastSPICE シミュレータ.HSPICE 向けの記述がほぼそのまま動きます.今は Synopsys が売り出しているから安心?
finesim  spice.sp -mode=spicemd -np [numCPU] -auto -spice

・Eldo
Mentor Graphics の SPICE シミュレータ.HSPICE 互換モードがある(-compat).欧州では結構メジャーらしい.
eldo -compat spice.sp

こちらの環境ではプロセスコーナーオプションの指定に難があり,ライブラリが多段になっていてなかでプロセスコーナーオプションの名前が変わる場合(例えば,最初の.libで"TT"オプションを指定し,呼び出した次の.libでは"tt_core"オプションになる)に追随できないようで,最終的に「そんなトランジスタモデル無いよ」と言われてエラーが出る.
トランジスタモデルが暗号化されているからかもしれない.
そもそもこの PDK の設計がクソという意見もある.

・Spectre
Cadence の SPICE シミュレータ.HSPICE 互換モードがあるのか調べてません.

・SmartSpice
Silvaco の SPICE シミュレータ.某所ではバイナリがなくなってしまったので未調査.ライセンスはまだ発行されているっぽい??

LTspice や Ngspice が商用 PDK で動くかどうかは知りません.計算結果もあまり変わらない Finesim でいいんじゃないかな.

2019年8月18日日曜日

HSPICE で .measure の結果を出力しない (.option measout)

HSPICE で .measure の結果を出力を制御するには .option measout を使う.

.option measout [=1 | 0]

1を指定すると結果を.mt# に出力し,0を指定すると.mt#を生成しない.
デフォルトは1.

どういった場面で使うのだろうか??

2019年8月17日土曜日

HSPICE のモンテカルロシミュレーションの結果の出力を制御する(.option mcbrief)

過去の HSPICE (2012あたり) でモンテカルロシミュレーションをすると,変動させたパラメータ,.measure の結果だけが出力されていた.最近の HSPICE はそれ以外にも大量のパラメータを.mt#に出力するので,.mt#のファイルサイズもとにかく大きくスクリプトでパースするのも大変である.

モンテカルロシミュレーションで出力する変数を制御するには,.option mcbrief オプションを利用する.

mcbrief=0 : .mt#,.lis にすべてのモンテカルロ変数を出力する.
mcbrief=1 : .mt#,.lis には .measure の結果のみ出力し,モンテカルロ変数を出力しない
mcbrief=2 : .mt#には .measure の結果のみ出力し,モンテカルロ変数を出力しない..lis には出力する.
mcbrief=3 : .lis には .measure の結果のみ出力し,モンテカルロ変数を出力しない..mt# には出力する.
mcbrief=4 :
.lis にはモンテカルロの結果を出力しない.
IRVの情報を.mt#に出力しない.
.mc#ファイルを出力する.
mcbrief=5 :
.lis にすべての情報を出力する.
IRV の情報を .mt# に出力する.
.mc# ファイルを出力する.
mcbrief=6 :
.lis にはモンテカルロの結果を出力しない.
IRV の情報を .mt# に出力しない.
.mc#,*.mpp#,*.annotate を出力しない.
ヒストグラム,QQ プロットなどを出力しない.
セルのキャラクタライズで利用することを想定しているらしい.

私は,mcbrief=1 にして .measure の結果だけを出力するように設定し,
agauss などでばらつかせた変量はあえて .measure param 構文を使って出力
する事で,ばらつかせた変量とそれによる回路特性の変動量を .mt# に出力するようにした.

IRVファイルってなんでしょう..option set_missing_value に関連するので
使われなかった乱数変数の事だろうか(未調査).

2019年8月14日水曜日

StarRCでカップリングキャパシタを報告する

Calibre xRCでできたので,StarRCでできるのか調べた.以下のコマンドでできる.

COUPLING_REPORT_FILE: file

fileで指定したファイルに出力される.レポートは,キャパシタの総容量(Ct)に対するカップリングキャパシタの容量(Cc)の比,カップリングキャパシタの容量の絶対値(Cc),Victim Net,Aggressor Netの順で表示される.

2019年8月13日火曜日

Calibre xRCでカップリングキャパシタを報告する

Calibre xRCでカップリングキャパシタを報告するには以下の命令を使う.
PEX REPORT COUPLING CAPACITANCE filename
[NUMBER count]
[SPLIT_NET]
[THRESHOLD value]
[LAYOUT | SOURCE]

filename に指定するファイルにカップリングキャパシタの情報を出力できる.
以下はオプション
NUMBER count:カップリングキャパシタの数を指定する.デフォルトは1000
SPLIT_NET:出力を制御できる.宣言時Net Bへのレポートが別の行に出力される.
THRESHOLD value:value以下の容量を出力する.
LAYOUT | SOURCE:配線名をLayoutから選択する,もしくはソースネットから選択する

2019年8月6日火曜日

Calibre xACT 3Dを使ってRC抽出を行う

Calibre には RC 抽出の方法が2つあり,モデルベースである xRC と,フィールドソルバである xACT 3Dがある.後者を使ってRC抽出をやってみる.Calibreのルールファイルは xRC と同一でよく,以下のようにコマンドを実行すればよい.
% calibre -lvs -hier -spice svdb/circuit.sp -nowait circuit.svrf > circuit.log 
% calibre -xact -3d -pdb -rcc circuit.cal >> circuit.log 
% calibre -xact -fmt circuit.cal >> circuit.log 

マニュアルには
% calibre -xact -3d -rcc circuit.cal
と書いてあったが,-pdb オプションをつけないとPhysical Database (pdb) が生成されず3行目のコマンド実行に失敗する.xRC と xACT 3Dは違うのかというと,xACT 3Dは特に細かいカップリングキャパシタが報告されるようになった.

2019年8月5日月曜日

Calibre xRC でRCの縮約を行う

Calibre xRC で RC 縮約を行うには以下のオプションを使う

・Analog回路向け
PEX REDUCE ANALOG {NO | YES [DELAY_ERROR delay] [NOISE_ERROR noise]}
NO (default): 縮約を行わない
YES:RC 縮約を行う.以下のオプションがある
DELAY error:時間遅延の閾値.単位はs.デフォルトは0.5ps
NOISE_ERROR noise:エラーの閾値.単位は比.デフォルトは0.01(1%)

PEX REDUCE ANALOG YES を宣言すると,PEX REDUCE TICER PEX REDUCE CC が有効になる.
PEX REDUCE TICER は指定するシミュレーション速度で差が出ないように縮約する命令(PEX REDUCE DISTRIBUTED と同じ),
PEX REDUCE CC はカップリングキャパシタの縮約する命令.
PEX REDUCE ANALOG と後述の PEX REDUCE DIGITAL は同時に宣言できない.

・Digital回路向け
PEX REDUCE DIGITAL {NO | YES [DELAY_ERROR delay] [NOISE_ERROR noise]}
NO (default): 縮約を行わない
YES:RC 縮約を行う.以下のオプションがある
DELAY error:時間遅延の閾値.単位はs.デフォルトは0.5ps
NOISE_ERROR noise:エラーの閾値.単位は比.デフォルトは0.01(1%)