Get Started With HDL development


  • Xilinx Zynq 7000 based hardware
  • Ubuntu 22.04 or newer
  • Xilinx Vivado ML 2021.1 (older versions are not guaranteed to work)
  • Makefile_gen build system version 2.2 (tag v2.2)

HDL IP repository structure

The HDL IP repository consists of several sub-directories, each one containing a different type of resource

Components: The components directory contains the sources for HDL IP blocks and relative auxiliary files.
Applications: The applications directory contains the sources for the top level designs that can be directly deployed on hardware.
Library Licenses: This repository contains the licenses for third party IPs used throughout the HDL IP collection.
Doc: The Doc repository contains documentation and diagrams source files.
Scripts: The Scripts folder contains python and TCL scripts usefull throughout the repository.

Creating a new application

The first step in development consists of the generation of a basic application directory structure, to do this open a terminal window at the desired location, entering the following command:makefilegen --new_app [NAME] –language [LANG]


  • [NAME]: Name of the Application project to create
  • [LANG]: Language used for the design (vlog, sv or vhdl)

As a result of this step the tool will have created both the relevant directory structure along with a Depfile file, used to interact with the build system, a top level RTL file, a testbench file for simulation and a XDC constraints file for IO mapping.

Creating the Vivado project

To then build the desired Vivado project the following command can be issued.

makefile_gen --X

Add New IP to the Vivado project

When RTL code instantiating IP modules is added to the project the following command can be used to refresh the vivado project

makefile_gen --X --add_new_ip