Xilinx - hpaluch/hpaluch.github.io GitHub Wiki
Xilinx notes
Currently discussed 2 boards:
- AC701 (Xilinx/AMD)
- Basys3 (Digilent)
AC701 board (Artix-7)
AC701 board (Artix-7 board with PCIe, DDDR RAM, etc) is available on:
- https://www.xilinx.com/products/boards-and-kits/ek-a7-ac701-g.html
- (no, I don't own it - it costs around $1'600, but have one at work)
- uses Artix-7
XC7A200T-2FBG676C
(project partxc7a200tfbg676-2
)
Vivado 2015.1 problems:
- Vivado 2015.1 is last version for which there are sample projects available from above URL (you can use even latest Vivado 2024.1 Standard with AC701, but these examples are not guaranteed to work there)
- it requires CentOS 7.0, used https://vault.centos.org/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-Everything.iso
- but when you run it it crashes with SIGSEGV
- after 3 days I found that it is crashing inside
libxcb-glx.so.0
(OpenGL extension to XCB protocol library).libxcb
is so called "modernized lightweight X11 client library" from https://xcb.freedesktop.org/ - so now it is clear why it crashes. - I resolved the problem in 2 steps:
- created fake invalid
libxcb-glx.so.0
with (so dlopen will use it and stops looking in other places):mkdir -p ~/fake-lib touch ~/fake-lib/libxcb-glx.so.0
- created wrapper script
~/bin/vivado-wrapper
with contents:#!/bin/bash set -xeuo pipefail export LD_LIBRARY_PATH=$HOME/fake-lib /opt/Xilinx/Vivado/2015.1/bin/vivado "$@" exit 0
- this resolved my problem
- WARNING! Do not remove or obscure
libxcb-glx.so.0
! GNOME and all its applications depends on it! Doing that will completely screw your GUI! And GNOME is only GUI available on plain CentOS (without EPEL).
Vivado 2024.1 problems:
- also trying Vivado 2024.1 with AC701
- I used recommended Alma Linux 8.7 (see ug973-vivado-release-notes-install-license-en-us-2024.1.pdf)
- ISO from https://repo.almalinux.org/vault/8.7/isos/x86_64/AlmaLinux-8.7-x86_64-dvd.iso
- I'm trying to avoid RHEL/Alma 9, because it requires so called
x86-64-v2
CPU architecture, which is not available on older CPUs
- but on startup there was error:
$ /opt/Xilinx/Vivado/2024.1/bin/vivado application-specific initialization failed: \ couldn't load file "librdi_commontasks.so": libtinfo.so.5: cannot open shared object file: No such file or directory
- when I tried
dnf provides libtinfo.so.5
it found 32-bit version only, so I have to:curl -fLO https://repo.almalinux.org/vault/8.7/BaseOS/x86_64/os/Packages/ncurses-compat-libs-6.1-9.20180224.el8.x86_64.rpm sudo rpm -ivh ncurses-compat-libs-6.1-9.20180224.el8.x86_64.rpm
- note: later I found it on mounted DVD at:
/run/media/USERNAME/AlmaLinux-8-7-x86_64-dvd/BaseOS/Packages/ncurses-compat-libs-6.1-9.20180224.el8.x86_64.rpm
- I don't know why dnf command did not show it...
- note: later I found it on mounted DVD at:
- it fixed my problem.
- NOTE: I was unable to find
installLibs.sh
script (mentioned in docs) - not sure, what I'm doing wrong.
Basys 3 (Artix-7)
Just starting with Digilent Basys 3 board:
- https://digilent.com/reference/programmable-logic/basys-3/start
- uses Artix-7
XC7A35T-1CPG236C
(project partxc7a35tcpg236-1
) - one reason I choose it is that at work I use AC701 that has same series FPGA (Artix-7) - so I can utilize my knowledge on both cards
- there is very good Quick start in Verilog:
- https://digilent.com/reference/programmable-logic/guides/getting-started-with-vivado
- (you don't need to install Vitis if you plan to use HDL only - Verilog or VHDL)
Found that 2 Digilent Basys3 projects have nice examples of:
- convert binary to decimal (requires integer division by 10) - advanced topic!
- minimalist yet very efficient UART TX (transmit only) at 9600 Baud:
- https://github.com/Digilent/Basys-3-Keyboard/blob/master/src/hdl/uart_tx.v
- how you know transmit rate ?
clk
is 100 MHz (single ended LVCMOS33 on-board clock)parameter CD_MAX=10416
does the trick: 100'000'000 / 10'416 = 9'600.62 (around 9600 Bd)
Resources
- https://www.xilinx.com/products/boards-and-kits/ek-a7-ac701-g.html
- https://adaptivesupport.amd.com/s/question/0D52E00006hpQ5CSAU/corrected-installlibssh-script-for-vitis?language=en_US
- https://adaptivesupport.amd.com/s/question/0D52E00006hpJIFSA2/libtinfoso6-instead-of-libtinfoso5?language=en_US
- there is mentioned simple trick to trace vivado startup with
export RDI_VERBOSE=True
- there is mentioned simple trick to trace vivado startup with