PYNQ: PYTHON PRODUCTIVITY

Can't rebuild the base overlay Pynq 2.6 - couldn't execute "vivado_hls"

Hi everyone.

I followed the tutorial to rebuild the base overlay for Pynq 2.6. However, I get an error

start_gui
cd <my_repo>/boards/ZCU104/base
source ./build_ip.tcl
# set current_dir [pwd]
# cd ../../ip/hls/
# set ip {color_convert_2 pixel_pack_2 pixel_unpack_2}
# foreach item $ip {
#    if {[catch { glob -directory ${item}/solution1/impl/ip/ *.zip} zip_file]} {
# # Build IP only if a packaged IP does not exist
#       puts "Building $item IP"
#       exec vivado_hls -f $item/script.tcl
#    } else {
# # Skip IP when a packaged IP exists in ip directory
#       puts "Skipping building $item"
#    }
#    unset zip_file
# # Testing the built IP
#    puts "Checking $item"
#    set fd [open ${item}/solution1/syn/report/${item}_csynth.rpt r]
#    set timing_flag 0
#    set latency_flag 0
#    while { [gets $fd line] >= 0 } {
# # Check whether the timing has been met
#     if [string match {+ Timing: } $line]  { 
#       set timing_flag 1
#       set latency_flag 0
#       continue
#     }
#     if {$timing_flag == 1} {
#       if [regexp {[0-9]+} $line]  {
#         set period [regexp -all -inline {[0-9]*\.[0-9]*} $line]
#         lassign $period target estimated uncertainty
#         if {$target < $estimated} {
#             puts "ERROR: Estimated clock period $estimated > target $target."
#             puts "ERROR: Revise $item to be compatible with Vivado_HLS."
#             exit 1
#         }
#       }
#     }
# # Check whether the II has been met
#     if [string match {+ Latency: } $line]  { 
#       set timing_flag 0
#       set latency_flag 1
#       continue
#     }
#     if {$latency_flag == 1} {
#       if [regexp {[0-9]+} $line]  {
#         set interval [regexp -all -inline {[0-9]*\.*[0-9]*} $line]
#         lassign $interval lc_min lc_max la_min la_max achieved target
#         if {$achieved != $target} {
#             puts "ERROR: Achieved II $achieved != target $target."
#             puts "ERROR: Revise $item to be compatible with Vivado_HLS."
#             exit 1
#         }
#       }
#     }
# # Testing ends
#     if [string match {== Utilization Estimates} $line]  { 
#        unset timing_flag latency_flag period interval
#        break
#     }
#    }
#    unset fd
# }
Building color_convert_2 IP
couldn't execute "vivado_hls": no such file or directory

I have Vivado 2020.2. What did I do wrong ?

You need to use Vivado 2020.1. This is indicated in the first line of the tutorial.
Vivado 2020.1 is the version of Vivado that was tested with PYNQ 2.6.
The tutorial/overlay build is untested with 2020.2.

For info, vivado_hls was replaced with vitis_hls in 2020.2 so this is why this part fails. Even if you update the commands to “vitis_hls” I still expect other parts may not work as they have not been tested.
Can you use 2020.1?

Cathal

I didn’t think it wouldn’t work with a newer version.

Can I downgrade to 2020.1 ?

No, unfortunately you need to install 2020.1 separately. You can have the two versions on your computer if you want to/if disk space allows.

Cathal

My problems are that I use it for an internship for college and I don’t have enough space to install both.

build_ip.tcl tries to open color_convert_2_csynth.rpt (“color_convert_2/solution1/syn/report/color_convert_2_csynth.rpt”) that doesn’t exist either.

Just to be clear, the build_ip.tcl tries to build the IP, and then checks the generated report (.rpt) to check if timing was met and the build was successful. I think it is the first part that fails (building the IP) and therefore the report isn’t generated.

Cathal