PYNQ 2.7 custom board building error

Hi,I have a zynq7020 board, having different clk and DDR with official board. So I want to build my own PYNQ image.
I devide it in two steps:
1、Build PYNQ-Z2 image to verify my environment is complete.
2、Modify clk and DDR in PYNQ-Z2 with vivado,then generate tcl and rebuild image.

However, I failed in the first step and cannot solve it for several weeks. I will very appreciate it if someone help me.

my environment lists as follows:
VM ubuntu18.4 from vagrantfile;
PYNQ 2.7( Cloned from PYNQ repo (latest master));
ran setup_host.sh script;
installed vitis 2020.2 and petalinux 2020.2, and set up the environment variables.

I ran the following cmd in sdbuild dir.
make BOARDS=Pynq-Z2 PREBUILT=/pynq/focal.arm.2.7.0_2021_11_17.tar.gz

INFO: [Memdata 28-167] Found XPM memory block base_i/iop_pmod0/spi/U0/NO_DUAL_QUAD_MODE.QSPI_NORMAL/QSPI_LEGACY_MD_GEN.QSPI_CORE_INTERFACE_I/FIFO_EXISTS.RX_FIFO_II/gnuram_async_fifo.xpm_fifo_base_inst/gen_sdpram.xpm_memory_base_inst with a P_MEMORY_PRIMITIVE property set to auto. A value of block is required. You will not be able to use the updatemem program to update the bitstream with new data for the base_i/iop_pmod0/spi/U0/NO_DUAL_QUAD_MODE.QSPI_NORMAL/QSPI_LEGACY_MD_GEN.QSPI_CORE_INTERFACE_I/FIFO_EXISTS.RX_FIFO_II/gnuram_async_fifo.xpm_fifo_base_inst/gen_sdpram.xpm_memory_base_inst block.
Command: write_bitstream -force base_wrapper.bit
Attempting to get a license for feature 'Implementation' and/or device 'xczu7ev'
INFO: [Common 17-349] Got license for feature 'Implementation' and/or device 'xczu7ev'
INFO: [Common 17-83] Releasing license: Implementation
41 Infos, 0 Warnings, 0 Critical Warnings and 1 Errors encountered.
write_bitstream failed
ERROR: [Common 17-69] Command failed: This design contains one or more cells for which bitstream generation is not permitted:
base_i/video/hdmi_out/frontend/inst/v_hdmi_tx/inst (<encrypted cellview>)
base_i/video/hdmi_in/frontend/inst/v_hdmi_rx/inst (<encrypted cellview>)
If a new IP Core license was added, in order for the new license to be picked up, the current netlist needs to be updated by resetting and re-generating the IP output products before bitstream generation.
INFO: [Common 17-206] Exiting Vivado at Thu Sep  8 23:21:17 2022...
[Thu Sep  8 23:21:18 2022] impl_1 finished
WARNING: [Vivado 12-8222] Failed run(s) : 'impl_1'
wait_on_run: Time (s): cpu = 03:09:25 ; elapsed = 01:29:04 . Memory (MB): peak = 4545.023 ; gain = 0.000 ; free physical = 4524 ; free virtual = 8832
INFO: [Vivado 12-4895] Creating Hardware Platform: /workspace/PYNQ/sdbuild/build/PYNQ/boards/ZCU104/base/base.xsa ...
INFO: [Hsi 55-2053] elapsed time for repository (/workspace/Vivado/2020.2/data/embeddedsw) loading 0 seconds
WARNING: [BD 41-2589] Platform should have atleast one axi memory mapped master interface. Enable a master AXI interface as platform AXI_PORT.
INFO: [Project 1-1042] Successfully generated hpfm file
write_project_tcl: Time (s): cpu = 00:09:34 ; elapsed = 00:06:15 . Memory (MB): peak = 4545.023 ; gain = 0.000 ; free physical = 7553 ; free virtual = 12594
ERROR: [Common 17-70] Application Exception: Need an implemented design open to write bitstream. Aborting write_hw_platform..
INFO: [Common 17-206] Exiting Vivado at Thu Sep  8 23:27:47 2022...
makefile:16: recipe for target 'bitstream' failed
make[1]: *** [bitstream] Error 1
make[1]: Leaving directory '/workspace/PYNQ/sdbuild/build/PYNQ/boards/ZCU104/base'
+ unmount_special
+ for fs in $fss
+ sudo umount -l /workspace/PYNQ/sdbuild/build/focal.Pynq-Z2/proc
+ for fs in $fss
+ sudo umount -l /workspace/PYNQ/sdbuild/build/focal.Pynq-Z2/run
+ for fs in $fss
+ sudo umount -l /workspace/PYNQ/sdbuild/build/focal.Pynq-Z2/dev
+ sudo umount -l /workspace/PYNQ/sdbuild/build/focal.Pynq-Z2/ccache
+ rmdir /workspace/PYNQ/sdbuild/build/focal.Pynq-Z2/ccache
Makefile:343: recipe for target '/workspace/PYNQ/sdbuild/build/Pynq-Z2.tar.gz' failed
make: *** [/workspace/PYNQ/sdbuild/build/Pynq-Z2.tar.gz] Error 2
type or paste code here

It seems I don’t have licenses to build ZCU104. But question is I only want to build Pynq-Z2. How can I only build the specified board or get license for ZCU104?
Furthermore, if I want to build my own board image. regenerate tcl file can make it?
thanks for your time.

For the license part there are nothing we can do to help as this is a must to use high-density series FPGA
on Xilinx.

However, the building part I can help, vargrant is a really unpredicted method!
Here is a welly known method that stable enough for others to follow and repeat without major hazard:

Follow this link for build command usage:
https://pynq.readthedocs.io/en/latest/pynq_sd_card.html

Follow this link for setting up the build environment:

Follow this link to see what need to pay attention during Ultra-Scale series ZYNQ build:

Remember read the post completely and understand before you execute each part.

Enjoy ~

Thanks for your reply.
I am sorry, but it did not solve my problem. Actually, I have licenses to build pynq-Z2. it can generate pynq-Z2 bit successfully in vivado. I just can’t understand why it need licenses for ZCU104 when I use cmd : make BOARDS=Pynq-Z2 PREBUILT=/pynq/focal.arm.2.7.0_2021_11_17.tar.gz.
Can you tell me how to skip ZCU104 building process. Because I only want to generate pynq-Z2 now.

Modify the build.sh and remove line as this suggested
Meantime, did you include the HDMI IP license for limited time period usage?

I did’t have HDMI IP license. When I followed the post you shared me, I generated the image for my board. Although encountered some difficulties in this process, but now I can log in my pynq finally. Thank you very much.

I want to record the problem I met when I generated the image earlier. when I finished generating the image in the first time. I found it can’t connect to Ethernet. this bothered me for days. In the finally, I found the petalinux project setting the phy address to “1”. Then I checked my own board, phy address was zero, as the picture shows.


So I changed the petalinux project device tree source file(petalinux_project\project-spec\meta-user\recipes-bsp\device-tree\files\system-user.dtsi). then I regenerated the dtb, BOOT.bin and ubuntu image. Now, I can connect to my pynq. I am so excited.

Finally, I want to thank you for your help again!

You can make a remainders about HDMI and device-tree to this issue:
It will be appreciate and provide better build flow to the community.

Enjoy~ =]