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キー+上下左右カーソルキーに相当するコマンドを実行できます.超便利.

2018年12月20日木曜日

SiliconSmartでHSPICEのライセンスを使わない(HSPICE_embedded)

SiliconSmart 2016では,シミュレータとしてHSPICE_embeddedを選択する事ができ,これを使うとSiliconSmartのライセンスだけでHSPICEを用いてキャラクタライズをする事ができる.
(ただしHSPICEは2015.06より新しくないといけない)

configure.tclのシミュレータ選択に以下のように書けばよい.

set simulator hspice_embedded
set simulator_cmd { full-path-to-hspice < input_deck > -o < listing_file >}


これでHSPICEのライセンスをモリモリ消費せずにキャラクタライズを回せる.