fumiLab

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

Vivado HLSリビジョンオーバーフロー問題のパッチの当て方

f:id:fumimaker:20220109010135p:plain

2022年になったことでuint32_tからリビジョンがオーバーフローし、論理合成ができないバグが発生していました。

パッチが公開されました。

https://support.xilinx.com/s/article/76960?language=ja

症状

オーバーフローバグがあるときこのようなエラーが発生します。例えばUltra96 MPSoCでAXI GPIOをつなげただけの単純なデザインではこのようなエラーがでます。HLSを使うデザインは全滅します。

f:id:fumimaker:20220109005849p:plain
TPGやDemosaicなどが失敗している

Scanning sources...
Finished scanning sources
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1704] No user IP repositories specified
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/tools/Xilinx/Vivado/2019.2/data/ip'.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_demosaic_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_demosaic_0_0/design_1_v_demosaic_0_0.dcp'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_demosaic_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_demosaic_0_0/design_1_v_demosaic_0_0_stub.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_demosaic_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_demosaic_0_0/design_1_v_demosaic_0_0_stub.vhdl'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_demosaic_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_demosaic_0_0/design_1_v_demosaic_0_0_sim_netlist.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_demosaic_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_demosaic_0_0/design_1_v_demosaic_0_0_sim_netlist.vhdl'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_gamma_lut_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_gamma_lut_0_0/design_1_v_gamma_lut_0_0.dcp'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_gamma_lut_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_gamma_lut_0_0/design_1_v_gamma_lut_0_0_stub.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_gamma_lut_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_gamma_lut_0_0/design_1_v_gamma_lut_0_0_stub.vhdl'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_gamma_lut_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_gamma_lut_0_0/design_1_v_gamma_lut_0_0_sim_netlist.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_gamma_lut_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_gamma_lut_0_0/design_1_v_gamma_lut_0_0_sim_netlist.vhdl'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_tpg_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_tpg_0_0/design_1_v_tpg_0_0.dcp'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_tpg_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_tpg_0_0/design_1_v_tpg_0_0_stub.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_tpg_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_tpg_0_0/design_1_v_tpg_0_0_stub.vhdl'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_tpg_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_tpg_0_0/design_1_v_tpg_0_0_sim_netlist.v'. Please regenerate to continue.
WARNING: [IP_Flow 19-3664] IP 'design_1_v_tpg_0_0' generated file not found '/home/fumi/fixstars/fixstars.srcs/sources_1/bd/design_1/ip/design_1_v_tpg_0_0/design_1_v_tpg_0_0_sim_netlist.vhdl'. Please regenerate to continue.
open_project: Time (s): cpu = 00:00:08 ; elapsed = 00:00:10 . Memory (MB): peak = 7478.383 ; gain = 0.000 ; free physical = 24952 ; free virtual = 30167

ダウンロードして展開

ここから

https://support.xilinx.com/s/article/76960?language=ja

y2k22_patchをダウンロードして展開します。展開したらy2k22_patchというフォルダをWindowsならC:/Xilinx, Linuxなら/opt/Xilinxなどに持っていきます。

つまり、WindowsならC:\Xilinx\y2k22_patchのようになるはず。

パッチを実行(Vivado2019以降の場合)

バージョンにもよりますが、Vivado2019~2021まではこのようにする。

Windowsの場合

コマンドプロンプトを立ち上げてcd C:/Xilinxで移動。

Vivado\2019.2\tps\win64\python-2.7.5\python.exe y2k22_patch\patch.py を実行。ここでは2019.2としているが、2019-2021の自分の環境に当てはめて実行する。MINGGWやGitbashなど使っている場合は正スラッシュにする。

詳細はreadmeに書いてあるので参照。

Linuxの場合

同様にcd /opt/xilinx

export LD_LIBRARY_PATH=$PWD/Vivado/2019.2/tps/lnx64/python-2.7.5/lib/

Vivado/2019.2/tps/lnx64/python-2.7.5/bin/python y2k22_patch/patch.py

同様に自分の環境に当てはめること。

~Vivado2018の場合

PythonがVivadoに含まれていないので、自分でPythonをインストールする必要がある。Pythonは2.7.5 or laterが必要とのこと。

Windowsならcd C:/XilinxLinuxならcd /opt/xilinxして移動。

python y2k22_patch/patch.pyを実行。

実行結果(Windows)

fumi@fumi-ark MINGW64 /c/Xilinx
$ Vivado/2019.2/tps/win64/python-2.7.5/python.exe y2k22_patch/patch.py
[2022-01-09] INFO: This script (version: 1.2) patches Xilinx Tools for HLS Y2k22 bug for the following release: 
                2014.*, 2015.*, 2016.*, 2017.*, 2018.*, 2019.*, 2020.* and 2021.*
[2022-01-09] UPDATE: C:\Xilinx\Vitis\2019.2\common\scripts
[2022-01-09] COPY: C:\Xilinx/y2k22_patch/automg_patch_20220104.tcl  to C:\Xilinx\Vitis\2019.2\common\scripts\automg_patch_20220104.tcl
[2022-01-09] UPDATE: C:\Xilinx\Vivado\2019.2\common\scripts
[2022-01-09] COPY: C:\Xilinx/y2k22_patch/automg_patch_20220104.tcl  to C:\Xilinx\Vivado\2019.2\common\scripts\automg_patch_20220104.tcl

正常に終わったようだ。

Logが出てきたので示す。(Vivado2019.2)

[2022-01-09] INFO: This script (version: 1.2) patches Xilinx Tools for HLS Y2k22 bug for the following release: 
        2014.*, 2015.*, 2016.*, 2017.*, 2018.*, 2019.*, 2020.* and 2021.*
[2022-01-09] UPDATE: C:\Xilinx\Vitis\2019.2\common\scripts
[2022-01-09] COPY: C:\Xilinx/y2k22_patch/automg_patch_20220104.tcl  to C:\Xilinx\Vitis\2019.2\common\scripts\automg_patch_20220104.tcl 
[2022-01-09] UPDATE: C:\Xilinx\Vivado\2019.2\common\scripts
[2022-01-09] COPY: C:\Xilinx/y2k22_patch/automg_patch_20220104.tcl  to C:\Xilinx\Vivado\2019.2\common\scripts\automg_patch_20220104.tcl 

実行結果

エラーなく成功しました(またinplementやってるけど)。良かった。これで日常の開発ができますね。

f:id:fumimaker:20220109010006p:plain
エラーなし