2015年5月28日木曜日

AnalogArtist(Virtuoso)でコマンドラインからCDL outする.

AnalogArtistのcdsもしくはOAからコマンドラインでCDLを出力させるためには,付属のsiを使う(Simulation Interfaceのことか?).
まず,si.envファイルを以下の様に作成する.このファイルは,GUIでCDL outを行った場合に
自動生成されるそうなので,一回GUIで実行すれば後は使い回す事が出来る.

simLibName = "LIBNAME"
simCellName = "CELLNAME"
simViewName = "schematic"
simSimulator = "auCdl"
simNotIncremental = 't
simReNetlistAll = nil
simViewList = '("auCdl" "auSchematic" "schematic" )
simStopList = '("auCdl")
hnlNetlistFileName = "CDLFILE.cdl"
resistorModel = ""
shortRES = 2000.0
preserveRES = 'nil
checkRESVAL = 'nil
checkRESSIZE = 'nil
preserveCAP = 'nil
checkCAPVAL = 'nil
checkCAPAREA = 'nil
preserveDIO = 'nil
checkDIOAREA = 'nil
checkDIOPERI = 'nil
checkCAPPERI = 'nil
simPrintInhConnAttributes = 'nil
checkScale = "nil"
checkLDD = 'nil
pinMAP = 'nil
shrinkFACTOR = 0.0
globalPowerSig = ""
globalGndSig = ""
displayPININFO = 't
preserveALL = 't
setEQUIV = ""
incFILE = ""
auCdlDefNetlistProc = "ansCdlSubcktCall"


次にsiを以下のコマンドをTerminalに打ち込む事で起動する.

% si -batch -command netlist

siがVirtuoso Framework Licenseを取得し,データベースからCDLを抽出し記載したファイルに書き出す.

なおうちの環境では
*Error* eval: undefined function - _oiSetMasterFieldsEnabled
とエラーが出るが,意図したファイルが出力されている様だ.

2015年5月25日月曜日

TgifからInkscapeに乗り換えるためのメモ

これまで論文の図はTgifを使って描いていたが,出力品質が悪く,特に領域を模様で埋めたりすると変なモアレができる.

そのためInkscape(0.47)に乗り換えたのだが,InkscapeはInkscapeで使いにくいので試行錯誤した結果をメモ.

○ オブジェクトを拡大/縮小すると線幅が変わるのを止める
Inkscapeの設定(Shift-Ctrl-P)の[変形]→[ストローク幅を拡大縮小する]のチェックを外す.

○ 矢印の色を線の色と合わせる
[エクステンション]→[パスの変形]→[マーカーの色をストロークに合わせる]を選択すればよいらしい
# しかし,私の環境ではlibxml2がうまく入らないのでうまく有効化できない…

○ 描画領域の大きいEPSが正確に出力されず切れる
エクスポート領域を描画全体に変えても,キャンパスサイズをA0に変えても切れる.
→EPSではなくPDFにする.PDFをLatexに埋め込むために,extractbbを使って描画領域を取得し,includegraphicsに入力する(本当は.xbbができれば自動取得されるはずなのだが).

以下,Latexに入れるための工夫

(Tgif時代からだが)Latexのfigure環境をはき出すスクリプトを以下の様に作成

use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat);
my $FILE="NULL";
my $SCALE="1";
my $LOC="h";
my $BBFILE="NULL";

GetOptions(
        "file=s"  => \$FILE,
        "scale=i" => \$SCALE,
        "loc=s"   => \$LOC,
        "bbfile=s"  => \$BBFILE
);

open(BBIN, "$BBFILE") || die "cannot open xbb file: $BBFILE, die";
$BBINA =  ;
chomp($BBINA);

$TITLE = $FILE;
$TITLE =~ s/.pdf//g;
$CAPTION = $TITLE;
$CAPTION =~ s/\_/\\\_/g;

print <<EOF;
\\begin{figure}[$LOC]
  \\begin{center}
   \\includegraphics[bb=${BBINA}, scale=${SCALE}]{$FILE}
   \\caption{$CAPTION}
   \\label{fig:$TITLE}
  \\end{center}
\\end{figure}
EOF

本スクリプトを動かすためのMakefile
%.pdf: %.svg
   inkscape $*.svg --export-pdf=$*.pdf --export-area-drawing

%.pdf.figtex: %.pdf
        extractbb -O $*.pdf | grep "HiRes" | cut -d ':' -f 2 > tmp.xbb
        perl ~/programs/figure_template_pdf.pl \
        --file=$*.pdf --scale=1 --loc=h --bbfile=tmp.xbb >> main.tex 
        rm tmp.xbb

2015年3月5日木曜日

とある博士学生の助教公募戦線記録

これまでに出した公募の結果が一段落したのでまとめてみる.

スペック
・大手私立大卒→国立大大学院
・男
・集積回路系.自称CAD屋
・応募時の業績:論文誌2本,国際会議7本,その他
・学振はとれず
・特に大学にこだわりはなく,J-RECINで自分に合いそうな大学を探して応募した.


2013/10 私立大学(母校だった)
・任期付き助教(5年,再任無し)
・研究分野の指定無し
・応募後,6週間ほどでお祈りメール
・同時期に,研究分野を特に指定する公募(任期5年)と,特任助教の公募(任期1年/5年まで延長)もしていた.

2013/10 国立大
・任期付き助教(5年,再任あり)
・研究室の指定あり
・研究内容は自分の研究テーマとマッチせず
・応募後,6週間ほどでお祈りメール

このあたりで焦りだし,積極的に応募するように.

2014/1 私立大
・指導教員からのツテで話が来た
・任期付き助教(5年,再任無し)
・研究分野の指定あり
・研究内容は自分の研究テーマとは少し異なるが,拡張は可能と判断
・受け入れ先とはある程度順調に話は進んでいたが,卒業が無理と判断,辞退した

2014/4 国立大
・任期付き助教(5年,再任あり)
・研究室の指定あり.受け入れ先と相談した結果,自分の研究テーマを拡張すれば良いと判断
・受け入れ先研究室の情報が不十分で,モチベーションが上がらず結局応募せず.

2014/5 国立大
・任期付き助教(5年,再任あり)
・研究分野の指定あり.受け入れ先と相談した結果,すりあわせればokと判断し応募
・応募後,半年(!)かかってようやくお祈りメール

2014/5 国立大
・任期付き助教(5年,再任あり)
・研究分野の指定なし.受け入れ先にもあらかじめ連絡.
・応募後,2週間ほどで面接.
・面接後2週間ほどで内定通知
・同時期に,研究分野指定の任期付き助教の公募もしていた.

もう一つ指導教員のツテで話が来た公募もあったが,こちらは時期があまりにも先だったのでお断りしてしまった.


感想
・任期付き(5年)が多い.私立大は再任不可も多い.文科省がテニュアトラック制度を推進している事と,後者は正規雇用をいやがるためか.指導教員は驚いていたが,任期付きというのは時代の流れだろう.

・研究テーマを指定された場合において,意外と自分の研究テーマ(集積回路)と合う公募は見つけられなかった.多かれ少なかれ研究内容の軌道修正をしないと受け入れ先の希望に添わない.
# 一方で本年度は集積回路系の助教公募が多い気がする…

・私はラボの博士学生としては平均より下だと思っているが,そのためか助教の公募はだいぶ苦戦した.学振DC1/2取れるくらいでないと苦しいだろう.

・私の場合,いわゆる「教授のツテ」というのはそこまで多くはなかったと思う.

・応募時にあらかじめ先方に連絡した方が良いと思った.多くの方に親切にしていただいた(助教だからかも).

・女性だと有利にすると明言する公募は結構ある.女性しか採用しない物もある.

2019/4/6 追記:助教→助教の公募戦線に参戦しました.
とある助教の助教公募戦線記録

2015年2月25日水曜日

gnuplotでパースできない行を飛ばす

CADやプログラムの出力結果をgnuplotでプロットする事はよくある.gnuplotはデータ部がcsvやタブ区切り,空白区切りであればパースできるが,出力結果にCADのバージョンやIndexなどがgnuplotのコメント形式と異なる形式で出力されるとgnuplotはファイルの読み込みをやめてしまう.
たとえばHSPICEであれば,ファイル先頭にHSPICEのバージョンやタイトル,Measureの名前が書かれているのでそのままではgnuplotでは読み込めない.

これを回避するために,パースできない行を見つけたときに読み込みを停止するのではなく,処理を続行させるように変更してみる.

src/plot2d.cを開き,get_data関数内のswitch(j)文中のcase 0を探す.
(4.6.0 patch 0だと669行目)

case 0: /* not blank line, but df_readline couldn't parse it */
{
df_close();
int_error(current_plot->token,
"Bad data on line %d", df_line_number);
}
break;

以下の様にコメントアウトする.


case 0: /* not blank line, but df_readline couldn't parse it */
{
//df_close();
//int_error(current_plot->token,
//"Bad data on line %d", df_line_number);
}
break;



あとは./configure,make,make installすればよい.モチベーションはkamae君と同じ.彼の方が正攻法だと思うが,こちらはgunplotに違反する構文がある行が不明でも対応できる.

IEEEtran.bstで著者名が線になるのを防ぐ


IEEEtran.bstにおいて参考文献リストにおいて同じ著者が連続すると,著者名が"------"と表示されてしまう.不可解な仕様だ.
調べると,著者名が連続する場合にダッシュにしない方法があるらしい.

(1) 論文データベース(.bib)にIEEEtran.bstの制御情報(IEEEtranBSTCTRL)を加える.
連続する著者をダッシュにしないのであれば,CTLdash_repeated_namesをnoにすればよい.

@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLdash_repeated_names = "no"
}

(2) 定義した制御情報を有効にする
定義した制御情報を有効にするコマンドをTEXファイルの本文に追加する(\begin{document}の直後がいいらしい).

\bstctlcite{IEEEexample:BSTcontrol}

(3) bstctlcite コマンドを定義する.
IEEEのクラスファイル(IEEEtrantools.styパッケージなど)を使っていれば必要ない.
その他のクラスファイルを使っている場合,bstctlciteコマンドを定義する.プリアンプル(\begin{document}の前)に書けばよい.
bstctlciteコマンドのソースコードはIEEEtran.bstの冒頭にコメントとして書かれている.

\makeatletter
\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
\def\@bstctlcite[#1]#2{\@bsphack
\@for\@citeb:=#2\do{%
\edef\@citeb{\expandafter\@firstofone\@citeb}%
\if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
\@esphack}
\makeatother

定義後,コンパイルすると連続する著者もちゃんと表記されるようになった.



参考:
Is it normal for BibTeX to replace similar author names with “------”?
How to Use the IEEEtran BIBTEX Style: IEEEtran.bstのマニュアル(PDF).丁寧に説明されています.

2014年12月15日月曜日

IC CompilerでLeakage Power Aware Filler Insertionを行う

某会議で,Fillerの消費エネルギーが大きいと問題になっている.IC CompilerでFillerを自動で挿入する際に,指定した消費エネルギーの範囲内でFillerの種類を選択させる事が可能である.

insert_stdcell_filler -leakage_power value

valueはFillが消費するリーク電力で,単位はmWである.

2014年12月13日土曜日

difference between HSpiceD, HSpiceS, Spectre, SpectreS?

Analog Design Environment(ADE)を利用している際に,
シミュレータの選択肢が複数あるが,これらの違いがわからないので調べた.

まず,Spiceの種類として大きくCadenceのSpecterとSynopsysのHspiceの2種類がある.
そして,HspiceDとHspiceS(Hspice DirectとHspice Socket),SpecterとSpecterS(Specter DirectとSpecter Socket)が存在する.

過去の経緯として,これらのシミュレータは柔軟に変数化可能な構文をサポートしていなかったため,ADEとシミュレータの間にcdsSpiceというマクロ言語をサポートするツールを挟むことで,ADEでの柔軟なシミュレーションを可能にした.一方でcdsSpiceを挟んでしまうため,ユーザーはシミュレータのサポートするすべての構文を利用できない欠点があった.

その後,各シミュレータが実行可能なネットリストを出力するダイレクトモードをADEはサポートし,その結果より効率よいシミュレーションが可能になったそうだ.



内容は,英語の文献を要約しただけである.
Cadence Technology Forums: difference between HSpice,HSpiceS,Spectre,SpectreS?