Published on 18 August 2022 by Andrew Owen (4 minutes)
Back in March 2022, I did a write-up of how to run Xilinx Vivado on an M1 Mac to generate cores for the Artix-7 series of FPGAs (as used on the Mega 65). The easiest solution is to run the Intel binaries on ARM Windows under Parallels Desktop. But it’s also possible to use the Linux binaries with UTM.
UTM is great for running other ARM OSes (like Ubuntu). But emulating Intel 64-bit instructions is slow. However, in the forthcoming macOS 13, third-party apps like UTM will be able to leverage Rosetta’s just in time (JIT) translation for Intel 64-bit instructions. UTM should get a lot faster.
So I decided to revisit the problem of running Xilinx’s older ISE tool to generate cores for the Spartan-6 (as used on the ZX-Uno). Originally published in 1995, the software hasn’t been updated since 2013. Even on Windows 10, Xilnix provides an emulated Linux environment to run the software.
Initially, I’d tried to get it working on Debian 11, but that suffered frequent crashes. The trick is that you need something old enough to work reliably with ISE, but new enough to support the UTM guest additions (for shared folders). ZX-Uno enthusiast Microjack informed me that he had ISE working reliably on Linux Mint 20.1 Cinnamon.
But Cinnamon relies on having a GPU to do the heavy lifting in the GUI. It was unusably slow. Fortunately, there is an Xfce distro, which has much lower hardware demands. After some messing about with various settings, to my surprise it worked, and I was able to generate a binary that behave as expected on real hardware. Here’s how to do it.
sudo apt install spice-vdagent spice-webdavd libncurses5
. Now restart the virtual machine.Xilinx_ISE_DS_Lin_14.7_1015_1.tar
from the Mac to your Documents folder in Linux. Then extract the contents.chmod +x ./xsetup
, then enter sudo ./xsetup
and follow the on-screen instructions. Select the licensing check boxes and ensure you choose the WebPack ISE version. For everything else, you can use the defaults./opt/Xilinx/14.7/ISE_DS/
. Enter sudo chmod +x settings64.sh
.To run the software, navigate to /opt/Xilinx/14.7/ISE_DS/
and enter:
source settings64.sh`
./settings64.sh`
ise`
You’ll probably want to turn that into a script.
The first time you run the software, you’ll be prompted to provide a license. I found the easiest way to do this was to log in to my Xilinx account on the Mac, download a free WebPack ISE license, and copy it across to the Linux VM.
When you’ve verified that the software has installed correctly, you can delete the Xilinx_ISE_DS_Lin_14.7_1015_1
folder and its contents.
When you’re done, you can shut down the Linux VM. If you have at least 40 GB of free space on your Mac hard disk, you can reduce the size of your VM image. In UTM, go to Settings > Drives and select the large IDE Drive (labeled disk-0.qcow2). Then click Reclaim space and then Reclaim and Compress. It will take a while, but you should get about 20 GB of space back.
Occasionally, the shared folder stops working for no apparent reason. I’ve found the best way to fix this is to shut down the VM, remove the Shared Directory in the settings by clicking Clear, and then add it back. If that doesn’t work, you may have to restart macOS. But if that still doesn’t work, there is another option:
sudo apt-get install davfs2
sudo mkdir /mnt/dav
sudo mount -t davfs -o noexec https://nextcloud.example.com/remote.php/webdav/ /mnt/dav/
When prompted for a username and password, just press Enter.
And that’s it. It’s a bit slow at the moment, but when I get macOS 13 I’ll update this article if I notice any major speed improvement under Rosetta.