2019年4月5日金曜日

とある助教の助教公募戦線記録

これまでに出した公募の結果が一段落したのでまとめてみる.検討したけれど出していないものもあげます.

スペック
・男
・集積回路の物理設計よりのCAD屋.回路設計もするよ
・応募時の業績:論文誌4本,レター1本,国際会議10本,その他
・任期5年再任有りが再任無しになっていたので仕方なく公募戦線へ再挑戦することに
(再任については私の勘違いでは?という話もあるとか)

こだわったところ
・集積回路設計に関わりたい
・PIは,私が知っている教員か,外部資金などを取っている教員を希望した.

2018/8 国立大
・任期付き助教(5年,再任無し)
・研究室の指定有り
・分野は少し違う.分野はこちらが合わせる事はできそう
・応募後,8週間ほどでお祈りメール

2018/8 公立大
・任期付き助教(5年,再任有りだったはず)
・研究室の指定有り
・先生の分野と自分の分野は同じ
・悩んだけれど,知らない先生だったのでやめてしまった
・応募者がいなかったらしく,再公募しているようだ

2018/? 公立大
・任期付き助教(5年,再任有りだったはず)
・研究分野の指定有り
・分野は少し違う.研究分野はこちらが合わせる事はできそう
・学会でPIの先生に話をしたら「アナログ回路の人が欲しいんだよね」と言われたので応募を止めた

2018/10 私立大
・任期付き助教(5年,審査後任期無し)
・研究室の指定あり
・分野は近いようで少し違う.研究分野は合わせる事はできそう
・応募後,即連絡が来て即面接,即内定.PIに採用権限があるためらしい

感想
・集積回路系といっても分野が広いので,デジタル回路向けCAD屋さんにフィットする公募は少なく感じた
・IoTとか,デバイスを作る側ではなく使う側の公募は多い?
・もっと多くの国内学会に参加しておくべきだった.知らない先生が意外と多い
・JRecinの過去ログは消えるのでPDFは保存しておくべき
・助教から助教なのは察してください

前回の公募戦線記録はこちら:とある博士学生の助教公募戦線記録

2019年4月4日木曜日

VMware上のCent OS7に固定IPを割り当てる

Windows10をホストOS,Cent OS7をゲストOSとして,ゲストOSに固定IPを割り当てたい.いろいろやり方があって混乱したけれど,結果的には以下の記事の情報が役に立った.

VMWARE PLAYER の NAT ネットワークを極める
http://hetarena.com/archives/2343

ポイントは,Vmware上のNATネットワークでは,
ゲストOSからみて
ホスト:192.168.xxx.1
ゲートウェイ:192.168.xxx.2
になる.固定IPにしたければ,(1)DHCPの範囲外で性的に割り当てるが,ホストOS上で動くDHCPサービスがゲストOSに固定IPを割り当てるようにすればよい.

ゲストのCent OSでは,まず自分のMACアドレスを探す.
% ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
(略)
2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:35:e2:ea brd ff:ff:ff:ff:ff:ff
    inet 192.168.xxx.128/24 brd 192.168.xxx.255 scope global noprefixroute dynamic ens33
(略)


この地点ではDHCPで192.168.xxx.128が割り当たっている.xxxはVMwareインストール時に一意に決まるそう.
ens33のlink/etherに続く12文字がMACアドレス.これをホストOSのDHCPサービスの設定に書き込む.

NATではホストOSはVMnet8で通信するのでそこを書き換える.
開くファイル:C:\ProgramData\VMware\vmnetdhcp.conf
host VMnet8 {
     hardware ethernet 00:0c:29:35:e2:ea;
     fixed-address 192.168.xxx.50;
 }
のように書き換える.ここでは固定IPとして 192.168.xxx.50を割り当てる.なお,システムによっては直接編集ができないようなので,私はいったんデスクトップにファイルをコピーしたうえで編集し,C:\ProgramData\VMware\vmnetdhcp.confを上書き保存した.

設定を反映させる.

ホストOSのDHCPサービスを再起動.
[タスクマネージャ]→(必要に応じて詳細設定表示)→[サービス]→[VMnetDHCP]を右クリック→[再起動]

ゲストOSのネットワークを再起動
% systemctl restart network

IPアドレスを確認
% ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
(略)2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:35:e2:ea brd ff:ff:ff:ff:ff:ff
    inet 192.168.xxx.50/24 brd 192.168.249.255 scope global noprefixroute dynamic ens33
(略)

これでIPアドレスを固定できた.

ここまで記事を書いて気が付いたが,昔全く同じ記事を書いていた.車輪の再発明をしてしもうたてへぺろ(少しだけ情報多いからそのまま載せます)


2019年3月10日日曜日

SiliconSmart の実況状況をGUI表示する(DP Manager)

SiliconSmartで分散コンピューティングしているときの各Workerの状況をGUIで確認するにはDP Managerを使う事ができる.

~sis_install_dir/cpdl_runtime/bin/dpmanager


緑は処理完了,赤は未了を示す.

2019年3月4日月曜日

FineSimで波形ファイルのフォーマットを指定する

FineSimで波形ファイルのフォーマットを指定するには以下の設定を加える.

.option finesim_output=[fsdb|wdf|psf|tr0|utf|psfascii|none|out]  

デフォルトではfsdbになる.noneを設定すると,.probeや.option postに関係する設定を全て無視するそうだ.

2019年3月3日日曜日

FineSimでfsdbのバージョンを指定する

FineSim M-2017.03で波形ファイルを出力するとデフォルトでfsdbのversion 5.5になる.Custom Waveview の2016.06-SP2では,fsdbのバージョンは5.4までしかサポートしておらず波形を読めない.

FineSimの出力するfsdbのバージョンを指定するには以下のオプションを使う.

.option finesim_fsdb_version=[5.4|5.5] 

FineSim M-2017.03ではfsdbの5.3以下のバージョンはサポートされないらしい.悲しい.

2019年2月28日木曜日

雇用者から見た雇い止めへの注意点

プロジェクトの予算が無くなって契約期間を満了せずに雇い止めになる可能性がある時は,あらかじめ財源がないから雇い止めになるなど不更新条項などを付け,互いに理解・認識のうえ署名すべき.(近畿コカコールボトリング事件)

各更新において,満期まで更新可能な事を労働者に期待させるような言動をする事はNG.(カンタス航空事件)

予算について実質的なんの権限もない学科長とかが「成績も良いし契約満了までいけるんじゃないか」とか適当に言うのもNG.

2019年1月18日金曜日

DesignCompilerにおける電力を考慮した論理合成

compileコマンドを使うとき
set_max_dynamic_power [val]
set_max_leakage_power [val]
compile -power_effort [none|low|medium|high]

compile_ultraコマンドを使うとき
set_leakage_optimization true
set_dynamic_optimization true
compile_ultra

compile_ultraはデフォルトで-area_high_effort_scriptオプションが
ついてしまい取り消せないので,上記の2つのコマンドの場合,compile -power_effort highの方が電力は減るっぽい(dynamicが2/3ぐらいになった).

2019年1月17日木曜日

Design Compilerの論理合成のコスト関数

Design Compilerで論理合成を行うとき,あるコスト関数を仮定してそれを最小化するように論理合成を行う.
コスト関数は以下の順になっており,太字のパラメータはset_cost_priorityコマンドで順番を変えられる.制約は,デザインルールと最適化係数の3種類に分かれている.

優先度(上ほど高い)制約の種類
connection classes Design rule cost
multiple_port_net_cost Design rule cost
min_capacitance Design rule constraint
max_transition Design rule constraint
max_fanout Design rule constraint
max_capacitance Design rule constraint
cell_degradation Design rule constraint
max_delay Optimization constraint
min_delay Optimization constraint
power Optimization constraint
area Optimization constraint
cell count

仮に最大遅延制約を最優先するには,set_cost_priorityコマンドで以下のように指定する.
set_cost_priority -delay
仮に,最大遅延制約,最小遅延制約の順に制約を優先するには以下のように指定する.
set_cost_priority {max_delay min_delay}

論理合成時にデザインルールを無視した合成を行うには,compileコマンドもしくはcompile_ultraコマンドに-no_design_ruleオプションをつける.論理合成を複数行うときにデザインルールについてのみ修正するには-only_design_ruleオプションを付ける.

2019年1月5日土曜日

Virtuoso Dynamic DRC (DRD)を使う.DRDのルールを上書きする(techSetSpacingRule)

Virtuoso Dynamic DRC (DRD)を使うと,レイアウト編集中にオンデマンドにDRCをかけることができる.有効にするには,Layout Editingのアイコンから選ぶか,Options -> DRD EditからInteractive Modeを変える.


モードは3つある.
DRD Notify:DRDを有効にし,違反がある場合は警告をだす.
DRD Enforce:DRDを有効にし,違反があるレイアウトを許さない.
DRD Off:DRDを無効にする.

DRD のルールは Techfile に書かれている( constraintGroup フィールドに書かれている).このルールを変更するには Techfile を書き換える必要があるが,Techfile の書き換えは設計資産の再利用などに問題が発生する可能性がある.またライブラリ生成時に Techfile を Attach するように指示されている場合は Techfile の書き換えができない. SKILL を利用して制約を上書きするには techSetSpacingRule 関数を使う.

techSetSpacingRule(
d_techFileID
t_rule
g_value
ltx_layer1
[ ltx_layer2 ]
)

引数はそれぞれ,
d_techFileID :対象のライブラリID
t_rule:ルール名.指定可能なルールはそれぞれ以下の通り.
minNotch, minSpacing, minWidth, defaultWidth, maxWidth, sameNet
g_value:スペーシングルールの値.整数もしくは小数.
ltx_layer1:適用するレイヤー名
[ ltx_layer2 ] :(Option)適用する2つめのレイヤー名

d_techFileID は techGetTechFile 関数と ddGetObj 関数を使うとよい.

最終的には以下のように組合わせる.

techFileID=techGetTechFile(ddGetObj("libName"))
techSetSpacingRule(techFileID "minSpacing" 0.1 "Metal1")

ある PDK では Techfile のスペーシングルールが DFM ルールの 0.11 um なのだが,


上記コマンドを実行すれば,以下のようにルールを 0.10 um に変えられる.


minSpacing や minWidth などのルールは,Virtuoso Space-Based Router (VSR)で必須のルールなので,VSRを使うには上記関数で設定してあげれば良さそう(未検証).

On-demand-DRCは,本当はCalibre RealTimeを使えればいいのだけれどなー.

2019年1月3日木曜日

Virtuosoの画面サイズをSKILLコマンドで制御する(hiResizeWindow)

windowid=hiGetCurrentWindow()
hiResizeWindow(windowid list(x1:y1 x2:y2))

x1:y1は左下,x2:y2は右上の座標.
x1=0にするとウィンドウマネージャのバナー分だけ上にずれるので,x1=1にしてやるとずれなくなる.(環境依存?)

2019/07/27追記
これを応用すると,WindowsでいうWindowsキー+上下左右カーソルキーに相当するコマンドを実行できます.超便利.