ラベル Calibre の投稿を表示しています。 すべての投稿を表示
ラベル Calibre の投稿を表示しています。 すべての投稿を表示

2022年5月28日土曜日

Calibre PEX を使ってみる

とあるプロセスのプロセスパラメータがわからないので,個々の要素の抵抗容量を見積もりたい(リバースエンジニアリング?).ルールファイルが暗号化されているので生の値はわからないので,Calibre PEX の見積もり結果を RVE で解析してみる.

まず前提として,Calibre で RC 抽出する.今回は xACT を使った.xRC でもいけるのかはわからない.xACT の起動方法はこちら.

次に,レイアウトビューアから RVE を起動する.Virtuoso でもかまわないし,Calibre DESIGNrevでもかまわない.Database Type に PEX を選択し,RC抽出時に生成されるsvdbを指定する.



Net ごとにRC抽出結果が表示される.それぞれ
R Count:抽出された抵抗の素子数
C:固有容量値
CC:他ネットへのカップリング容量
C+CC:容量総和
となる.

ネット名をダブルクリックすると詳細を解析できる.VSSを選択してみる.



CCを選ぶと,VSSとカップリングしているネット名とカップリング容量が表示される.



Pt-to-Pt Res. を選ぶと,ネットもしくはピン間の抵抗の総和を計算してくれる.またレイアウトに抵抗値と経路も表示してくれる.("5"の左横のZ状の黄色線が経路)

2022年4月29日金曜日

Calibre をサポート外 OS で動かしたい

タイトル通りなのだが,Calibre は RedHat,CentOS,Suse Linux しかサポートしていないので,それ以外の OS 例えば Ubuntu では
ERROR: Unknown Linux operating system environment
と表示されて起動しない.

途方に暮れていたのだが,中国の掲示板に
「/etc/redhat-release を作成して"CentOS Linux release 7.3.1611 (Core)"って書いとけばいいよ」
とあって,実行したら Caliber のバイナリが走った.そんな.

参考:https://bbs.eetop.cn/thread-481273-1-1.html

2021年4月2日金曜日

Cent OS 7 で Calibre のライセンスエラーが出る

Calibre を起動しようとすると
$ calibrewb
(略)
//  ERROR: The following products could not be licensed sufficiently:
//  ERROR: - WORKbench

となってライセンスが取れない.

Calibre はライセンスの取得に Flexera Software の lmstat を使っている.で,lmstat(実態は lmutil )でライセンスを確認してみると,
$ lmstat -f calworkbench
  "calworkbench" v2022.010, vendor: mgcld, expiry: 31-jan-2022
  floating license
(略)

という感じでライセンスは正常に見られている.謎な矛盾状態なのだが,/etc/hosts にマシン名と IP アドレスが正しく設定できていなかったのが原因だった.
$ sudo vim /etc/hosts <- 修正する
$ mgls_ok calworkbench
Checking availability of "calworkbench".
License granted through "calworkbench".
$ calibrewb
(略)
//  calworkbench license acquired.
//  WORKbench running on 64 cores

これで計算機兼 NAT なマシンは解決したのだが,プライベートネットワーク内部のPCでライセンスが取れないのが問題.ポートの開放でもすれば解決するのだろうか….

2021年3月14日日曜日

MentorGraphics の特定のライセンスが使えるか調べる(mgls_ok)

MentorGraphics (Semens) の CAD で特定のライセンスが提供されているか調べるためには,mgls_ok を使う.
% mgls_ok feature
ライセンスが取れると "License granted" と表示される.提供されていない場合は
"License server does not support this feature" と表示される.

2021年2月20日土曜日

Calibreのログを出力する

Calibreでは,デバッグ用のログファイルを吐き出すことができる.そのためには,環境変数 MGLS_DEBUG_LOG_DIR にログファイルの出力ディレクトリを指定する.
% export MGLS_DEBUG_LOG_DIR=/log

ライセンス関連のログが詳細に記録されるので便利.ただし遅くなるのでデバッグ時のみ有効にするのがよいそうだ.

2021年2月11日木曜日

Cent OS 7においてJVMのエラーでCalibreをインストールできない


Calibre のインストーラーが Java でできているのだが,解凍したバイナリを実行すると
*** Warning with: ./install
The version of ./JRE/bin/java may not be correct!
...Required: "1.6.0"
...Found: Error: no `server' JVM at `/cad/mentor/CDROM/install.ixl/JRE/lib/i386/server/libjvm.so'.
...Please check that you have correctly installed the Mentor Install program that contains the Java Runtime Environment.
Error: no `server' JVM at `/cad/mentor/CDROM/install.ixl/JRE/lib/i386/server/libjvm.so'.

と表示される.スクリプトを見ると,解凍したバイナリ中で
$ JAVA -version
を実行したときに,バージョン情報では無くて libjvm.so がエラーを吐くようだ.

解決方法は XFS ではなくて他のファイルシステム,例えば ext3 や ext4 を使うとよい.
EBS 12.2 -- problem installing EBS on XFS -- no server JVM at libjvm.so

上記ブログの内容を簡単にまとめると,RHEL7 系ではデフォルトでファイルシステムが XFS で,XFS で 1 TB 以上の容量を取り扱う場合に 64 bit inode を使うのだが,これが 32 bit のJava アプリケーションの実行に問題を発生させるという話.マウント時に 32 bit inode を使うようにしてもよいとのことだ.
自分の環境は Cent OS 7 に 3 TB の SSD を XFS(デフォルト) で作成していたので問題となったようだ.古い 500GB の HDD を ext4 でフォーマット & マウントしたらインストーラーが起動した.

(上記Blogでは Oracle Linux 7 で問題となっていて,自社の OS で自社のインタプリタが動かないってどういうことやねん,という感じ)

Cent OS フォーラムにもトピックが立っていたが,解決しなかった.

2020年8月21日金曜日

Calibre で cell is referenced but not defined とエラーが出る

Calibre LVS で
ERROR: Cell cellname is referenced but not defined
と表示されて LVS が止まる場合,GDS 中で参照されているセルのレイアウトが空である可能性がある.例えば参照している Milkyway が参照している Milkyway (孫)の参照が切れた状態で GDS を出力すると,孫に格納されていた Cell View が読み取れず空のレイアウトができてしまい,LVS が実行できなくなる.

とりあえず動かしたい場合は,空の GDS を参照しているマクロを GDS とソースネットから削除すれば LVS が動くようになる.

ソースネットではなくて GDS に問題があるので注意.なお DRC でも同じ違反がでます.

2020年8月4日火曜日

Calibre xRC/xACT の出力ファイルを1つにまとめる

Calibre xRC/xACTの出力ファイルは,なぜか3つのファイルが出力される.手動でまとめてもよいが,Calibreのルールファイル中のネットリスト名指定時に SINGLEFILE オプションを与える事ではじめから1つのファイルに設定することができる.

PEX NETLIST "CELLNAME.spi" HSPICE 1 SOURCENAMES SINGLEFILE

2020年6月5日金曜日

Calibre xactview を使う

Calibre xACT で抽出した RC つきネットリストを GUI で解析するには,Calibre xActView を使う.デバイスの構造を示す fs3 ファイルと,fs3 ファイル内のネット番号を実際のレイアウトのネットへ対応させる pdb が必要.いずれもCalibre xACTを実行していれば抽出されているはず.

起動方法
% xactview -fs3 filename.fs3 -pdb filename.pdb

起動するとレイアウトが表示される.



図はASAP7でのインバータである.Finが表示されない理由は不明.

Net and shapes
ネットをハイライトすることができる.Window -> Net and Shapes からNet and shapesを呼び出せる.Net Name からネット名を選んで Add するとハイライトされる.


Device Highlight
抽出されたデバイスがどれであるかハイライトできる.Window -> Devices から Device Highlight を呼び出せる.Device ID からネット名を選んで Add するとハイライトされる.


わかりづらいけれど,インバータを構成するPMOSとNMOSが白くハイライトされている.ただ,表示される Device ID と SPICE ネットリストのインスタンスとの関係がわからない.消えてしまったダミーゲートもリストにあるらしく,いまいち使い方がわからない.

Coupling Capacitanceの表示

カップリング容量を表示できる.そのためにはCalibe xACTで抽出したカップリング容量を読み込む必要がある.
% xactview -fs3 filename.fs3 -pdb filename.pdb -fs3out filename.fs3.out -cfcap filename.cfcap

Window -> Devices から 3 種類の表示方法を選択できる.それぞれカップリング容量も表示してくれる.

Net Coupling
ネット間のカップリング容量と,どの Shape 間にカップリングが生じているかハイライトする.Shape は Virtuoso の Rectangle と同じと思えばよいようだ.



Net Coupling の例(色変えてます)

Shape Coupling
ある Shape と別の Shape 間のカップリング.

Layer Coupling
ある Layer における Shape と別の Shape 間のカップリング.


Calibre で抽出する寄生成分を選択する

正確には,出力時のフォーマットで抽出した結果を選択できる.
% calibre -xrc -fmt {-r|-c|-rc|-rcc|-adms|-all|-simple} rule.cal

オプションはそれぞれ以下の通り.
-r:抵抗のみ抽出
-c:容量のみ抽出
-rc:RCの分布定数回路として抽出.インダクタは抽出しない.容量はグラウンドとのカップリング容量としてみなす.
-rcc:RCの分布定数回路として抽出.インダクタは抽出しない.
-adms:ADMSフローで利用する.
-all:RCの分布定数回路として抽出.
-simple:寄生成分のないシンプルなネットリストを出力する.

StarRCはルールファイルに抽出成分を指定するのだが,Calibreはコマンドラインオプションだった.なお抽出時もオプションを指定できるのだが,抽出は全部抽出してファイル書き出し時に指定した方が楽?

2019年9月16日月曜日

ASAP 7nm の ゲートピンを抽出する

ASAP 7nm ではゲートに pin (label) を打てるが, 提供ルールでは抽出ができない.LVS のルールに以下の通り追記すると抽出できるようになる.

GATE_PIN の宣言
TEXT LAYER GATE_PIN
PORT LAYER TEXT GATE_PIN

GATE_PIN の定義,数字は適当
LAYER GATE_PIN 70251
LAYER MAP 7 TEXTTYPE == 251 70251

GATE_PIN がどのオブジェクトにつながっているかを定義,ここでは MOS (Gate not GCut) にある text を pin として抽出する
ATTACH GATE_PIN GATE_1

オチ:LVS はこれでいいのだけれど,ルールが暗号化されているのでLPE ができない.だめじゃん.

2019年8月27日火曜日

Calibre LVS でショートを見つける (Layout Short Isolationを活用する)

Calibre LVS で特に電源系のショートを起こすと,ショートした電源すべてがハイライトされてしまいショート箇所を見つけづらい.

ラベルをクリックすると上記画像のように電源すべてがハイライトされてしまう.

RVE の Layout Shorts Isolation を使うと,ラベルから別のラベルまでのショートの経路を教えてくれる.RVE の Layout Shorts のタブを開き,下部の Layout Shorts Isolation のリストを見る.


これは,あるラベルがどの箇所のレイヤーを通じて別のラベルにつながるかという情報を表している.クリックするごとに該当箇所をハイライトしながら表示するので,一番上から一番下まで順番にクリックしていくとラベル間がつながる経路がハイライトされる.


上層の電源メッシュかだスタックドビアを経由してM1におり,再度スタックドビアを経由して上層のグラウンドにつながっている.スタックドビアを不適切な場所に置いたので電源とグラウンドがショートした事がわかる.

https://www.youtube.com/watch?v=VCskP4HhQFw
Mentor Graphics のYoutubeチャネルで紹介されていたよ.みんなでチャンネル登録しよう.

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%)

2018年2月23日金曜日

Calibre LVSでスタンダードセルの論理を認識させる

Calibre LVSにおいてセルの論理を認識させる事ができる.

LVS RECOGNIZE GATES ALL

例えばNAND2セルにおいて,Layoutでは入力AがVDD,Schematicでは入力BがVDDである時,論理等価性を認識させてLVSをパスさせることができる.

なお,オプションを付けなくても低階層では論理を自動認識してLVSをパスできるが,階層が深くなると論理等価性を認識しなくなるので注意.

2015年11月10日火曜日

ERROR: Current execution environment is VCO=aoi. Software tree is for environment VCO=ixl

Calibre を実行するときに,
ERROR: Current execution environment is VCO=aoi. Software tree is for environment VCO=ixl
というエラーが出て起動しなかった.

調べた結果以下の事がわかった.
Calibre on Linuxにはいくつかバージョンがある.
・ixl:RedHat Enterprise Linux 5 (64bit)に最適化されたパッケージ
・aoi:RedHat Enterprise Linux 6 (64bit)以降に最適化されたパッケージ
・Calibre 32bitはもうサポートしません

そのため,Calibre実行時にCalibreは実行マシンのOSを調べ,自身がixlのパッケージなのに実行環境がRHEL6以降だと検知すると,動作を止めるらしい.

RHEL6でもixlを使いたい場合,環境変数を設定すればよいらしい.

例1:% export USE_CALIBRE_VCO=ixl

例2:% export  CALIBRE_2013_4_ALLOW_IXL_ON_RHEL6=101010

参考:Calibre Platform Support Overview and Roadmap - Mentor Graphics

2015年10月13日火曜日

Calibre Inreractiveでセルを見つけられない(セル名のエスケープ)

Calibre InteractiveでDRC/LVSをする時に,

calibre specified primary cell is not located within the input layout database

というエラーが出てLayout exportができなかった.
この時の原因は,セル名にハイフン"-"を使っており,それをAnalogArtistが内部でエスケープしており,そのためCalibreがセルを見つけられなかったためであった.
セル名に使う文字は,[a-z][A-Z][0-9]とアンダーバー"_"ぐらいにとどめた方が良さそうだ.

2015年9月8日火曜日

Calibre DRCで違反のないチェックを表示しない

Calibre DRCで違反のないチェックをresultに表示させないようにするにはDRC KEEP EMPTY構文を使う.

・表示させたい場合
DRC KEEP EMPTY YES

・表示させたくない場合
DRC KEEP EMPTY NO

デフォルトがYESであり,DRC KEEP EMPTY構文が存在しない場合はYESと解釈される.Calibre RVEを用いてDRCの結果を見る際に,大量のPassアイコンで埋め尽くされてしまうので,NOにするとシンプルでよい感じ.

Calibre DRCで特定のチェックを選択する,選択しない

CalibreでDRCを行う時,設計階層によっては必ず発生するエラーが存在する.あるエラーは必ずでるから無視させたい,逆にあるチェックを追加したい場合は,DRC SELECT/UNSELECT CHECK構文を使う.

・チェックを追加したい場合
DRC SELECT CHECK [rule1] [rule2] ...

・チェックを削除したい場合
DRC UNSELECT CHECK [rule1] [rule2] ...

例えばセルレベル設計でのラッチアップ違反などは,この命令をルールファイルに追加する事で,特定の違反を無視することができるようになる.