Vivado simulator fix on Fedora 28
May 26, 2018
Xilinx Vivado HLx is not currently supported on the latest version of Fedora (28) but since living on the edge entails some suffering, I decided to stick with 28 and plough my way through the challenge. I installed Vivado 2018.1 on Fedora 28, and found some issues during installation, detailed on this post of mine in Xilinx’ forums: Installing Vivado 2018.1 on Fedora 28
After the installation went through with the above fixes, the RTL simulation still crashed when launched. The error shown was not very revealing…
ERROR: [XSIM 43-3409] Failed to compile generated C file xsim.dir/system_tb_behav/obj/xsim_3.c.
ERROR: [XSIM 43-3915] Encountered a fatal error. Cannot continue. Exiting...
run_program: Time (s): cpu = 00:00:08 ; elapsed = 00:00:08 . Memory (MB): peak = 7517.402 ; gain = 0.000 ; free physical = 42243 ; free virtual = 79865
INFO: [USF-XSim-69] 'elaborate' step finished in '8' seconds
INFO: [USF-XSim-99] Step results log file:'/home/pcarr/Work/tux/vivado-test1/project_2/project_2.sim/sim_1/behav/xsim/elaborate.log'
ERROR: [USF-XSim-62] 'elaborate' step failed with error(s). Please check the Tcl console output or '/home/pcarr/Work/tux/vivado-test1/project_2/project_2.sim/sim_1/behav/xsim/elaborate.log' file for more information.
ERROR: [Vivado 12-4473] Detected error while running simulation. Please correct the issue and retry this operation.
launch_simulation: Time (s): cpu = 00:00:11 ; elapsed = 00:00:10 . Memory (MB): peak = 7517.402 ; gain = 4.008 ; free physical = 42222 ; free virtual = 79844
ERROR: [Common 17-39] 'launch_simulation' failed due to earlier errors.
The file elaborate.log
doesn’t show much information, saying that there was a problem compiling a file, though the compiler seems to be clang and using gcc as linker.
/opt/Xilinx/Vivado/2018.1/data/../tps/llvm/3.1/lnx64.o/bin/clang -fPIC -c -std=gnu89 -nobuiltininc -nostdinc++ -w -Wl,--unresolved-symbols=ignore-in-object-files -fbracket-depth=1048576 -I/opt/Xilinx/Vivado/2018.1/data/../tps/llvm/3.1/lnx64.o/bin/../lib/clang/3.1/include -fPIC -m64 -I"/opt/Xilinx/Vivado/2018.1/data/xsim/include" "xsim.dir/system_tb_behav/obj/xsim_3.c" -O0 -sim -o "xsim.dir/system_tb_behav/obj/xsim_3.lnx64.o" -DXILINX_SIMULATOR
Linking with command:
/usr/bin/gcc -Wa,-W -O -fPIC -m64 -Wl,--unresolved-symbols=ignore-all -o "xsim.dir/system_tb_behav/xsimk" "xsim.dir/system_tb_behav/obj/xsim_0.lnx64.o" "xsim.dir/system_tb_behav/obj/xsim_1.lnx64.o" "xsim.dir/system_tb_behav/obj/xsim_2.lnx64.o" "xsim.dir/system_tb_behav/obj/xsim_3.lnx64.o" "/opt/Xilinx/Vivado/2018.1/lib/lnx64.o/librdi_simulator_kernel.so" "/opt/Xilinx/Vivado/2018.1/lib/lnx64.o/librdi_simbridge_kernel.so"
Let’s try to get more verbosity to find out what’s happening, using the Settings/Simulation dialog, or optionally, these Tcl commands:
set_property -name {xsim.elaborate.mt_level} -value {off} -objects [get_filesets sim_1]
set_property -name {xsim.elaborate.xelab.more_options} -value {-v 1} -objects [get_filesets sim_1]
Then re-launching the simulation, we get more insight into the problem:
/opt/Xilinx/Vivado/2018.1/data/../tps/llvm/3.1/lnx64.o/bin/clang -fPIC -c -std=gnu89 -nobuiltininc -nostdinc++ -w -Wl,--unresolved-symbols=ignore-in-object-files -fbracket-depth=1048576 -I/opt/Xilinx/Vivado/2018.1/data/../tps/llvm/3.1/lnx64.o/bin/../lib/clang/3.1/include -fPIC -m64 -I"/opt/Xilinx/Vivado/2018.1/data/xsim/include" "xsim.dir/system_tb_behav/obj/xsim_3.c" -O0 -sim -o "xsim.dir/system_tb_behav/obj/xsim_3.lnx64.o" -DXILINX_SIMULATOR
/opt/Xilinx/Vivado/2018.1/data/../tps/llvm/3.1/lnx64.o/bin/clang: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
ERROR: [XSIM 43-3409] Failed to compile generated C file xsim.dir/system_tb_behav/obj/xsim_3.c.
ERROR: [XSIM 43-3915] Encountered a fatal error. Cannot continue. Exiting...
run_program: Time (s): cpu = 00:00:09 ; elapsed = 00:00:09 . Memory (MB): peak = 6832.422 ; gain = 0.000 ; free physical = 43364 ; free virtual = 80995
INFO: [USF-XSim-69] 'elaborate' step finished in '9' seconds
INFO: [USF-XSim-99] Step results log file:'/home/pcarr/Work/tux/vivado-test1/project_2/project_2.sim/sim_1/behav/xsim/elaborate.log'
ERROR: [USF-XSim-62] 'elaborate' step failed with error(s). Please check the Tcl console output or '/home/pcarr/Work/tux/vivado-test1/project_2/project_2.sim/sim_1/behav/xsim/elaborate.log' file for more information.
ERROR: [Vivado 12-4473] Detected error while running simulation. Please correct the issue and retry this operation.
launch_simulation: Time (s): cpu = 00:00:13 ; elapsed = 00:00:11 . Memory (MB): peak = 6832.422 ; gain = 0.000 ; free physical = 43343 ; free virtual = 80974
ERROR: [Common 17-39] 'launch_simulation' failed due to earlier errors.
Aha, there’s a missing library libncurses.so.5
as seen in the error message above. Let’s find out where this library is on the filesystem:
$ locate libncurses.so.5
/opt/Xilinx/Vivado/2018.1/lib/lnx64.o/SuSE/libncurses.so.5
/opt/Xilinx/Vivado/2018.1/lnx64/tools/gdb_v7_2/libncurses.so.5
/usr/lib64/libncurses.so.6
/usr/lib64/libncurses.so.6.1
/usr/lib64/libncursesw.so.6
/usr/lib64/libncursesw.so.6.1
/usr/lib64/vlc/plugins/gui/libncurses_plugin.so
With some luck, this soft link would help trick the compiler:
$ sudo ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
And it did! Now Vivado simulator works normally :)