2016年6月9日木曜日

Cadence AnalogArtistにおいてCUIからspiceInを行う

Virtuoso (AnalogArtist) において CDL や SPICE 形式のネットリストを読み込むときに spiceIn を利用する.GUI でも可能だが,大量にある場合は CUI で実行したい.
ここでは,spiceIn を実行する時のパラメータを記述した SKILL ファイルを用意する方法について述べる.

(a) conn2sch parameter file
spiceIn した schematic のオブジェクトの配置やラベルの大きさを制御している様だ.GUI で実行する時は用意する必要がなく,一方で実行後に勝手にできている.(しかし CUI では必要)

% cat schOpts_spiceIn.params                                                              
--  conn2sch parameter file prepared by Spice In:
sheet_symbol := none
page_row_limit := 1024
page_col_limit := 1024
label_height := 10
line_line_spacing := 0.200000
line_component_spacing := 0.500000
density_level := 0
pin_placement := left_and_right_sides

(2) DeviceMap file
ネットリスト中のトランジスタを schematic (正確にはトランジスタライブラリの)のトランジスタに対応させるファイル.これは GUI で実行する時であっても必要.PDK に依存する.
以下は,ネットリスト中のトランジスタ(*mos_net)を schematic のトランジスタ(*mos_sch)にマップしている.

% cat fet_map.spicein_map         
-- Device Mapping file generated from SpiceIn GUI
devSelect := pmos_net pmos_sch
        propMatch := pmos_sch
devSelect := nmos_net nmos_sch
        propMatch := nmos_sch

(3) spiceIn.param file
spiceIn に入力するファイル.

%cat spiceIn.param
piceInParams = list(nil
        'conn2schParamFile "schOpts_spiceIn.params"
        'language       "CDL"
        'netlistFile    "NAND4_4X.cdl"
        'outputLib      "CellLibrary"
        'refLibList     "cmos"
        'outputViewName "schematic"
        'simName        "auCdl"
        'outputSimName  "auCdl"
        'devMapFile     "fet_map.spicein_map"
)

(1)~(3)は,一度 GUI で spiceIn を実行すると生成されるので,保存してテンプレートとして利用するのも手である.

(4) spiceInの実行
Terminal において以下の様に実行すれば,spiceIn が起動する.
%spiceIn -param spiceIn.param

spiceIn は,上記に挙げたパラメータファイルをあらかじめ用意する方法と,引数にオプションとして記述する方法の2つの方法がある.
私の環境では後者は"conn2schParamFile"の場所を指定できず正しく動かない ($HOME/cadence/以下を探しに行く).

また,私の環境だと以下の2つのエラーがでてしまう,が schematic 生成には特に問題はない様だ.
*Error* eval: undefined function - ls
*Error* eval: undefined function - drLoadDrf

シェルスクリプト変数のsedへの展開

シェル(およびスクリプト)でsedコマンドを呼び出す時の作法をまとめる (ハマったので).

(a) 変数を展開せずにそのまま渡す場合→シングルクオート(')で囲む

sed -i 's/one/$two/g' target.txt

(b) 変数を展開して渡す→ダブルクオート(")で囲む

sed -i "s/out/$two/g" target.txt

上記ははよく知られているが,変数がディレクトリの場合,展開されてしまうと展開された文字列中のスラッシュ(/)にsedが反応してしまい,意図通りに置換できない.こういう場合は区切り文字を変えるとうまく動く.

sed -i "s;path;$HOME;g" target.txt

2016年4月21日木曜日

Visual Studioでビルド時に実行ファイルを作成できない(Application Experienceを有効にする)

Visual Studioでプログラムをプログラムをビルド時に,

fatal error LNK1168: ファイル C:***\Debug\***.exe を開いて書きこむことができません

と表示されてビルドが出来ない.
Debugディレクトリを消しても同じエラーで.exeは生成できず,またしばらく放置するとビルドできるという謎現象だった.再現性が微妙で困っていたが,最終的にはサービスApplication Experienceを無効にしていたのが原因だとわかった.サービスを「手動」にする事で解決した.

ビルド時の不明なファイルオープンエラー - Miscrosoft Developer Network

Application Experienceで調べてみるともう少し詳細に調べている人がいた.アプリケーション終了後の終了処理のタイムアウトに絡んでいるのか.だから少し待つとビルドが出来たのか.

Windows 7でファイルが消せない話

2016年1月26日火曜日

JCB CARD Extageをコストをかけず解約する

JCB CARD Extageは,年会費は無料だが有効期限(5年)以内に解約するとカード発行手数料として2000円+税がかかる.
5年間持ち続ければ発行手数料は請求されないが,5年を過ぎるとJCB一般カードに更新されてしまい,JCB一般カードの年会費として1250円かかる.

コストを抑えてJCB CARD Extageを解約する方法をコールセンターに聞いたところ,JCB CARD Extageの更新月を挟んだ3ヶ月内に解約をすれば,JCB CARD Extageの発行手数料もJCB一般カードの年会費もかからず解約できるそうだ.

JCB CARD Extageは,海外利用(これはAmazon.co.jp等も含まれる)のポイントが~1.25%だったり旅行保険の利用付帯などが魅力的だが,国内だとポイント0.5%~0.75%なので使い所がちょっと難しい感じ.

2015年12月16日水曜日

Transmeta の LongRun2 における「面積コストの無い基板バイアス手法」の達成方法

ちょっと気になって(今は無き) Transmeta の LongRun2 について調べた.(あまりプロセスのことはよくわかっていないので,間違っていたら指摘いただけると助かります.)


「面積コスト無く」「レイアウト再設計もなく」基板バイスを可能にするという話だったが(参考リンク,これはSpring Processor Forum 2006 での講演資料の引用と思われる),おそらく US Patent 7098512 B1 のDeep NW (DNW) を基板内にメッシュで埋め込むというやつだろうな.

https://www.google.com/patents/US7098512


図は Google Patent からの引用です.

Twin-Well だと Nwell が浮くし,Triple-Well だと Pwell が浮いてしまう.基板バイアスをかけるためには基板 TAP を打ち各基板 TAP に電源配線を引く必要があるが,これは面積コストを増大させる.DNW メッシュにすることでP基板による低抵抗な Pwell の保持と,DNW 配線による Nwell へのバイアス印加を両立する,という感じか.最終的に DNW には基板 TAP を打つ必要があるとしても, Well ほどこまめに基板 TAP を打たなくていいので面積効率も高い.マクロレベルでメッシュを追加すればよいのでレイアウト再設計も必要ないと言うことか.
Well の抵抗高いから頑張って金属(もしくはシリサイド)で配線しているわけで,プロセスが許すなら賢い技だと思った (許される製造プロセスを見たことがないので,工場にお願いするのだろう). PMOS しかバイアスかけられないのが少し悲しいのと,Well Proximity Effect でトランジスタの閾値電圧が場所ごとにばらつきそうだけれど,大丈夫なのだろうか.


2015年11月27日金曜日

AnalogArtist(IC61)でLayout Editorのメニューが消える

久々にIC61を起動すると,以下の図のようにメニューが消えてしまっていた.




調べると,環境変数$ASSURAHOMEの設定がおかしいとこのように消えるらしい.

$ASSURAHOMEがIC51用のAssuraのインストールディレクトリを指していたので,IC61用のAssuraのインストールディレクトリを指定したところ,以下の図のように直った.


IC51とIC61で異なるAssuraを指定しなくてはいけない所が,Cadenceの駄目なところだと思う.せめてAssuraIC61とか名前を変えてほしい.

参考:Layout missing menu bar items - Cadence Technology Forums - Cadence Community

2015年11月10日火曜日

ERROR: Current execution environment is VCO=aoi. Software tree is for environment VCO=ixl

Calibre を実行するときに,
ERROR: Current execution environment is VCO=aoi. Software tree is for environment VCO=ixl
というエラーが出て起動しなかった.

調べた結果以下の事がわかった.
Calibre on Linuxにはいくつかバージョンがある.
・ixl:RedHat Enterprise Linux 5 (64bit)に最適化されたパッケージ
・aoi:RedHat Enterprise Linux 6 (64bit)以降に最適化されたパッケージ
・Calibre 32bitはもうサポートしません

そのため,Calibre実行時にCalibreは実行マシンのOSを調べ,自身がixlのパッケージなのに実行環境がRHEL6以降だと検知すると,動作を止めるらしい.

RHEL6でもixlを使いたい場合,環境変数を設定すればよいらしい.

例1:% export USE_CALIBRE_VCO=ixl

例2:% export  CALIBRE_2013_4_ALLOW_IXL_ON_RHEL6=101010

参考:Calibre Platform Support Overview and Roadmap - Mentor Graphics

2015年11月4日水曜日

AnalogArtistでshared libraryが無いと言われた

Cadence AnalogArtist(Virtuoso)でshared libraryのlibgdbm.so.2が無いと言われてSpiceINが出来なくてはまったのでメモ.OSはCentOS 6.4,ArtistはIC6.1.5です.

Virtuosoのインストールディレクトリでlibgdbm.so.2を調べると,私の環境では4つ表示された.
% ls -l /usr/CAD/cds/IC610/tools.lnx86/**/libgdbm*
lrwxrwxrwx. 1 363 bin 23 11月  6 13:42 2013 /usr/CAD/cds/IC610/tools.lnx86/lib/64bit/SuSE/SLES11/libgdbm.so.2 -> /usr/lib64/libgdbm.so.3
lrwxrwxrwx. 1 363 bin 23 11月  6 13:42 2013 /usr/CAD/cds/IC610/tools.lnx86/lib/64bit/SuSE/libgdbm.so.2 -> /usr/lib64/libgdbm.so.3
lrwxrwxrwx. 1 363 bin 21 11月  6 13:42 2013 /usr/CAD/cds/IC610/tools.lnx86/lib/SuSE/SLES11/libgdbm.so.2 -> /usr/lib/libgdbm.so.3
lrwxrwxrwx. 1 363 bin 21 11月  6 13:42 2013 /usr/CAD/cds/IC610/tools.lnx86/lib/SuSE/libgdbm.so.2 -> /usr/lib/libgdbm.so.3

試しに/usr/lib64/libgdbm.so.3を見てみると,実体は/usr/lib64/libgdbm.so.2.0.0だった.
% ls -l  /usr/lib64/libgdbm*
lrwxrwxrwx. 1 root root 16 11月  4 14:24 2015 libgdbm.so.3 -> libgdbm.so.2.0.0

libgdbm.so.2は,gdbmに格納されているらしい.

% sudo yum provides "*/libgdbm.so.2"
Loading mirror speeds from cached hostfile 
 * base: www.ftp.ne.jp 
 * extras: www.ftp.ne.jp 
 * updates: www.ftp.ne.jp 
gdbm-1.8.0-38.el6.x86_64 : A GNU set of database routines which use extensible hashing 
Repo        : base 
Matched from: 
Filename    : /usr/lib64/libgdbm.so.2 
 
gdbm-1.8.0-38.el6.i686 : A GNU set of database routines which use extensible hashing 
Repo        : base 
Matched from: 
Filename    : /usr/lib/libgdbm.so.2 
 
gdbm-1.8.0-38.el6.x86_64 : A GNU set of database routines which use extensible hashing 
Repo        : installed 
Matched from: 
Filename    : /usr/lib64/libgdbm.so.2 
 
gdbm-1.8.0-38.el6.i686 : A GNU set of database routines which use extensible hashing 
Repo        : installed 
Matched from: 
Filename    : /usr/lib/libgdbm.so.2 

gdbmの32bitと64bitをインストールして解決.
%sudo yum install gdbm-1.8.0-38.el6.i686l gdbm-1.8.0-38.el6.x86_64

ハマったのは,OSが64bitなのにVirtuosoが32bit版だったので,64bitのgdbmを入れるだけではダメだったという事か.

2015年11月2日月曜日

学歴ロンダリングのススメ

学歴ロンダリングした当事者として,学歴ロンダリングの利点欠点をまとめてみる.あくまで私見です.組織を代表する意見では決してないのでその点ご注意ください.

利点
・周りの人たちは優秀な人が多いので刺激になる(研究室による)
・資金的/資源的に余裕の多い研究室が多い(研究室による)
・博士前期/後期課程進学者が多い(研究室による)
・CAD等各種ツールの使い方のノウハウがたまっている事が多い(研究室による)
・教員に対する学生の数が少ないのできめ細かい指導を期待できる(教員による)
・大きい大学ほど小講座制で教授/准教授/助教x2がフルにそろっている事もある.研究員/博士学生が多いので,研究推進時に大いに頼れる(研究室による)
・(某大学の場合)大学院の授業は完全に軽視されているので,研究に集中できる
・異なる2つの大学/研究科の比較が出来るのは興味深く楽しい
・卒論/修論と異なる指導教員がつくので,指導教員の指導方針の比較ができるのも興味深い


欠点
・基礎学力に差があるので,慣れるまで大変
・基礎学力には,彼我の能力差もあるが,講義内容が大学間で異なる事も大きい
・上記の問題によって,内部生は難なく通る入試を通るのが大変
・進学先の先生方の研究内容や教育スタイルを一から勉強しなくてはならない
・周りに優秀な人が少ない可能性がある(大学が有名でも学生が優秀とは限らない)
・成績によっては意図した研究室に配属されない可能性がある(知り合いに複数該当)
・タイミングによっては意図した研究ができない可能性がある(該当した)
・転出元から裏切り者扱いされる可能性もある・・・(該当した)
・転出元の教員に「なんであの子がxx大にいけたんだろ?」とか言われる(知り合いが言われていた)
・教員に対する学生の数が少ないので,マンパワーの観点では大変
・進学先の大学がすばらしいとは限らない点は注意.大きな大学ほど事務方が大きな力を持っていて,何かと研究遂行の邪魔になることも多い(高価な機材を壊されたこともある.補償無し)
・研究科が内部進学研究室と外部進学&留学生研究室の2つにくっきり分かれる大学もある…(欠点と言っていいのかよくわからないが)

上記の利点/欠点とは私が経験した/身近で聞いたものであり,探せばもっと他にも例があるかもしれない.

従って,2つの方針が立てられる.
(1) 単に学歴さえロンダリングできればよい場合:
なるべく容易に入学が可能で,容易に卒業が出来る大学/研究室を探すこと大切.大学によって試験の内容は異なるし,外部の評価と試験の難易度は一致しない.同じ大学であっても研究科によって試験の難易度は異なる.外部の評価の高い大学であっても,ろくに来なくても卒業させてくれる研究室もある(らしいので,大学院進学時に試験が簡単で研究も頑張らなくてよい研究室のある研究科へ転学科する人も複数いた).単に学歴がほしいのであれば忙しくて大変な研究室は志望しない方が良いだろう.

(2) ガンガン研究したい場合:
大型の外部資金を取っている/取ってきた研究室を探すといい.
外部資金をがんがん取っていると言うことは優秀な研究者である証であり,資金を言い訳に研究が出来ないと言うことが無くなる.Googleに教員の名前を入れて評判を調べよう.研究室のHP,KAKENのサイトに教員の名前を入れて競争的資金の取得状況を調べてみてもいいだろう.ただし,今の所属大学では本当に希望する研究が出来ないのか,きちんと調べた方がいい.

有名国立大学への進学だけでなく,私立大からお金のかからない地元の国立大の有名研究室に進学を希望するというのもアリだとは思う.

Custom Waveviewで波形表示利用する色のセットを定義する

タイトル通り,Custom Waveviewで波形表示利用する色のセットを定義する方法を紹介する.
[Config]→[Preferences...]からPreference Settingsダイヤログを起動する.
[Colors]タブを選択し,"Use User-Defined Waveform Colors"を選択する.
次に,下のパネルの"Add a New Color"を任意の回数押すと,色の選択肢(デフォルトで黒)が増える.任意のセットを選択した状態で,横のカラーパネルを押すと,その色が登録される.不要なセットは,"Delete Selected Colors"を押すことで削除できる.


[Apply-Save]を選択すると,設定ファイルの保存先を聞いてくるので,[User Home Directory]を選択する.すると~/.spxrcに設定ファイルが作成される.

デフォルトで黒背景の割に濃い青色など見づらい色を使うので,暖色系の色を登録しておくと見やすくていい

同タブの[Use Thick Lines as Default Waveform Line Thickness]にチェックを入れると波形が太くなるのでこちらもおすすめ.