2020年11月19日木曜日

IEEEtran.cls で章番号のフォーマットを変える.

Latex で章番号のフォーマットを変えるには,以下の様に設定する.
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\thesection.\arabic{subsection}}

\thesection が section のカウンターの見出しを変えるので,\renewcommand
カウンターの見出しを変えてやればよい.
普通はこれでいいのだけれど,IEEEtran.cls は \thesection ではなくて,\thesectiondis を使っている.
なので以下の様に設定する.
\renewcommand{\thesectiondis}{\arabic{sectiondis}}
\renewcommand{\thesubsectiondis}{\thesectiondis.\arabic{subsectiondis}}

2020年11月15日日曜日

【・・dynabook R63シリーズの変遷

 東芝ノートPCには業務用にR63というシリーズがあるのだけれど,東芝お得意の型番乱発のためどの時期にどういう構成のPCが売られていたのかわかりづらい.東芝のサポートを調べてみた.


2015年発表

  • 2/9 R63/P Core i 5xxx
  • 8/6 R63/P Core i 5xxx
  • 11/17 R63/T Core i 6xxx

メモリはDDR3L MAX16GB.SSDは/PはmSATA./TはわからないがM.2.かもしれない.アキュポイント付きキーボード.ドッキングステーションコネクタあり


2016年発表

  • 1/21 R63/U Core i 6xxx
  • 4/21 R63/A Core i 6xxx
  • 7/13 R63/W Core i 5xxx
  • 11/29 R63/B Core i 6xxx

SSDはM.2.SSD(SATA).i-5モデルのSSDはmSATAかも?


2017年発表

  • 6/27 R63/D Core i 6xxx

これ以降アキュポイントなし?


2018年発表

  • 1/23 R63/F Core i 6xxx
  • 3/22 R63/H Core i 8xxx 7xxxx
  • 7/9 R63/G Core i 6xxx
  • 同   R63/J Core i 8xxx 7xxxx

メモリはCore i-6xxx DDR3L MAX16GB,i-7xxx および i-8xxx DDR4 MAX 16GB.ドッキングステーションのコネクタ廃止?

2019年発表

  • 1/17 R63/M Core i 8xxx 7xxxx
  • 1/28 R63/K Core i 6xxx
  • 7/8 R63DN Core i 8xxx 7xxxx

これ以降発表は無い.

  • 一部にはRZ63というモデルもあるが,R63との違いはわからない(Toshiba Direct用の型番?
  • さらに,R63/PSの様にさらに記号が追加されている事もあるのでよくわからない.
  • タッチパネル付きのモデルもある.液晶を移植すると動くらしい.
  • DDR3LモデルにDDR3メモリを挿しても動きません(電源LEDがオレンジ白に点滅する).
  • アキュポイント復活はよ!!
  • ドッキングステーションはスーパーウルトラ接触不良多発なので買うなら覚悟の上で.ディスプレイはすぐ接触不良になるし,USBハブはろくに動かないし(SS2120でもRX2でもこんなことなかったのだけれどな).そもそもサポートされる機種が「コネクタがあるやつ」みたいに書かれていて明確でないのも問題.

2020年11月10日火曜日

SPICEとSpectreの違い

SPICE は修正接点解析(Modified Nodal Analysis)つまり電圧保存則(KVL),Spectre は電荷保存則(KCL)で回路を解く.

正確には,ニュートン法での収束判定において,SPICE はタイムステップ前後の電圧差分と電流差分が一定値以下になれば収束と判定し,Spectre は電流差分ではなく電荷差分が一定以下であれば収束と判定する.電荷を判定に使う事で,Spectre は SPICE に比べ異常な点での収束を防ぐことができる利点がある.

Reference: Ken Kundert, "Simulation of Analog and Mixed-Signal Circuits", https://kenkundert.com/docs/bctm98-MSsim.pdf


2020年11月7日土曜日

ポリ,シリサイド化ポリ,配線の抵抗の関係

回路をコンパクトに作るためにゲート(ポリシリコン)で配線をする事はよくあるのだけれど,とあるプロが「ポリ配線は抵抗が大きいので多用すると性能低下につながるから止めた方がよい」と意見していた.

実際に調べてみると,とあるプロセスでの配線抵抗をを1Rとすると

Non-Siliside Poly 7000 R [Ohm/sq.]

Siliside Poly 100 R [Ohm/sq.]

M1 1R [Ohm/sq.]

となかなか大きい事がわかった.Siliside 化しても抵抗が高いのは意外だったけれど,よく考えればタングステンシリサイドやチタンシリサイドの薄膜だから銅・アルミ配線に比べて抵抗は高くなるか.

東芝の論文によるとシリサイドは 0.4 um 世代から使われ始めたらしい[1].

Google Skywater  130nm プロセス(元はCypressのファブだったらしい) は TiN による Local Interconnect という変わった層があるけれど,これはメタル層に比べて抵抗が100倍高いそうだ[2].配線層以外は結構抵抗高いのね.

[1] 杉本 茂樹,神垣 哲也,上條 浩幸,"半導体プロセス技術の進歩と課題", 東芝レビュー, 2004年8月,https://www.toshiba.co.jp/tech/review/2004/08/59_08pdf/a02.pdf

[2] Tim Edwards, "Google/SkyWater and the Promise of the Open PDK", in Workshop on Open-Source EDA Technology, 2020

2020年11月6日金曜日

IC Compilerにて配線方向を指定する(set_preferred_routing_direction)

 IC Compilerにて配線の方向を設定するには,set_preferred_routing_direction オプションを使う.

set_preferred_routing_direction -layers {Mx My} -direction [vertical|horizontal]

テクノロジーファイルなどに,あらかじめ配線方向が規定されている場合もある.この設定を消すためには remove_preferred_routing_direction を使う.

remove_preferred_routing_direction -layers {Mx My}

フロアプランを決めてしまうと配線方向は変えられないので,create_floorplan コマンドの前に実行すること.

2020年10月21日水曜日

VIMのスペルチェッカーの塗りつぶし方法を変える

VIMでスペルチェックをかけると違反箇所は標準で赤塗りになるが,カラースキームによっては非常に見づらい.hilight SpellBadコマンドで制御できるのだが,うまくいかない場合はColorSchemeコマンドで囲うとよいようだ.

set spell
set spelllang+=cjk
autocmd ColorScheme * hi clear SpellBad
    \| hi SpellBad cterm=underline ctermbg=black
colorscheme ron

アンダーラインのみに変えた.


Source: 
jshint vimrc SpellBad customization does not stick
https://stackoverflow.com/questions/17333210/jshint-vimrc-spellbad-customization-does-not-stick

2020年8月23日日曜日

IC Compilerの配線長に制約を設定する (set_max_length)

IC Compile rでは通常使用する配線長に制約はない.意図的に制約を設けたいときは,
set_max_length オプションを使用することができる.
> set_max_length integer design
このオプションは設計者がトップレベルで配線バッファを挿入することを想定しているので,バッファ挿入コマンド create_buffer_tree と併用することが想定されている.
> set_max_length integer design
> create_buffer_tree -on_route
create_buffer_tree コマンドを実行するとバッファの挿入と配線がされてしまうので,配線を後でしたい場合は -skip_detail_route オプションをつけるとよい.

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月12日水曜日

Mi Max 3

寿司食って膨らんだ男が浅草で爆発するCMで有名なXaomiのMi Max 3を買った.4月1日に注文したのに届いたのは4月22日だった.Amazon.co.jpで買ったのに中国直送とは思ってなかった…(COVID-19で物流が混乱している中申し訳なかった).



デカイデカイ言われるけれど,XPERIAより一回りちいさい.片手で十分持てる.


なぜかマスク2枚入ってた.日本でCOVID-19流行っているからかな,ありがたや.

2020年8月4日火曜日

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

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

PEX NETLIST "CELLNAME.spi" HSPICE 1 SOURCENAMES SINGLEFILE

2020年8月1日土曜日

BSIM-CMGでトランジスタ特性をばらつかせる

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

Perlの二次元配列の走査

よく忘れるのでメモ.

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

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 間のカップリング.


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

2020年5月22日金曜日

GPAの定義は大学によって違う

GPA(Grade Point Average)という成績の評価値があって,日本の大学で最近よく使われている.どの大学でもGPAと呼んでいるが,実は大学ごとに基準がグチャグチャでGPAでは大学間の成績評価できない.一般には1~4で評価するけれど,1~4.3とA+の+相当に0.3あてる大学もあれば,2~5と一般より+1高く評価される大学もある.
調査結果が以下のPDFで報告されている.
https://gakkai.univcoop.or.jp/pcc/2017/papers/pdf/pcc019.pdf

これでは平等に比較できないと思いきや,一応対策があって日本では文科省の「成績評価係数」の表で吸収しているようだ (それでも,例えば京大定義は実質+5点シフトでちょっとずるいのでは).
とある私立R大学はGPの定義が2~5なので,GPA4です!と言っても実は大したことなかったりする.逆に言うと,GPが底上げされている大学に進学して,一般的な定義の大学院に出願すると,うまくばれなければワンランク上と判断される,かもしれない.