.option wave_pop=valvalに0.001から1の範囲の値を設定することで, 出力バッファをフラッシュする.
同様のオプションが HSIM にもあったが, 名前は忘れた.
.option wave_pop=valvalに0.001から1の範囲の値を設定することで, 出力バッファをフラッシュする.
同様のオプションが HSIM にもあったが, 名前は忘れた.
report_preroute_advanced_via_rule が出力する結果を見ながら, どのようにすると元に戻るか調べてみた.
その結果, どうやら -cut_layer
オプションだけを付けて実行すると, デフォルトのルールに設定が上書きされるらしいという事がわかった.
icc_shell> set_preroute_advanced_via_rule -contact_codes ZZZV6HV -move_via_to_center -size_by_array_dimensions {2 1} -rotation_mode off icc_shell> report_preroute_advanced_via_rule Default set: ---------------- Size: an area (x-size X y-size) 0.000 X 0.000 Contact code: to be selected automatically Rotation: Enable ... ---------------- Rule for cut-layer "V6": Size: via-array (nx X ny) 2 X 1 Contact code: "ZZZV6HV" Rotation: Disable ---------------- Rule for cut-layer "V7": Same as defaultV6ルールにサイズ・コンタクトコード・回転可否の条件が設定された.
icc_shell> set_preroute_advanced_via_rule -cut_layer V6 icc_shell> report_preroute_advanced_via_rule Default set: ---------------- Size: an area (x-size X y-size) 0.000 X 0.000 Contact code: to be selected automatically Rotation: Enable ... ---------------- Rule for cut-layer "V6": Size: an area (x-size X y-size) 0.000 X 0.000 Contact code: to be selected automatically Rotation: Enable ...V6ルールに Default set の値がコピーされた. これでデフォルトのルールに戻ったようだ.
place_opt
, legalize_placement
で以下のようなエラーを出した.
Error: Cell xx/xx/xx unplaceable! - cannot satisfy placement constraints. (PSYN-1106)
Error: lib cell 'xxxx' of cell xx/xx/xx is illegal for all sites in the block. (PSYN-061) Error: Could not find a legal placement.このセルは triple height なのだけど, 他の triple height のセルでは問題ない. セルライブラリを Milkyway で作成した時に, 以下のように triple height にしたという警告がでるのだけれど, 他のセルがここに紛れ込んでいた.
Information: Set cell原因は, 別のセルで Boundary Layer を書き忘れていたことだった.as triple height. (MWLIBP-122)
LM_LICENSE_FILE
にて各ライセンスサーバを指定するが,
ツール毎に別々のライセンスサーバを立てている場合は,
ライセンス取得までに時間がかかる場合がある.
別のベンダーのライセンスサーバにアクセスし, 取得に失敗するためである.
あまり知られていないが, ベンダー毎にライセンスサーバを別々に設定することができる. こうすることで, 別のベンダーのライセンスサーバにアクセスすることがなくなり, ライセンス取得までの時間を短縮できる.
export CDS_LIC_FILE=port@server1-cadence:port@server2-cadence export CDS_LIC_ONLY=1環境変数
CDS_LIC_ONLY
を1
に設定しておくと, LM_LICENSE_FILE
ではなくCDS_LIC_FILEからライセンスサーバの情報を取得する.
Mentorのライセンス設定
export MGLS_LICENSE_FILE=port@server1-mentor,port@server2-mentor
環境変数MGLS_LICENSE_FILE
に, コンマ区切でライセンスサーバの情報を書いておく.
MGLS_LICENSE_FILE
が空または設定されていないと, LM_LICENSE_FILE
からライセンスサーバ情報を取得するようだ.
Synopsysのライセンス設定
export SNPSLMD_LICENSE_FILE=port@server1-synopsys:port@server2-synopsys
環境変数SNPSLMD_LICENSE_FILE
にコロン区切でライセンスサーバの情報を書いておく.
2014-02-14
SPICEのAC解析による容量の評価
HSPICEのAC解析によって, 容量を導出する方法を紹介する.
MOSFETのゲート-ソース間容量など, バイアス条件や他の端子の状態によって刻々と変化するような場合でも,
容量を導出することができる.
.param vbias=0.6
V1 1 0 DC 'vbias' AC .1591549430918953 0
* 以下に理想的な容量素子を例に書いておく. この値と比較する.
.param C1=1p
E1 n1 0 1 0 1
C1 n1 0 'C1'
* 評価したい素子 (この例ではMOSCAPという名前のサブサーキット)
E2 n2 0 1 0 1
x1 n2 VDD VSS MOSCAP
VVDD VDD 0 1.5
VVSS VSS 0 0.0
.measure AC C_MOSCAP avg par('Ii(E2)/Ii(E1)*C1') from=10k to=100meg
* パラメータ vbias を振って解析する
.ac dec 10 1k 1g sweep vbias 0.0 1.5 0.05
2014-02-12
GNUplotによるヒストグラム描画
GNUplotでヒストグラムをプロットする方法をメモする.
bin(x,y)=floor((x+y*0.5)/y)*y
set yrange [0:]
set boxwidth 10
plot 'tmp.dat' u (bin($2*1e3, 10)):(1) smooth freq with boxes t ''
bin(x,y)
で, y
の大きさのビンに切り分ける.
set yrange [0:]
で, 縦軸の下端を0にする.
smooth freq
で, 個数を積算する.
2014-02-06
CSSでHTMLの見出しに番号をつける
CSSに, 以下のように記述する.
これで, H1タグをつけた見出しに番号がつく.
body { counter-reset: section; }
h1:before {
counter-increment: section;
content: counter(section) ". ";
display: inline;
}
2014-02-03
find と xargs
ある条件に合致するファイルに対して, ある操作を加えるという場合,
find
と xargs
を使用することが多い.
しかし, とくにオプションを使用しないと,
ファイル名にスペースが含まれている場合に問題が生じる.
find
は改行を区切り文字とし,
xargs
はスペース (改行を含む) を区切り文字としているためである.
以下のように, 区切り文字を NUL (\0) とするオプションを使用することで,
このような問題を回避できる.
find ... -print0 | xargs -0 ...
いつもこのオプションを付けておくようにしたい.
よく使用する例
ジェネラルなファイル (ディレクトリでない) に対して, 実行権を除く.
find -type f -print0 | xargs -0 chmod -x
Windowsユーザの典型的な特徴として, ZIPで圧縮する, 空白をファイル名に使用するという点がある.
ZIPで圧縮されたファイルを展開するとすべてに実行権がついてしまう (ことがある) ので, 上記のコマンドを打つ.
登録:
投稿 (Atom)