Overview
Steps in building/exporting the output for Zynq Zedboard from Vivado 2018.3.
Directory setup
$ mkdir ~/xilinx/projects/vpjs/[zed_top/zedboard/]
Vivado steps
Create new project
- Select Zedboard (create subdirectory)
- RTL project
- “Do not specify sources at this time”
- Select Zedboard part, Finish
End result:
.
├── vivado.jou
├── vivado.log
├── vivado_pid5494.str
└── zedboard
├── zedboard.cache
│ └── wt
│ └── project.wpc
├── zedboard.hw
│ └── zedboard.lpr
├── zedboard.ip_user_files
├── zedboard.sim
└── zedboard.xpr
Create block design
- Create Block Design (take all defaults)
- Empty design, “+”
- “ZYNQ7 Processing System”
End result:
.
├── vivado.jou
├── vivado.log
├── vivado_pid5494.str
└── zedboard
├── zedboard.cache
│ └── wt
│ └── project.wpc
├── zedboard.hw
│ └── zedboard.lpr
├── zedboard.ip_user_files
├── zedboard.sim
├── zedboard.srcs
│ └── sources_1
│ └── bd
│ └── design_1
│ └── design_1.bd
└── zedboard.xpr
design_1.bd:
{
"design": {
"design_info": {
"boundary_crc": "0x0",
"name": "design_1",
"synth_flow_mode": "Hierarchical",
"tool_version": "2018.3"
},
"design_tree": {}
}
}
Validation
- Validate, error with M_AXI_GP0_ACLK
- Double click on design block graphic:
- PS-PL Configuration
- AXI Non Secure Enablement
- GP Master AXI Interface
- M AXI GP0 Interface (uncheck)
- Validate again (should pass)
Create HDL wrapper
- BLOCK DESIGN; design_1; Sources; right-click
- “Create HDL wrapper”, let Vivado manage wrapper
Primary output:
$ tree zedboard.srcs
zedboard.srcs
└── sources_1
└── bd
└── design_1
├── design_1.bd
├── design_1.bxml
├── design_1_ooc.xdc
├── hdl
│ └── design_1_wrapper.v
├── ip
│ └── design_1_processing_system7_0_0
│ ├── design_1_processing_system7_0_0.xci
│ └── design_1_processing_system7_0_0.xml
├── sim
│ └── design_1.v
├── synth
│ └── design_1.v
└── ui
└── bd_1f5defd0.ui
Generate block design
Majority of output under zedboard.ip_user_files/.
Run synthesis
Run implementation
Generate bitstream
zedboard.runs/impl_1/design_1_wrapper.bit
Export hardware (include bitstream?)
End result:
$ unzip -l design_1_wrapper.hdf
Archive: design_1_wrapper.hdf
02LvEiD+u+Kz8iWSDr/wPVMUtQtx/Up+iy67Wzp7LsT7w=
Length Date Time Name
--------- ---------- ----- ----
861 05-20-2019 07:27 hwdef.xml
66717 05-20-2019 07:27 design_1.hwh
6451 05-20-2019 07:27 design_1_bd.tcl
313654 05-20-2019 07:27 ps7_init.c
4908 05-20-2019 07:27 ps7_init.h
313050 05-20-2019 07:27 ps7_init_gpl.c
4294 05-20-2019 07:27 ps7_init_gpl.h
1760914 05-20-2019 07:27 ps7_init.html
24922 05-20-2019 07:27 ps7_init.tcl
--------- -------
2495771 9 files
$
PetaLinux steps
petalinux-create
$ petalinux-create \ --type project \ --name zed \ --template zynq $ cd zed $
Output:
.
├── config.project
└── project-spec
├── attributes
├── configs
│ ├── config
│ └── rootfs_config
├── hw-description
│ └── metadata
└── meta-user
├── conf
│ ├── layer.conf
│ └── petalinuxbsp.conf
├── COPYING.MIT
├── README
├── recipes-apps
│ ├── gpio-demo
│ │ ├── files
│ │ │ ├── gpio-demo.c
│ │ │ └── Makefile
│ │ └── gpio-demo.bb
│ └── peekpoke
│ ├── files
│ │ ├── Makefile
│ │ ├── peek.c
│ │ └── poke.c
│ └── peekpoke.bb
├── recipes-bsp
│ ├── device-tree
│ │ ├── device-tree.bbappend
│ │ └── files
│ │ └── system-user.dtsi
│ └── u-boot
│ ├── files
│ │ └── platform-top.h
│ └── u-boot-xlnx_%.bbappend
└── recipes-core
└── images
└── petalinux-image-full.bbappend
petalinux-config
$ petalinux-config --get-hw-description <dir containing .hdf file>