2013-02-07

DVIからフォントを埋め込んでPDFを作成

DVIからPDFを作成する際, 全てのフォントを埋め込む場合には以下の手順を使用する.
dvips document.dvi
ps2pdf14 -dPDFSETTINGS=/prepress -dEmbedAllFonts=true document.ps

2013-01-25

Zroute の並列化

Synopsys IC Compiler の自動配線機能 Zroute は, 並列化に対応しているらしい. zrt_max_parallel_computations が参考になるかもしれない.

2013-01-20

ibus が勝手にキー配列を変更する

私はノートPCに Fedora 18 を使用しているが, CapsLock-Ctrl, Backspace-Backslash を入れ替えて, HHK のような配列にしている. 最近の ibus のアップデート以降, 日本語入力から英語入力に切り替えると, キー配列がもとに戻ってしまう.

ibus のソースコードによると, システムデフォルトへ変更するようになっていたので, これを無効にすることにした. この変更は, /usr/libexec/ibus-xkb を呼び出すことで行われていたので, 以下のコマンドで, このプログラムがキー配列を変更しないようにした.

# mv /usr/libexec/ibus-xkb /usr/libexec/ibus-xkb-1
# cp /usr/bin/true /usr/libexec/ibus-xkb
ibus の設定で, 変更することが出来ればよかったが, そのような設定項目は無かった.

2013-01-12

ICC route_search_repair が Too many broken nets とエラーを出す

route_search_repair が, 以下のエラーを出して失敗する時は, route_auto を一度実行すると良いだろう.
There are 1248 open signal nets!
Re-connect 1248 open nets!
**** ERROR:Too many broken nets. Cannot continue! 
 search & repair fail!
このエラーは, オープンネットが多すぎるといっているので, route_auto にて, オープンネットを接続してやる.

2012-12-31

Torque の設定

計算機資源の管理ツール Torque のインストールと設定方法をまとめる. 使用したバージョンは, 4.2.0 である. EL 6, 5 の混在した環境である. バージョンアップが早いので, web で設定方法を調べる場合には, メジャーバージョンが同じものかに注意する必要がある. 古いバージョンでは, 設定方法が異なる場合がある.

使用構成

Torque は, 1つのファイルサーバと複数の計算機とから構成されるシステムにおいて使用することができる. (他の構成では不可能なわけではない.)

Torque 自体は, ヘッドノードと計算ノードとから構成される. 通常は, 1つのヘッドノードと いくつかの計算ノードとから構成される. 1つのマシンにてヘッドノードと計算ノード両方を兼ねることもできる. 以下では, ヘッドノードのホスト名を headnode, 計算ノードのホスト名を node01, node02... として表す.

ビルド

rpmbuild にて, 以下の RPM を作成した. (その他, el5 の RPM も作成する.)
torque-4.2.0-1.el6.x86_64.rpm
torque-client-4.2.0-1.el6.x86_64.rpm
torque-debuginfo-4.2.0-1.el6.x86_64.rpm
torque-devel-4.2.0-1.el6.x86_64.rpm
torque-scheduler-4.2.0-1.el6.x86_64.rpm
torque-server-4.2.0-1.el6.x86_64.rpm

インストール

以下のようにして, ヘッドノードへインストールする.
headnode # rpm -Uvh torque-4.2.0-1.el6.x86_64.rpm
headnode # rpm -Uvh torque-server-4.2.0-1.el6.x86_64.rpm
headnode # rpm -Uvh torque-scheduler-4.2.0-1.el6.x86_64.rpm
headnode # rpm -Uvh torque-client-4.2.0-1.el6.x86_64.rpm
headnode # iptables -I INPUT -j ACCEPT -m tcp -p tcp --dport 15001:15005
なぜか, torque-client もインストールしないと設定できない. この時点で, pbs_server, pbs_sched, trqauthd がインストールされる. ヘッドノードで, 設定する.
headnode # service pbs_server start
headnode # qmgr
create node node01"
create node node02"
...
create queue batch
set queue batch queue_type = Execution
set queue batch resources_default.nodes = 1
set queue batch resources_default.walltime = 01:00:00
set queue batch enabled = True
set queue batch started = True
set server scheduling = True
set server default_queue = batch
このあと, pbs_server の再起動が必要かもしれない. 設定したノードの状態を確認するには以下のコマンドを使用する.
headnode $ pbsnodes -a
もし, offline と表示された場合は,
headnode $ pbsnodes -c node01
にて解除する.

計算ノードには, 以下のようにそれぞれインストール・設定する.

node01 # rpm -Uvh torque-4.2.0-1.el6.x86_64.rpm
node01 # rpm -Uvh torque-client-4.2.0-1.el6.x86_64.rpm
node01 # iptables -I INPUT -j ACCEPT -m tcp -p tcp --dport 15001:15005
node01 # cat /var/spool/torque/server_name
headnode
node01 # cat /var/spool/torque/mom_priv/config
$pbsserver headnode

2012-12-26

Fedora 17/18 におけるサスペンドの失敗

最近, Fedora 17/18 において時々サスペンドに失敗することが起こっていたのだが, もしかすると, nmi_watchdog を無効にしたことが原因かもしれない. 以下のようなファイルを作って, 様子をみてみよう.
$ cat /etc/pm/sleep.d/10nmi_watchdog 
#! /bin/sh

. "${PM_FUNCTIONS}"

case "$1" in
 hibernate|suspend)
  cat /proc/sys/kernel/nmi_watchdog > /dev/shm/nmi_watchdog.saved
  echo 1 > /proc/sys/kernel/nmi_watchdog
  ;;
 resume|thaw)
  cat /dev/shm/nmi_watchdog.saved > /proc/sys/kernel/nmi_watchdog
  ;;
esac
なお, 使用しているマシンは, Thinkpad X201s で, Fedora 17 の時も 18 にアップグレードしてからも症状は変わらない.

2013-04-03 追記
どうも, サスペンド状態にあるときに USB 接続の機器を抜くと, その後, サスペンド復帰, 再度サスペンドした時に失敗するようだ. USB の電源管理をいじったのが原因かな... カーネルのアップデートと関係があったのではなく, 携帯電話をUSB経由で充電する習慣がついたことが原因だったようだ.

2012-12-20

ICCの配置に関するコマンド

相対的な配置制約

セルとセルとの相対的な位置関係を設定できる.
set_fp_relative_location

マクロアレイ

これはどのような機能だろうか?
set_fp_macro_array

グループ

セルやモジュールを指定して, 配置位置のグループを設定できる. 2種類のグループを指定できる. hardグループでは, グループに属するセルは必ず指定した位置の中に配置される. softグループでは, グループに属するセルでも指定した位置の外に配置されることがある. グループに属さないセルは, 指定した位置の中に配置されることはない.
create_bounds -type hard
create_bounds -type soft

電源ドメイン

電源ドメインを設定すると, 配置だけでなく電源配線も分離することができる. 以下に例を示す.
create_voltage_area -coordinate {0 0 72 72} -name P1 {I0} -guard_band_x 8 -guard_band_y 8 -cycle_color
レベルシフタやバッファの挿入はどのようにされるのだろうか?

ドメイン内であれば, バッファはうまく挿入されるようである. 電源ドメインをまたぐ場合は, どのように処理されるのだろうか?

座標指定

コマンド set_attribute にて, 属性 (origin, is_placed, is_fixed, orientation) を設定する. 以下に例を示す.
set inst [get_cells I0/C0]
set_attribute $inst origin {72 144}
set_attribute $inst is_placed true
set_attribute $inst is_fixed true
set_attribute $inst orientation N
あるいは, 以下のコマンドでもできるのだろうか?
set_cell_location