2026年8月5日水曜日

VNC を AlmaLinux 8.10 に導入したときにはまったこと

・ポートを空ける

% firewall-cmd --permanent --add-port=5901/tcp
% firewall-cmd --reload
% firewall-cmd --list-all

・Polkitの設定を変更

カラーマネジメントとパッケージマネジメントの更新を全ユーザに対し許可する.
% sudo vi /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.debian.apt.*;io.snapcraft.*;org.freedesktop.packagekit.*;com.ubuntu.update-notifier.*
ResultAny=no
ResultInactive=no
ResultActive=yes


2026年8月4日火曜日

Xfce のデフォルトターミナルを変える

 Xfce のデフォルトターミナルは [メニュー]→[設定]→[デフォルトアプリケーション] で変更できる.こうするとデスクトップ右クリックで「端末で開く」のデフォルトを変える事ができる.よく忘れるのでメモ.



Linux Mint 21.2 Victoria Xfce Edition を使っているのだが,Terminalの選択肢が悩ましい.
  • デフォルトの Xfce Terminal はものすごく重い.ログが大量に出たり,Window を掴んでグリグリすると xrdp の CPU 使用率が100%になりすべてがカクカクしだす.(Intel N97 が非力説もある)
  • Gnome-terminal は軽量なのだが,一日経つとプロファイルが初期化されてしまう.Window を触った瞬間に黒背景が白背景になるので一瞬でムスカにされてしまう.
なので Kitty にしてみた.設定が奥深くてよくわからないのだけれど,ひとまずなんとか使えそうだ.

(1) ssh 接続先で backspace や Ctrl-U が効かない
正確には消えるが画面にログが残る.ログイン先の環境変数を 
% TERM=xterm
にする.





















2026年8月3日月曜日

RHEL9.7 に Virtuoso Studio を入れる

インストール先は RedHat Enterprisse Linux Server 9.7 です.Virtuoso のバイナリを起動して,表示される不足しているシェアードライブラリを入れていく.結局以下を入れればよかったよ.
 
ところが
 
Qt の xcb 関係のエラーが出た.プラグインが使っている共有ライブラリがそろっているか ldd で調べればよいらしい.
 
ここで "not found" になっているシェアードライブラリを入れればよい.dnf provides で聞いて回った結果以下を入れればよかったよ.
 
こういうのってバージョン依存を回避するために CAD のバイナリに入っているものじゃないんだね.

2026年8月2日日曜日

Cadence のライセンスサーバーを立てる

 インストール先は RedHat Enterprisse Linux Server 9.7 です.tcsh ksh が必要です.

Licesnseセットアップ

LUC25.01.002/doc/license/Cadence_License_Server_Diagnostics_Utilities.html を見ながらやってみる.

ユーザーアカウント cdsmgr を作成することが推奨されているみたい.
% sudo useradd cdsmgr
% sudo passwd cdsmgr

LUC25.01.002/share/license 以下にライセンスサーバー関係のバイナリがあるみたい../lic_config を起動する.-xを付けないとデフォルト,-xを付けるとカスタムできるらしいが,挙動は変わらない気がする...
% cd LUC25.01.002/share/license 
% ./lic_config 

(1) 最初にCadenceツールのインストールディレクトリを聞いてくる.デフォルトにする.
(2) ここにtools を作るか聞いてくる.作らせる.

ところがホスト ID (MACアドレス) は正しく認識できているのに,ライセンスファイルがここにないと表示される.lic_config を見ると,"^license."をライセンスファイルとして認識するらしい,がもらったライセンスファイルは"License_*"だ.名前を書きかえる.

% mv License_なんちゃら.txt license.dat.2027.dat
% ./lic_config 

今度はライセンスファイルを認識したが,「Validなものは SERVER,DAEMON,FEATUREしかないはずでこのライセンスファイルはおかしい」と言ってくる.たしかにライセンスファイルには行頭が"USE_SERVER"で始まっている箇所がある.これもらったものなんだけれど...

lic_config を見ると "$linetype" != "USE_SERVER" かつ "$linetype" != "#" and  "$linecont" == "1" の条件でエラーメッセージを出して異常終了するらしい.goto error をコメントアウトして継続させてしまおう.
% vi lic_config
# goto error <- コメントアウト
% ./lic_config
....
You have just configured the license files and the daemon startup script. 
と表示された,セットアップはできたみたい.いいのか.

Lisence 登録

lic_config によってデーモンの起動ファイルができているので,rc.lic を /etc にコピーする.rc.lic は書き換えられているのでマニュアルの指示に手動で書き換える必要は無い.
% sudo cp re.lic /etc/re.lic
(マニュアルは rclic.sample を /etc/rc.lic にコピーしろとあるが間違いなはず)

所有者を変える
% sudo chown cdsmgr /etc/re.lic

パーミッションを変える
% sudo chmod 6744 /etc/rc.lic

inittabに登録する
% sudo echo "cds::once:sh /etc/rc.lic" >> /etc/inittab

Lisence 起動

ユーザー cdsmgr になって実行する
% su cdsmgr
%  /etc/rc.lic 

2026年8月1日土曜日

Synopsys のライセンスサーバーを立てる

 Synopsys のライセンスサーバーを Linux Mint で立てます.RHEL 系しか保証されていないけれど,結果的には全く問題なかったよ.

Synopsys Common Licensing を入れるためにまず Synopsis Installer を入れる.ダウンロードしたバイナリに実行権限を付け,実行.
% chmod +x SynopsysInsterller.run
% ./SynopsysInsterller.run
実行中にインストールディレクトリを聞かれるので指定する.

次に,Synopsys Installer を使って Synopsys Common Licensing を入れる.
% ./installer/installer
バイナリのダウンロード先,インストール先のルートディレクトリ,Site IDを入れる.

Synopsys Common Licensing を使ってライセンスサーバーを立てる.ライセンスファイルを開き,hostname1 を置換してライセンスサーバーの名前にする.
% sed -e "s/hostname1/servername/gc" license_org.txt > ~/synopsys/license.txt

ライセンスファイルは scl_root/admin/license に配置する.
% ln -s ~/synopsys/license.txt scl_root/admin/license

ライセンスサーバー起動
% scl_root/linux64/bin/lmgrd -c scl_root/admin/license/license.txt

FlexNet が起動した.止めてみよう.
% scl_root/linux64/bin/lmdown -c scl_root/admin/license/license.txt
このベンダーのライセンス止めていいのか聞いてくるので y で止める.

ここからは Keysight を参考にする.ライセンスサーバーをサービスとして登録する.systemctl に登録するためのファイルを作成する.
 
% sudo vim /lib/systemd/system/synopsis-license.service

multi-user モードで起動させるので,systemd の所定の位置にスタティックリンクを張る.
% sudo ln -s /lib/systemd/system/synopsys-license.service /etc/systemd/system/multi-user.target.wants/synopsys-license.service

有効にする.
% sudo systemctl daemon-reload
% sudo systemctl enable synopsys-license.service
% sudo systemctl start synopsys-license.service
% sudo systemctl status synopsys-license.service

これで  active (running)  になっていればOK.

環境変数を設定して,
export SNPDLMD_LICENSE_FILE=27030@servername
この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行時にライセンスが正常に見えていればOK.

2026年7月31日金曜日

Keysight のライセンスサーバーを立てる

Keysight のライセンスを取り上げられてしまったので,個別にライセンスサーバーを立てることになってしまった.

ここでは LinuxMint に立てることにする.FlexNet のライセンスサーバーをKeysightダウンロードする.解凍した物の中に PDF があるので基本的にはその PDF 通りに設定すればよい.

ライセンスファイルを確認する.ここで
SERVER this_host MACADDRESS 27009
の MACADDRESS がマシンの MAC アドレスと一致しているか確認する.ケースインセンシティブ.27009 はポート番号で,27000~27009 の値となっている.

今回のライセンスはフローティングとのことだが,ライセンスファイルは PDF の "Example 5: Floating license (borrowable)" の様に floating と書かれていないが大丈夫みたい.
VENDOR_STRING=005056905d85 vendor_info="DESCRIPTION=MyProduct, floating, permanent license
 (MYFEATURE1 coun" \

ライセンスファイルを所定の位置に配置する.Linuxの場合
/var/opt/keysight/licensing/licenses/server
の server がライセンスファイル.なおマニュアルのパスは誤字っている.

試しにライセンスサーバーを起動してみる.
% ./lmgrd -c /var/opt/keysight/licensing/licenses/server -l

この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行する時に,ライセンスが正常に見えていればひとまずOK.
ライセンスサーバーをシャットダウンしよう.
% ./lmutil lmdown -c /var/opt/keysight/licensing/licenses/server

ライセンスサーバーをサービスとして登録する.
systemctl に登録するためのファイルを作成する.
% sudo vim /lib/systemd/system/keysight-license.service

 


multi-user モードで起動させるので,systemd の所定の位置にスタティックリンクを張る.
% sudo ln -s /lib/systemd/system/keysight-license.service /etc/systemd/system/multi-user.target.wants/keysight-license.service

有効にする.
% sudo systemctl daemon-reload
% sudo systemctl enable keysight-license.service
% sudo systemctl start keysight-license.service
% sudo systemctl status keysight-license.service

これで active (running) になっていればOK.
この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行する時に,ライセンスが正常に見えていればOK.

クライアントからの Listen を許可するために Firewall に許可を出す.LinuxMint は ufw を使う.
% sudo ufw status
ここで 27009 が開いていない場合,ポートを開放する.
% sudo ufw allow 27009

ただ私の環境ではこれではだめで,思い切ってFirewallを切らないとだめだった.
% sudo ufw disable

クライアントは,環境変数 AGILEESOFT_LICENSE_FILEを指定してやればよい.
% export AGILEESOFT_LICENSE_FILE=<port>@<ipaddr> 
この状態で lmstat でライセンスが見えたら OK.
% lmstat -a 


2026年3月4日水曜日

Calibre をサポート外 OS で動かしたい (その2)

Calibre は OS ごとにバイナリが最適化されている(とういう事になっている)が,最適でない OS でも手持ちの Calibre を動かしたい.しかし,Calibre 実行時に calibre_vco で実行環境のチェックが入ってしまい,最適でないと
% calibrewb
Invalid operating system environment
と表示されて実行できない.

Calibre の実行環境は
${MGC_HOME}/pkgs/icv_calenv.aoi/pvt/calibre_host_info
でチェックされているので,RHEL7 系と仮装したいのであれば,本ファイルを編集し最終行 (test -n うんぬん) 直前に2行
OS_VENDOR=redhat
OS_MAJOR_REV=7
test -n ....
と書いてやればチェックをすり抜ける事ができる.

このサイトの人は RHEL 系でない Ubuntu で各種 CAD を動かそうとしているので勇者過ぎる.

そういえば昔似たようななことをしたなぁ,と思ったらしていた.
今回は AlmaLinux8 (RHEL8系) で aoi バイナリ (RHEL7) を動かそうとしているので,/etc/lsb-release 編集はできないなぁ.

2026年3月3日火曜日

IIC-OSIC環境を使ってLibreLaneを実行する:RISC-Vを動かしてみよう (2026年2月版)

前回まではチュートリアルだったので,今回は応用編として RISC-V コアを実装してみよう.使う題材は Harris&Harris の RISC-V コア,これは SystemVerilog で書かれているので,Verilog に実装しなおしてみる.

RISC-V コアの準備


主な変更点は,
・RISC-V コアとテストベンチを分離,命名ルールを simulate.sh に合わせる([回路].v,[回路]_tb.v)
・入出力ポートの定義を Verilog に変更
・logic を適切に wire に
・always_comb,always_ff を適切に変更
・一部 case 文を always から function に
・メモリのアラインメントが不親切だったので明示的にした.具体的には
rd = RAM[a[31:2]];
rd = RAM[{2'b0,a[31:2]}];
へ MSB側 をゼロ埋め.

はまったのはジャンプ命令が正しく動かなかったり,always 文で書いた組み合わせ回路のセンシティブビットの指定が不十分だったり,という点であった.Verilog 素人なので2~3日ぐらいかかった.こんなやつが授業で Verilog 教えるってマジ?

シミュレーションが正しく動くと,テストベンチでは DataAdr = 100 の時に WriteData が 25 であるか判定し,正しければ "Simulation succeeded",正しく終了しない場合は "Simulation failed" と表示される.

$ cd kvic_226007_ws25-main/verilog/tb
$ sh simulate.sh riscv_top


Yosysによる合成


src ディレクトリに移動し,yosys_stats.sh を実行してみる.
$ cd ../src
$ ln -s ../tb/riscv_top.txt # 命令メモリの中身をリンク
$ sh yosys_stats.sh riscv_top

実行するとログが出てくる.

 

まあまあな数のセルが使われている.一番大きいのはDFFベースのメモリだろう.

LibreLaneによる配置配線


実行前に変更すべきなのは config.json と pin_order.cfg.それぞれ config.json は次の通り,
 
 pin_order.cfg は次の通り変更する.
 
この地点で試しに実行してみたら,合成の地点で

 
と規定のサイズ (160 um x 100 um = 16000 um^2)を超えてしまい,

 
Utilizationでかすぎ,と失敗してしまう.なので config.json 中の面積を
0 0 160 100
から
0 0 320 300
として,合成時の Utilization が 40% 程度にしてみた.そのほかの制約は変えず,Sky130 対象に合成制約 20 ns = 50 MHz とし LibreLane を実行してみる.

$ ./run_librelane.sh

しばらく待つと処理が終わり,OpenROAD での配置配線結果が出力される.


レイアウトを見るとポートは East と West に固めたはずが他にも配置されてしまっている.DRC/LVS はパスしたが,Antenna 違反が発生していた.

 

使われたセルの統計データは次の通りであった.

 
DFF (dfxtp_1,dfrtp_1,dfrtp_2) が820個しかないのは,命令メモリが ROM になって最適化されてしまったためと思われる.おそらくゲートがVDD/VSS に接続されてしまったのでアンテナ違反が発生しているのだろう.このあたりはきちんとしたメモリがほしいものだ.

2026年3月2日月曜日

IIC-OSIC環境を使ってLibreLaneを実行する:チュートリアルを動かしてみよう (2026年2月版)

IIC-OSIC の環境を使って LibreLane による配置配線を試みる.

IIC-OSIC のインストール

基本的には土谷先生の方法でよい.

IIC-OSIC ツールの実行

基本的には公式ビデオを参考にすればよいのだが,いろいろ不完全なので補足を入れていく.

まずは Tutorial ファイルをダウンロードする.動画のスライド p17 のファイルをダウンロードする.


このとき Docker 内に最終的にファイルを置かないといけないので,Docker 内の Ubuntu でFireFox などでダウンロードするか,
C:\Users\[ユーザー名]\eda\designs
に Explorer からアクセスすると Ubuntu の起動時のディレクトリにアクセスできる.

Verilog シミュレーションと yosys による合成

verilog ディレクトリに移動する
$ cd /foss/designs/kvic_336007_ws25-main/verilog

シミュレーションは tb ディレクトリで実行する.
$ cd tb
$ sh ./simulate.sh counter

simulate.sh の引数である [回路名] に対し,verilog/src/[回路名].v,verilog/tb/[回路名]_tb.vを探し,verilator で LINT,iverilog で Verilog シミュレーション,波形ファイル生成([回路名]_tb.vcd),gtkwave で波形を表示できる.



3 bit カウンターとして動いている事を確認する.

次に合成する.src ディレクトリの yosys_stats.sh を実行する.
$ cd ../src
$ sh ./yosys_stats.sh counter

実行すると,yosys にょって
read_verilog 
proc (process をnetlistに変換)
opt (簡単な最適化)
flatten (階層展開)
techmap (テクノロジマッピング)
stat (回路の統計情報表示)
が実行される.ただしここでのテクノロジマッピングは特定のプロセスライブラリではなくyosys の持つ仮想ライブラリで合成されるようだ.

LibreLaneによる配置配線

次に LibreLane で配置配線を行う.
$ cd ../../librelane

run_librelane.sh に実行権限を与えて実行してみる.
$ chmod +x run_librelane.sh
$ ./run_librelane.sh

run_librelane.sh では,テクノロジライブラリを指定 (sky130A),LibreLane による実行,LibreLane の実行結果を OpenROAD で開く.


LibreLane の全体設定ファイルは config.json で,回路名,Verilog 記述の場所,シリコン面積,SDC などの設定,IO ピンの順番などを指定できる.
(逆に言うと,この程度しかカスタマイズの余地はないのか)

実行結果は runs/RUN_[日付]_[時間]/ 内部に処理ステップに沿って以下のように格納される.
 

最終的に出力されるものは final に格納される.
例えば最終的なGDSを見たければ runs/RUN_[日付]_[時間]/final/klayout_gds にアクセスするとよい.
$ klayout runs/RUN_2026-01-30_08-00-21/final/klayout_gds/tt_um_counter_top.klayout.gds


回路のPPA,QoR,DRC/LVSなどの統計は  runs/RUN_[日付]_[時間]/final/metrics.csv に書かれている.
$ cat runs/RUN_2026-01-30_08-00-21/final/metrics.csv 

 

2026年1月30日金曜日

卒論前に物が壊れるジンクス

卒論のシーズンは何かとものが壊れがちで一般的には学生のパソコンが壊れるのだが,今回新たに「教員室の蛍光灯がきちんと点かなくなる」事態が発生した.しかも事務室の閉室後の金曜夕方に,である.


写真だとよくわからないけれど,実際は暗くてとても作業できない.卒論とはかくも過酷な挑戦なわけである.
(えーん暗いよー)