BSIM-CMGでトランジスタ特性をばらつかせるには,以下のモデルパラメータが利用できる.DELVTRAND,U0MULT,ISD0MULT以外はモデルパラメータとしてあらかじめ存在しているものである.
パラメータ:初期値:説明
DTEMP :0 K:デバイスの温度シフト量
DELVTRAND:0 V :閾値電圧シフト量
U0MULT:1.0 :移動度の係数
IDS0MULT:1.0 :ソースドレイン間チャネル電流の係数
TFIN:15e-9 m:Finの厚み
FPITCH:80e-9 m:Finピッチ
XL:0.0 m:マスク/エッチによるゲート長シフト量
NBODY:1e-22 m-3:チャネルドープ濃度
EOT:1e-9 m :実効ゲート酸化膜厚
TOXP:1.2e-9 m:実ゲート酸化膜厚
RSHS:0.0 Ω:ソースシート抵抗
RSHD:0.0 Ω:ドレインシート抵抗
RHOC:1e-12 Ω-m^2:シリコンシリサイド界面のコンタクト抵抗
RHORSD:計算される:ソースドレインの盛り上がり部の平均抵抗
Reference: BSIM-CMG 110.0.0 Multi-Gate MOSFET Compact Model Technical Manual, 2015
2020年8月1日土曜日
2020年7月25日土曜日
2020年6月26日金曜日
BSIM4 level 72におけるトランジスタ構造オプション
BSIM4 level 72 (BSIM-CMG)モデルは,一つのモデル式で様々な形状のトランジスタを表すことが可能である.近年のデバイス構造の進化によって様々なトランジスタ構造が提案されている.モデル式の中でトランジスタ構造を選択するオプションがあるので紹介する.
BULKMOD: default 1
BULK/SOIセレクターで,1だとBULK.
GEOMOD:default 1
ゲート構造セレクター.0はdouble gate, 1はtripple gate,2はquadruple gate,4はcylindrical gate
BULKMOD: default 1
BULK/SOIセレクターで,1だとBULK.
GEOMOD:default 1
ゲート構造セレクター.0はdouble gate, 1はtripple gate,2はquadruple gate,4はcylindrical gate
2020年6月19日金曜日
SiliconSmart のタイムステップ
SiliconSmart が呼び出すシミュレータのタイムステップは以下のパラメータで制御できる.
time_res_high
クリティカルな解析におけるシミュレーションタイムステップの最大値.高精度な過渡解析で必要となる最小の時間解像度となる.
デフォルト値:1e-12
レンジ:1e-15~1e-3
time_res_low
シミュレーションタイムステップの最大値.荒い時間分解の最大値となる.
デフォルト値:100e-12
レンジ:1e-15~1e-3
ちなみに,time_res_high のデフォルト値は 2016 はマニュアルの記載では 1e-10 なのだが,誤植です.Magma 発行の 2007 のマニュアルには 1e-12 が記載されていた.長年の疑問が解けた..
2020年6月16日火曜日
Libertyモデル(.lib)における,index_1とindex_2のxy軸対応
index_1がy軸,index_2が横軸.
fall_constraint(mpw){
index_1("0.1, 0.2, 0.3");
index_2("0.1, 0.2");
values( "1.10 1.11", \
"1.12 1.13" \
"1.14 1.15");
}
index_x,index_yとすればよかったのにね.開発当時多次元Matrixを想定していなかったのだろう.Liberty のフォーマットは結構レガシーなので,そういう問題が多々あったりする(エネルギーではなくPowerで計算していたり)
参考:Library Compiler User Guide, 2017
2020年6月15日月曜日
SiliconSmart で入力容量を評価するパラメータ:cin_bias_capacitance, set subtract_leakage
SiliconSmart で入力容量を評価する際,あまりに容量が小さいとシミュレーションが不正確になるので,SiliconSmart はドライバの出力に容量をつけてシミュレーションを行う.シミュレーション後入力容量の評価ができた後で,この容量は削除される.
pintype グループの cin_bias_capacitance パラメータで制御することができ,初期値は 10ff である.
set cin_bias_capacitance 10ff
SiliconSmart は入力容量を求めるために,入力ピンの電流を cin_low_threshold から cin_high_threshold の間で積分する.IO セルのようにリーク電流が大きいセルをキャラクタライズする場合,pintype パラメータの subtract_leakage 1に設定するとcin_low_threshold および cin_high_threshold のパラメータを無視するようになる.
set subtract_leakage 1
2020年6月9日火曜日
SiliconSmartでキャラクタライズする項目を限定する
SiliconSmartでキャラクタライズする項目を限定するには,characterizeコマンドに-matchオプションをつける.
characterize -match {setup*|hold*|delay*} cells
-match オプションでマッチしたシミュレーションのみが実行される.runtime ディレクトリを見るとどのようなシミュレーションが実施されるかわかる.代表的なのは以下.
Cin:入力容量評価
delay:遅延評価
energy:動的エネルギー評価
hold:ホールド時間評価
initialization:初期状態の各ノードの電圧評価
leakage_power:リーク電力評価
ncmpw:最小パルス幅評価
setup:セットアップ時間評価
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 間のカップリング.
起動方法
% 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 と同じと思えばよいようだ.
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はコマンドラインオプションだった.なお抽出時もオプションを指定できるのだが,抽出は全部抽出してファイル書き出し時に指定した方が楽?
% 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はコマンドラインオプションだった.なお抽出時もオプションを指定できるのだが,抽出は全部抽出してファイル書き出し時に指定した方が楽?
2020年6月4日木曜日
Finesimで回路のタイプを指定し,精度と速度のトレードオフをとる(finesim_mode)
finesim_modeオプションを使い,対象回路のタイプを指定できる.
.option finesim_mode=mode
modeは以下の7つがある.
Mode Target
spicead High precision analog circuits.
spicehd Highly sensitive analog circuits.
spicemd General SPICE mode for all circuit types.
spicexd Mixed signal design/Extracted Post Layout.
prohd Large mixed signal design/leakage/power simulations.
promd Timing simulations.
proxd Functional verifications.
対象回路のタイプを指定すると,タイプに応じてサブオプションが
以下のように変化し,精度と速度と回路規模のトレードオフをとってくれる.
hspiceでいる runlvl に相当するようだ.
model speed spred partition qlevel loadmodel tunit tsc
spicead 4.5 0.5 0 0 2 N/A 0.01p lte2
spicehd 4 0.5 0 0 1 N/A 0.01p lte1
spicemd 4 1 0 0 1 N/A 0.1p lte1
spicexd 3 1 1 0 1 N/A 1p lte1
prohd 3 1 1 1 N/A 4 1p lte1
promd 2 2 2 1 N/A 2 1p lte1
proxd 2 3 3 1 N/A 1 1p lte1
finesim_model はトランジスタモデルの選択,
finesim_speed は計算のタイムステップ,イベント信号,Newton-Raphson法での公差の制御,
finesim_spred はRC縮約の程度,
finesim_partition は回路分割の積極度,
finesim_qlevel は電流計算時の収束強度の設定,
finesim_loadmodel は回路分割時の容量モデルの設定,
finesim_tunit は基本となる時間解像度の設定,
finesim_tsc は過渡解析時の打ち切り誤差の設定,
をそれぞれ設定する
サブサーキットごと,ローカルに指定する事も可能.
.option finesim_mode="pattern:mode"[:subckt | :instance | :node | :device]
例えばインスタンス X1 以下のデバイスを spicemd 設定にできる.
.option finesim_mode="X1.*:spicemd":device
インスタンス名でなく,サブサーキット名で指定することもできる.
.option finesim_mode="INV*:spicemd":device
.opset を使うと,finesim_modeに応じて使うオプションを個別に追加することもできる.
.opset (finesim_mode=mode) option_name[=option_value] ....
spicemd の時だけ,計算法をgearにすることができる.
.opset (finesim_mode=spicemd) finesim_method=gear
.option finesim_mode=mode
modeは以下の7つがある.
Mode Target
spicead High precision analog circuits.
spicehd Highly sensitive analog circuits.
spicemd General SPICE mode for all circuit types.
spicexd Mixed signal design/Extracted Post Layout.
prohd Large mixed signal design/leakage/power simulations.
promd Timing simulations.
proxd Functional verifications.
対象回路のタイプを指定すると,タイプに応じてサブオプションが
以下のように変化し,精度と速度と回路規模のトレードオフをとってくれる.
hspiceでいる runlvl に相当するようだ.
model speed spred partition qlevel loadmodel tunit tsc
spicead 4.5 0.5 0 0 2 N/A 0.01p lte2
spicehd 4 0.5 0 0 1 N/A 0.01p lte1
spicemd 4 1 0 0 1 N/A 0.1p lte1
spicexd 3 1 1 0 1 N/A 1p lte1
prohd 3 1 1 1 N/A 4 1p lte1
promd 2 2 2 1 N/A 2 1p lte1
proxd 2 3 3 1 N/A 1 1p lte1
finesim_model はトランジスタモデルの選択,
finesim_speed は計算のタイムステップ,イベント信号,Newton-Raphson法での公差の制御,
finesim_spred はRC縮約の程度,
finesim_partition は回路分割の積極度,
finesim_qlevel は電流計算時の収束強度の設定,
finesim_loadmodel は回路分割時の容量モデルの設定,
finesim_tunit は基本となる時間解像度の設定,
finesim_tsc は過渡解析時の打ち切り誤差の設定,
をそれぞれ設定する
サブサーキットごと,ローカルに指定する事も可能.
.option finesim_mode="pattern:mode"[:subckt | :instance | :node | :device]
例えばインスタンス X1 以下のデバイスを spicemd 設定にできる.
.option finesim_mode="X1.*:spicemd":device
インスタンス名でなく,サブサーキット名で指定することもできる.
.option finesim_mode="INV*:spicemd":device
.opset を使うと,finesim_modeに応じて使うオプションを個別に追加することもできる.
.opset (finesim_mode=mode) option_name[=option_value] ....
spicemd の時だけ,計算法をgearにすることができる.
.opset (finesim_mode=spicemd) finesim_method=gear
登録:
投稿 (Atom)