fumiLab

fumimakerが作ったもの、やったことについて書いていきます。

Vivado Vitis Floatingライセンスサーバーを使う & Systemdで自動起動できるようにする

VivadoのFloatingライセンスをゲットしたので使い方調べるがてらメモを残します。

Floatingライセンスの使い方

Floatingライセンスをどうやってやるのかよくわからない

Xilinx Customer Community

https://docs.xilinx.com/v/u/2020.1-日本語/ug973-vivado-release-notes-install-license

1 ライセンスファイルを出力

ライセンスサーバに使うライセンスファイルをのMACアドレスなどで.licを出力する。Xilinxのライセンスセンターにアクセスして出力。 https://japan.xilinx.com/support/licensing_solution_center.html これの購入済みのライセンスについてというところをクリックして進む

2 ライセンスサーバを起動

ライセンスサーバはVivadoをダウンロードするページにある。ずっと起動することになるのでLinuxサーバとかでやった方がいい。 https://japan.xilinx.com/support/download.html 下の方にライセンス管理ツールがある。

Windowsで起動する場合: 

Server Tool directory>\win64.o\lmgrd -c <path_to_license>\<license filename>.lic – l <path_to_license>\<log filename>.log

これをPowershellなどで実行する。win64.o/lmgrdそのものが実行ファイル。

3 ライセンスマネージャーでこのように入力

localhostじゃない場合はサーバーのAddressを入力する。ポートは通常2100。

4 すると多分Statusを見ると各種通ってるはず

5 謎

これまで中途半端に合成してたやつを途中から合成しようとすると、キャッシュの問題かわからないけど再起動しても関係なく失敗してしまうので、デザインを一度消してから再度合成すると通るようになった。謎です。

21:20:54 (xilinxd) UNSUPPORTED: "xczu9eg" (PORT_AT_HOST_PLUS ) fumi-kbic@fumi-kbic (No such feature exists. (-5,346))と出ているのはデバッグログで気にしなくて良いらしい。

https://support.xilinx.com/s/question/0D52E00006hpn9kSAA/xilinxd-unsupported-internalbitstream-portathostplus-no-such-feature-exists-5346?language=ja

Linux

Linuxで同様にやってみた

Win同様にライセンス管理ツールをDL。

加えて、sudo apt install lsb-coreをやると動くようになた。

実行するとき:/home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic -l /home/fumi/lin_flm_v11.17.2.0/lnx64.o/log2.log

lmgrdとライセンスファイルとログの位置は適宜変更。

毎回起動するの無理すぎるのでsystemctlでnasVM起動時に自動起動してくれるようにした。

[Unit]
Description=Xilinx License Server

[Service]
Type=simple
ExecStart=/home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic -l /home/fumi/lin_flm_v11.17.2.0/lnx64.o/log2.log

[Install]
WantedBy=multi-user.target

ホームディレクトリにライセンスサーバがあるとして、このようにする。systemctlでは~を使って省略することはできないらしいので、絶対パスで書く必要があることに注意。

Execstartにコマンドを直書きすることでOKらしい。

これを/etc/systemd/systemに設置する。

$ sudo cp xilinx_lisence.service /etc/systemd/system

fumi@synology-vm1:~$ sudo systemctl daemon-reload
fumi@synology-vm1:~$ sudo systemctl enable xilinx_lisence.service
Created symlink /etc/systemd/system/multi-user.target.wants/xilinx_lisence.service → /etc/systemd/system/xilinx_lisence.service.
fumi@synology-vm1:~$ sudo systemctl status xilinx_lisence.service
○ xilinx_lisence.service - Xilinx License Server
     Loaded: loaded (/etc/systemd/system/xilinx_lisence.service; enabled; vendor preset: enabled)
     Active: inactive (dead)

おりますね。

これをStart。

fumi@synology-vm1:~$ sudo systemctl start xilinx_lisence.service
fumi@synology-vm1:~$ sudo systemctl status xilinx_lisence.service
○ xilinx_lisence.service - Xilinx License Server
     Loaded: loaded (/etc/systemd/system/xilinx_lisence.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2024-01-30 13:01:36 JST; 2s ago
    Process: 3748 ExecStart=/home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic -l /home/fumi/lin_flm_v11.17.2.0/lnx64.o/log2.log (code=exited, status=0/SUCCESS)
   Main PID: 3748 (code=exited, status=0/SUCCESS)
        CPU: 7ms

 1月 30 13:01:36 synology-vm1 systemd[1]: Started Xilinx License Server.
 1月 30 13:01:36 synology-vm1 systemd[1]: xilinx_lisence.service: Deactivated successfully.

あれ?実行中になってる?

調べてみると、type=simpleとしていると、フォアグラウンドで実行していることが前提となってしまい動かないらしい?(詳しくわかっていないのですがプログラムが終了するとsystemdのタスクが終了したとみなす?なぜlmgrdが終了してしまうのか…)

なのでtype=forkingとします。また、起動した時にネットワークがないとエラーで止まるのでネットワークが起動したら実行に依存関係を設定します。

[Unit]
Description=Xilinx License Server
After=network.target
Wants=network.target

[Service]
Type=forking
ExecStart=/home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic -l /home/fumi/lin_flm_v11.17.2.0/lnx64.o/log2.log

[Install]
WantedBy=multi-user.target

これを同様にreloadして実行。すでにEnableしてるのでEnableは不要。

sudo systemctl daemon-reload

sudo systemctl start xilinx_lisence.service

fumi@synology-vm1:~$ sudo systemctl status  xilinx_lisence.service 
● xilinx_lisence.service - Xilinx License Server
     Loaded: loaded (/etc/systemd/system/xilinx_lisence.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-01-30 14:07:09 JST; 18s ago
    Process: 7568 ExecStart=/home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.li>
   Main PID: 7569 (lmgrd)
      Tasks: 7 (limit: 4598)
     Memory: 1.9M
        CPU: 24ms
     CGroup: /system.slice/xilinx_lisence.service
             ├─7569 /home/fumi/lin_flm_v11.17.2.0/lnx64.o/lmgrd -c /home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic -l /ho>
             └─7571 xilinxd -T synology-vm1 11.17 7 -c :/home/fumi/lin_flm_v11.17.2.0/lnx64.o/Xilinx-linux.lic: -srv NpnJRECsZhD>

 1月 30 14:07:09 synology-vm1 systemd[1]: Starting Xilinx License Server...
 1月 30 14:07:09 synology-vm1 systemd[1]: Started Xilinx License Server.

あとで気づいたけどLICENCEです。lisenceではありません…(恥ずかしい)