Giter VIP home page Giter VIP logo

xilinx's Introduction

XILINX SOFTWARE CATALOG IN A CONTAINER

📝|ABSTRACT

This is a tool for installing Xilinx software products in a containerised and potentially emulated environment on everything; among other things, Apple Macs (Arm®-based Apple® silicon & Intel®). The tool and the project as a whole are not associated with Xilinx®.

FEATURES

  • universal containerised installation
  • processor architecture agnostic
  • operating system agnostic
  • rosetta acceleration where applicable
  • gui compatibility
  • networking
  • usb passthrough
  • shared directory with host machine
  • declarativity
  • reproducibility

🌱|INSTALLATION

🚨|GENERAL PREREQUISITES

Posses an AMD Xilinx account; accounts can be created on the official AMD website.

⚡|AUTOMATIC; RECOMMENDED ROUTE

N.B.: The automatic installation script uses an automated adaption of the nix nix installation method outlined below to achieve maximum reproducibility in a declarative fashion.

  • Dowload the script run.sh
  • Navigate to Downloads directory; if the file was stored in a different path, update accordingly.
cd Downloads
  • Make the script executable:
sudo chmod +x script.sh
  • Run the script
./script.sh
🔩|MANUAL
🔩|MANUAL | NIX
curl -L https://nixos.org/nix/install | sh

N.B.: For future reference; To upgrade the local nix installation run the following if need be:

sudo nix-env --install --file '<nixpkgs>' --attr nix -I nixpkgs=channel:nixpkgs-unstable ;
sudo launchctl remove org.nixos.nix-daemon ;
sudo launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist

N.B.: To uninstall Nix follow the instructions provided with the manual.

  • Enable Nix's Experimental Features; specifically, nix command and flake support.

N.B.: This step is optional but does provide some quality of life improvements.

cat <<EOF > ~/.config/nix/nix.conf
experimental-features = nix-command flakes
EOF
🔩|MANUAL | NIX | SHELL
🔩|MANUAL | NIX | FLAKE
🔩|MANUAL | HOMEBREW
🔩|MANUAL | SOURCE
🔩|MANUAL | GUI | DOCKER DESKTOP - Install XQuartz - Install [Docker®](https://www.docker.com/products/docker-desktop/s) You first need to install [XQuartz](https://www.xquartz.org/) and [Docker®](https://www.docker.com/products/docker-desktop/) (make sure to choose "Apple Chip" instead of "Intel Chip"). Then you need to * open Docker, * go to settings, * check "Use Virtualization Framework", * uncheck "Open Docker Dashboard at startup", * go to "Resources" * increase Swap to 2GB (if synthesis fails, you may need to increase Memory or Swap) * go to "Features in Development" and * check "Use Rosetta for x86/amd64 emulation on Apple Silicon".

N.B.: These steps are mandatory and thus, cannot be skipped!

How it works

Docker & XQuartz

This script creates an x64 Docker container running Linux® that is accelerated by Rosetta 2 via the Apple Virtualization framework. The container has all the necessary libraries preinstalled for running Vivado. It is installed automatically given an installer file that the user must provide. GUI functionality is provided by XQuartz.

USB connection

A drawback of the Apple Virtualization framework is that there is no implementation for USB forwarding as of when I'm writing this. Therefore, these scripts set up the Xilinx Virtual Cable protocol. Intended to let a computer connect to an FPGA plugged into a remote computer, it allows for the host system to run an XVC server (in this case a software called xvcd by Felix Domke), to which the docker container can connect.

xvcd is contained in this repository, but with slight changes to make it compile on modern day macOS (compilation requires libusb and libftdi installed via homebrew, though there is a compiled version included). It runs continuously while the docker container is running.

This version of xvcd only supports the FT2232C chip. There are forks of this software supporting other boards such as xvcserver by Xilinx.

Environment variables

A few environment variables are set such that

  1. the GUI is displayed correctly.
  2. Vivado doesn't crash (maybe due to emulation?)
🔩|MANUAL | GUI | UTM UTM is essentially a mac wrapper around QEMU that provides a more easy to follow installation procedure. Download file or OPTIONs - emulate - x86_64 - Match specs requirements for your app of choice - Use minimum amount of disk space as it wont really be utilised.

🧰|USAGE

⚖️|LICENSE

The repository's contents are licensed under the latest version of the GNU General Public License.

📖|ACKNOWLEDGEMENTS

ACKNOWLEDGEMENTS | LEGAL

  • Vivado and Xilinx are trademarks of Xilinx, Inc.
  • Arm is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
  • Apple, Mac, MacBook, MacBook Air, macOS and Rosetta are trademarks of Apple Inc., registered in the U.S. and other countries and regions.
  • Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein.
  • Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.
  • Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
  • Oracle, Java, MySQL, and NetSuite are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
  • X Window System is a trademark of the Massachusetts Institute of Technology.

ACKNOWLEDGEMENTS | TECHNICAL

xilinx's People

Contributors

pelasgus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.