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でも同じだけれど)

製造プロセスとIC Compilerのライセンス

16nm FinFET 12nm FinFETなどプロセスが微細化しているが,あまりに微細なプロセスは配置配線に特殊なライセンスが必要なんだとか.IC Compiler の場合,20nm以下のプロセスでは IC Compiler Advanced Geometry のライセンス(Galaxy-AdvRules)が必要.
これはDouble-Patterningを考慮した配置配線のために必要らしい.さらに10nm以下の設計では追加でFuture-Technology のライセンスも必要らしい.

IC Compiler Ⅱは最初からDouble-Patterning-Aware Routingができるみたいなので,こちらなら設計可能なのだろうか.10nm以下はどうなるのかわからない.

ちなみにCadence Innovusも同じように追加ライセンスが必要らしい.

2018年9月11日火曜日

電流の積分時間とスプリアスノイズの関係

電流計(DMM/高精度電源/SMU)によっては積分時間を任意に設定できるものが存在する.積分時間を単に長くするのではなく,想定している交流信号の周波数の整数倍に設定するとノイズ軽減に効果的らしい.例えば関東の商用AC100Vであれば50Hzなので,積分時間は20msの整数倍にするとよいそうだ.

Keysight 34970Aの例だと,積分時間を最短にした例に比べ20msにするとAC100V電源からのスプリアスノイズを60dB減らせるとある.
デバイス測っていると電流が周期的に揺らいで見えるがこれで対策できるのだろうか.