Creating example project with AXI4 Lite peripheral in Xilinx Vivado
Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC.
Start ./vivado from installed directory.
Goto: File -> New Project -> Next. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next.
Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from GitHub. Make sure that the option to copy the constraints file(s) into the project is marked.
For the next step, the board files for the board we're using must have been installed. If this is not the case, follow this tutorial to do so.
Choose the Zybo board, click next, and finish.
The project has now been created and ready for IP-block integration.
Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".
Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this:
Goto: Tools -> Create and Package New IP. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default.
In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.
In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters.
Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update.
Right click axi4_lite_led_IP_0 block --> Edit in IP Packager.
Find the following files under Sources: Design Sources --> design_1_wrapper --> design_1_i: design_1 --> design_1 --> axi4_lite_led_IP_0 : design_1_axi4_lite_led_IP_0_1 --> design_1_axi4_lite_led_IP_0_1, or if you want to do the editing in your favorite editor, find the files in axi4_lite_tutorial_project/axi4_lite_tutorial_project.srcs/sources_1/bd/design_1/ipshared/4b4e/hdl
axi4_lite_led_IP_v1_0_S00_AXI.vhd
axi4_lite_led_IP_v1_0.vhd
We will start by editing axi4_lite_led_IP_v1_0.vhd using the Visual Studio Code editor:
Then editing axi4_lite_led_IP_v1_0_S00_AXI.vhd:
Choose "Ports and interfaces" in the Package IP tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project.
Click on "IP Status" tab, and choose "Upgrade Selected".