2017年3月29日水曜日

IC Compilerで利用する配線層を制約する

IC Compilerにて利用する配線層を制約する手法は2つある.

(1) 特定の配線に対して利用できる配線層を指定するために set_net_routing_layer_constraint コマンドを利用する.

set_net_routing_layer_constraint {net1, net2,... } -min_routing_layer Mx -max_routing_layer My

(2) 全ての配線層に対して利用できる配線層を指定するためには
set_ignored_layer コマンドを利用できる.

set_ignored_layer -min_routing_layer Mx -max_routing_layer My

基本的には両者の動きは同じだと思われるが,うろ覚えだが,icc_vF-2011.09-SP5-1を利用しているときに set_ignored_layer ではうまく配線層の指定が聞かず,仕方なく全てのネットに対して set_net_routing_layer_constraint を利用した形跡がある(バッドノウハウ??).

set_net_routing_layer_constraint {*} -min_routing_layer Mx -max_routing_layer My

なお set_ignored_layer は,-rc_congestion_ignored_layers layer_name オプションをつける事で配線混雑度解析,RC解析において無視すべき配線層を指定する事も出来る.

set_ignored_layer -rc_congestion_ignored_layers layer_name

2017年3月24日金曜日

Traditional and Variation Block Monte Carlo

HSPICEの新しい版(前からあったと思うが少なくともL-2016.06-SP1-1)では,PDKにも依存するがモンテカルロ(Monte Carlo:MC)解析においてVariation-Block(VB)ベースのMC解析が利用できる.
伝統的なガウス関数(AGAUSS)以外にも,MC解析においてサンプリング手法等を変える事が出来る.

・乱数発生器
HSPICEの乱数発生器を以下のオプションで変えられる.なお2016.06から,デフォルトの乱数発生器が3LCからMCGに変更となった.

.option RANDGEN = [3LC|MOA|UVS|MCG|WH]

各アルゴリズムは以下の通り
3LC: 従来通りの乱数発生器
MOA: Multiply-with-carryタイプ
UVS: 64bit universal 乱数発生器
MCG: (Default) 64bit multiplicative(乗法)-乱数発生器
WH: 他のよりサイクル数の長い乱数発生器

・統計情報の出力
過去のMC解析とは異なり,VBベースのMCでは以下の情報も出力される.
- より詳細な統計情報:*.mpp0
- 各サンプルにおける独立変数の値:*.mc0
- 各ランダム変数の貢献度をSynopsys Custom Designerへ反映するための情報ファイル:*.annotate
-  従来のSRS解析のための部分的な情報:*.mpp0

・サンプリング手法の変更
サンプリング手法を以下のオプションで変更できる.

.option SAMPLING_METHOD = [SRS|LHS|Factoral|OFAT|Sobol|Niederreiter|External]

各サンプリング手法の説明は以下の通り.
SRS: (Default) これまでの伝統的な単純なランダムサンプリング
LHS: Latin Hypercube Sampling:多変数の時に効率的(.option REPLICATESと併用)
Factoral: Factoral サンプリング: 回路の応答から最良値-最悪値のレンジを計算する.多項応答曲面を作る.
OFAT: One-Factor-at-a-Timeサンプリング:低次元応答曲面が利用できるような,感度解析が使える領域でつかう.
Sobol: Sobol SamplingでLow-discrepancy sequence(LDS)の一種.
Niederreiter: LDSの一種.
External: 外部からデータセットを読み込む.