macOS Ventura supports running x86-64 binaries on Linux VMs. However, even with Rosetta installing Vivado is not a simple one-click process. This guide covers some workarounds and tricks to get Vivado up and running on ARM64 Mac.
- Make sure you're running macOS Ventura or higher.
- Install UTM and create a Debian VM with Rosetta according to their guide.
- Other distributions should also work, but commands will be different.
- Install x86-64 version of java and
libtinfo
. Vivado depends on them.
$ sudo apt install default-jdk:amd64 libtinfo5:amd64
- Download a copy of self-extracting web installer from Xilinx website.
- Run the installer with
--confirm
flag.
$ /path/to/vivado/installer --confirm
- The installer will print something like
About to extract 40 KB in /tmp/selfgzXXXX ... Proceed ?
. Check the path/tmp/selfgzXXXX
, and proceed. - After extracting, the installer will ask about running
./xsetup
. Before pressingy
, open/tmp/selfgzXXXX/xsetup
in your editor and delete architecture checking code which looks like this:
# ERROR out if this installation is running on 32 bit OS
# and does not support 32 bit installation
if [ "$(uname -m)" != "x86_64" ]; then
...
fi
- Save the file and press
y
in the installer. Continue with installation as usual. - Patch the
loader
. Open/path/to/xilinx/Vivado/2022.2/bin/loader
in your editor, where/path/to/xilinx
is the path to Xilinx software suite installation. Remove architecture checking code as you did on step 6.
The macOS 15 beta seems to address Rosetta emulation issues, as I have not encountered these VMAllocationTracker errors anymore since updating to it. Accordingly, I have updated my scripts to include support for the newest Vivado version.
Docker, like UTM, runs an arm64 Linux kernel, but the entire userspace binaries in Docker are amd64, as well as an adjustment to make
uname
output the x86_64 architecture even though that is not what the kernel is running as.