Vivado simulator fix on Fedora 28

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]

Screenshot to show simulation verbosity (-v 1) and turn off multithreading (-mt off)

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 :)

Installing MCUxpresso Config Tools on Fedora

MCUxpresso Config Tools package comes with its installer for Ubuntu (14,16) in .deb.bin format, a self-extracting command-line installer. In order...

Previous
Tweaks to Fedora 28

Upgrading to Fedora 28 was quite a smooth experience, on all 3 of my computers, two upgraded from Fedora 27...

Next