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年5月21日土曜日

VNC で画面が真っ黒になる

Cent OS7 のマシンに Windows10 PC で VNC 接続をしたいが,接続すると画面が真っ黒になる.
CentOS (server):TigerVNC 64bit v1.8.0
Windows (client):UltraVNC 1.3.81

~/.vnc/xstartup に
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
を追記したら XFCE4 セッションが見えるようになった.

CentOSマシンは同じで,以前のWindows10マシン@UltraVNC 1.2.3.0 では unset しなくてもよかったのだが,なぜかクライアント側ではなくサーバー側の変更が必要になってしまった.

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
については,今となっては TigerVNC は xstartup や同一アカウントによる複数の Xvnc セッションのサポートをしていないので不要(なはず)らしい.一方で過去にこのようなサポートを必要とした時に,個々の Xvnc ごとに D-Bus セッションバスインスタンスを分離するために必要であったと言うお話が書かれていた.互換性のためにも unset はした方がよいとのことだった.
https://groups.google.com/g/tigervnc-users/c/8s4pLFNHitA

2022年5月5日木曜日

Silvacoのツール名とできる事の対応表

わからなくなったので調べた.

Victory Process:プロセスシミュレータ
Victory Device:デバイスシミュレータ
Utmost IV:Spiceモデルジェネレータ
SmartSpice:Spiceシミュレータ
SmartView:波形ビューア
Gateway:回路図エディタ
Expert:レイアウトエディタ
Cello:ライブラリジェネレータ(旧Nangate Library Creator?)
Viola:キャラクタライザ(旧Nangate Library Characterizer?)

Cello と Viola は使ってみたいがライセンスもバイナリも無いのである.

旧 Nangate の 15nm/45nm Open Cell Library は利用されている方もいらっしゃるだろう.ダウンロード申請はここから.
https://si2.org/open-cell-library/

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

2022年3月21日月曜日

HSPICEで容量を測る

 容量を測るには3つ方法がある.

・AC解析で測る
.print ac cap(Node)
.ac dec 15 .1k 100k
対象 Node の容量の周波数特性を評価することができる.ただし,Nodeとどこの間の結合容量を見ているのかはわからない.他のすべてのノードとの容量の和なのだろうか.

・captabを使う
.option captab
回路中の全ノードを対象に,GND(0)に対するDC容量を評価する.抵抗などでGNDとつながっているノードの容量値の算出はできない.

・過渡解析で充電してみる
実際に過渡解析で充電を行い,流れた電流の積分(Q)とノード間電圧(V)からC=Q/Vで求める.理想コンデンサとして近似できる事が前提.

2022年2月22日火曜日

Mendeley Desktop で Citation Key が生成されない

タイトル通り,Mendeley Desktop で Citation Key が生成されなくて困っていた.ググると,Tools → Options → Document Detail を開き,当該タイトルの Document type を選択し,Citation Key にチェックを入れるとよい.チェックを入れると Citation Key の項目が開くが,登録されているすべての文献をチェックしに行くのか Mendeley が劇重になるので注意.

2022年1月16日日曜日

IC Compiler で配置が正しく行われているか調べる(check_legality)

IC Compiler で配置が正しく行われているか,check_legality コマンドで調べる事が出来る.

check_legality

実行すると,行 (Row) に載っていないセルの数,重なっているセルの数などが報告される.また legalize できなかったのでエラーコード PSYN-215 が報告される.
これを利用して,IC Compiler で配置が正しくできなかった場合に終了するプロシージャを以下に示す.


使い方

2022年1月15日土曜日

IC Compiler で DRC Error の一覧を出力する(get_drc_errors)

DRC Error をリスト形式で得るために get_drc_errors を利用する.

get_drc_errors
-error_view mw_error_view : 対象の Milkyway view (デフォルトで現在の view)
-error_id error_idserror_idと一致するオブジェクトのみ出力
-type error_typeerror_type に一致する違反を出力
-bbox {lx ly ux uy}:検索範囲
-quit:マッチしないときのメッセージを表示しない
-regexp | -exact-regexp では正規表現を有効に,-exact はワイルドカードを有効に
-nocaseerror_id および -filter オプションで大文字小文字を区別しない
-filter expressionfilter_collection コマンドで指定可能な形式でフィルタする

例えばショートが1000以上ある場合に ICC を止めるプロシージャを以下のように書ける.

2023/02/28 嘘を書いていたことが判明.get_drc_errors は collection を出力するので, get_object_name で list に変換しないといけません.

2022年1月14日金曜日

IC Compiler で配置配線可能な最小面積を調べる

Shell スクリプトで IC Compilerの create_floorplan のパラメータを変更していき設計が最後まで到達できたか調べれば良いのだが,面積制約を満たさない場合は DRC 違反が大量に出る中 ICC は(100%設計完了できないにもかかわらず)延々と頑張って設計改良をするので時間がかかる.一方で一度面積制約を満たしたら処理は終了したい.
そこで
(0) Shell スクリプトで tcl ファイルの create_floorplan のパラメータを変える
(1) 処理の要素要素で Utilization を調べて既定値以下なら終了する
(2) 一度最後まで到達したらフラグを出力し for ループをブレイクする

(0) はこんなコード

 
このコードをさらに外部のsedコマンドで%%START%%,%%END%%,%%INC%%,%%ROW%%を置換する.

(1) 以下のようなプロシージャを定義して


メインのtclファイル中で要所要所で呼び出す.


(2) メインのtclファイルの末尾に完遂した場合のフラグファイルの出力と,冒頭にフラグファイルがある場合にquitするようにする.


フラグファイルがある場合は(0)のシェルスクリプトでもbreakするようにしているので,tcl 中の if 文は無駄ではあるが念のため.

2022年1月5日水曜日

Procedural-continuous assignments

Verilog では以下のように always の中に assign 文を入れることが出来るらしい(@ryos36さんのTwitterから).
always 文の中に assign を入れる構文は Procedural-continuous assignments (手続き文の継続的代入?)と呼ぶらしく,DesignCompiler では「Procedural-continuous assignments は合成できないよ」とエラーが出た.純粋に動作モデルを立てるために使うのだろう.