前言

最近计组实验需要频繁使用vivado, 但是Xilinx没有开发macOS版本的, 一般解决方案是使用虚拟机或Bootcamp, 但过于臃肿, 我们可以借助Docker与Xquartz优雅地在macOS上搭建环境。

Docker

Docker想必不用做过多介绍,可谓是虚拟机的一个可行、经济且高效的替代方案,具体可以前往Docker官网了解。

Xquartz

Xquartz是mac上的X11.app,利用其X11 Forwarding技术,将宿主机(也就是我们的mac)作为X server,将docker容器中的GUI程序(Vivado)作为X client访问X server,以实现在macOS上操作相应GUI程序。

这个过程有点类似于VNC,可以理解成单个GUI的VNC。

Vivado

不想过多介绍,只想说Fxxk you, Xilinx

准备工作

Xquartz

使用Homebrew包管理器安装,打开终端输入:

1
brew install --cask xquartz

完成后重启电脑,然后打开Xquartz(如找不到直接Spotlight搜索就行),按cmd+,进入偏好设置,在安全性中将第二个选项选中,即允许来自网络的连接。

Vivado

我们需要下载完整的Linux Vivado安装包,可以前往Xilinx官网下载。

建议下载到~/Downloads/路径下,这样之后运行docker时可以直接使用本文提供的指令

Docker

可以使用Homebrew包管理器安装Docker

1
brew install docker

或者直接安装有图形化界面的Docker Desktop,个人推荐这一种,毕竟有图形界面为什么不用呢

访问Docker官网下载安装即可

实例化Docker容器

首先拉取一下Ubuntu的镜像,当然你也可以使用其他Vivado支持的Linux发行版

1
docker pull ubuntu

然后我们需要查看一下本机的IP地址,打开设置->共享->文件共享,可以看到小字中有smb://xxx.xxx.xxx.xxx格式的地址,将smb://后面的部分记录一下

完成后我们实例化这个镜像,创建一个文件夹存放下载好的安装包,然后挂载到容器中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# macOS

# 创建挂载文件夹并解压安装包
cd ~
mkdir vivado-dir
mv ~/Downloads/Xilinx_Vivado_SDK_2018.3_1207_2324.tar ~/vivado-dir/
cd vivado-dir
tar -zxvf ./Xilinx_Vivado_SDK_2018.3_1207_2324.tar
rm -rf ./Xilinx_Vivado_SDK_2018.3_1207_2324.tar

# 实例化docker镜像
docker run --name vivado \ # 容器名称
--mount source=~/vivado-dir,target=/vivado \ # 挂载文件夹到容器的/vivado目录下
-e DISPLAY=xxx.xxx.xxx.xxx:0 \ # 将xxx.xxx.xxx.xxx替换成你刚刚得到的IP地址
-i -t ubuntu bash

接下来运行docker容器

1
docker exec vivado /bin/bash

配置X11环境

进入容器后安装一下依赖,如下载慢请自行使用网络代理或换源

1
apt -y --no-install-recommends install ca-certificates curl sudo xorg dbus dbus-x11 ubuntu-gnome-default-settings gtk2-engines lxappearance

安装Vivado

以上工作都完成后,我们进入刚刚挂载的目录,运行Vivado安装程序,准确无误的话会在mac中显示出安装程序的窗口

1
2
3
# docker
cd /vivado/Xilinx_Vivado_SDK_2018.3_1207_2324
sudo ./xsetup

显示出图形界面后安装即可

安装程序默认会将vivado安装在/tools/Xilinx目录下,运行完成后,可以将Vivado添加到环境变量。

运行Vivado

启动的一般步骤为,运行docker容器

1
docker exec vivado /bin/bash

运行Vivado

1
vivado

总结

至此安装已全部完成,你可以扔掉臃肿的虚拟机,优雅地在macOS中使用vivado。

QQ20221013-151424