ATaylorCEngFIET / CrowdSupplyWorkShop2

4 stars 2 forks source link

Bug with Windows 2020.2 and video mixer #1

Open Abraxas3d opened 3 years ago

Abraxas3d commented 3 years ago

Excellent class. Retro games and retro computer designs are such a better Hello World than flashing an LED. They use more of the platform and are way more fun.

Problem: The video mixer will not synthesize on Windows with Vivado 2020.2.

It's a known bug and can be read about here: https://www.xilinx.com/support/answers/76044.html

Please do not put 2020.2 in the slides without a warning. There is no reasonable workaround and no evidence that a fix is coming for this.

2020.1 appears to work across all operating systems with the design in the lab. Maybe change the pointers for Vivado/Vitis to that version?

ATaylorCEngFIET commented 3 years ago

Apologies, this was developed on Linux so the issue did not occur, until one of the participants hit the issue after the first lab.

The video of the walk through does talk about this issue, and how using Vivado 2020.1 fixes the issue. I will update the slides to reflect the need to use 2020.1 if you are using windows. Thanks for attending and raising a valid point

Abraxas3d commented 3 years ago

Happy to attend and looking forward to future workshops.

Using Vivado 2020.1 does solve the mixer bug. A bitstream can be created. (as expected)

However it won't build in Vitis.

I did get critical warnings in Vivado.

Multiple (12) of the following category:

[Common 17-55] 'set_property' expects at least one object. ["C:/Users/Kindl/OneDrive/Documents/CrowdSupplyWorkShop1-master/CrowdSupplyWorkShop1-master/io.xdc":41]

One of the following:

[Vivado 12-1419] Debug core 'dbg_hub' was not found. ["C:/Users/Kindl/OneDrive/Documents/CrowdSupplyWorkShop1-master/CrowdSupplyWorkShop1-master/io.xdc":81]

Going over to Vitis and building:

20:25:56 **** Build of configuration Debug for project Pong ****
make all 
'Building file: ../src/helloworld.c'
'Invoking: MicroBlaze gcc compiler'
mb-gcc -Wall -O0 -g3 -c -fmessage-length=0 -MT"src/helloworld.o" -IC:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/sw/design_1_wrapper_test/domain_microblaze_0/bspinclude/include -mlittle-endian -mcpu=v11.0 -mxl-soft-mul -Wl,--no-relax -ffunction-sections -fdata-sections -MMD -MP -MF"src/helloworld.d" -MT"src/helloworld.o" -o "src/helloworld.o" "../src/helloworld.c"
**../src/helloworld.c:50:10: fatal error: xil_printf.h: No such file or directory**
   50 | #include "xil_printf.h"
      |          ^~~~~~~~~~~~~~
compilation terminated.
'Finished building: ../src/helloworld.c'
' '
'Building file: ../src/platform.c'
'Invoking: MicroBlaze gcc compiler'
mb-gcc -Wall -O0 -g3 -c -fmessage-length=0 -MT"src/platform.o" -IC:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/sw/design_1_wrapper_test/domain_microblaze_0/bspinclude/include -mlittle-endian -mcpu=v11.0 -mxl-soft-mul -Wl,--no-relax -ffunction-sections -fdata-sections -MMD -MP -MF"src/platform.d" -MT"src/platform.o" -o "src/platform.o" "../src/platform.c"
**../src/platform.c:33:10: fatal error: xparameters.h: No such file or directory**
   33 | #include "xparameters.h"
      |          ^~~~~~~~~~~~~~~
compilation terminated.
'Finished building: ../src/platform.c'
' '
'Building target: Pong.elf'
'Invoking: MicroBlaze gcc linker'
mb-gcc -Wl,-T -Wl,../src/lscript.ld -LC:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/sw/design_1_wrapper_test/domain_microblaze_0/bsplib/lib -mlittle-endian -mcpu=v11.0 -mxl-soft-mul -Wl,--no-relax -Wl,--gc-sections -o "Pong.elf"  ./src/helloworld.o ./src/platform.o   -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
microblaze-xilinx-elf-gcc.exe: error: ./src/helloworld.o: No such file or directory
microblaze-xilinx-elf-gcc.exe: error: ./src/platform.o: No such file or directory
'Finished building target: Pong.elf'
' '
'Invoking: MicroBlaze Print Size'
mb-size Pong.elf  |tee "Pong.elf.size"
mb-size: 'Pong.elf': No such file
'Finished building: Pong.elf.size'
' '

20:25:56 Build Finished (took 404ms)

From the Vitis log, it seems like there might be something wrong in the platform generation.

20:34:30 DEBUG  : Start of operation 'BUILD'
20:34:30 DEBUG  : [---Analytics---] mode=BUILD, duration=0:00:00.106, duration_ms=106, data={name=Pong, configuration=Debug, clean_build=true}
20:34:32 DEBUG  : Start of operation 'PLATFORM_GENERATION'
20:34:35 DEBUG  : [---Analytics---] mode=PLATFORM_GENERATION, duration=0:00:02.674, duration_ms=2674, data={name=design_1_wrapper_test}
20:34:35 INFO   : Checking for BSP changes to sync application flags for project 'Pong'...
20:34:35 DEBUG  : MSS signature from application settings: 51d6062ab06b29d16b3c573339bbc0a1
20:34:35 DEBUG  : Reading BSP from platform C:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/design_1_wrapper_test.xpfm...
20:34:35 DEBUG  : XSCT Command: [::hsi::utils::openhw C:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/hw/design_1_wrapper_test.xsa], Thread: Worker-16: Build Project
20:34:35 ERROR  : Failed to openhw "C:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/hw/design_1_wrapper_test.xsa"
Reason: ERROR: [Common 17-39] 'hsi::open_hw_design' failed due to earlier errors.

20:34:35 ERROR  : Failed to update application flags from BSP for 'Pong'. Reason: null
java.lang.NullPointerException ..... etc.

This path, "C:/Users/Kindl/CR1_new/wksp/design_1_wrapper_test/export/design_1_wrapper_test/hw/design_1_wrapper_test.xsa" exists up to the .../hw/...

I only see a .../sw/...

If this set of directories isn't being created during build, then I think Something has already gone wrong before this step, but I'm not sure what to check.

I backed up and redid the lab from the beginning of Lab 1. I reinstalled Vivado/Vitis. Same result. Will try again tomorrow in case I made some sort of mistake twice.

Anything obvious leap out here? Not being able to find include files is kind of a classic problem in building code, but explicitly setting an include path isn't in any of this lab's instructions, and wasn't part of the only other project I've built on the Basys3 - the up/down counter from Hackster.io. Not being able to find xparameters.h must mean I'm missing something pretty simple.

-Abraxas3d

Abraxas3d commented 3 years ago

Experiment #1: I started over, used the solution from the lab, imported that solution file (design_1_wrapper.xsa), and then attempted to create a platform with this file.

1- Create a platform project 2- Pick a project name. 3- “Create from hardware specification (XSA)” and click next. 4- Select to the xsa file from lab solution. 5- Right-click on the project in the explorer view and select Build Project.

"Compiling hud_gen"

mb-ar: *.o: Invalid argument
make[1]: *** [Makefile:24: libs] Error 1
make: *** [Makefile:30: microblaze_0/libsrc/hud_gen_v1_0/src/make.libs] Error 2
Failed to build  the bsp sources for domain - standalone_domain
Failed to generate the platform.
Reason: Failed to build  the bsp sources for domain - standalone_domain

Experiment #2: I started over, used the solution from the lab, imported the solution file (design_1_wrapper.xsa), and then attempted to create an application. This is what the lab instructs one to do.

1- Create an Application project 2- Pick a project name. 3- “Create from hardware specification (XSA)” and click next. 4- Select to the xsa file from lab solution. 5- Right-click on the project in the explorer view and select Build Project.

"Compiling hud_gen"

mb-ar: *.o: Invalid argument
make[1]: *** [Makefile:24: libs] Error 1
make: *** [Makefile:30: microblaze_0/libsrc/hud_gen_v1_0/src/make.libs] Error 2
Failed to build  the bsp sources for domain - domain_microblaze_0
Failed to generate the platform.
Reason: Failed to build  the bsp sources for domain - domain_microblaze_0
    invoked from within
"::tcf::eval -progress {apply {{msg} {puts $msg}}} {tcf_send_command tcfchan#0 xsdb eval s es {{platform active design_1_wrapper; platform generate }}}"
    (procedure "::tcf::send_command" line 4)
    invoked from within
"tcf send_command $::xsdb::curchan xsdb eval s es [list "platform active $PLATFORM_NAME; platform generate $target"]"
    invoked from within
"if { $iswindows == 1 } {    

    set XSDB_PORT [lindex $argv 0]
    set PLATFORM_NAME [lindex $argv 1]
    set arglen [llength $argv]
    set lastind..."
    (file "C:/Xilinx/Vitis/2020.1\scripts\vitis\util\buildplatform.tcl" line 11)

So, something amiss with the makefile? When it comes to hud_gen, it seems to hit some difficulty.

At the top of the log is

18:54:22 **** Build of project design_1_wrapper ****
buildplatform.bat 54548 design_1_wrapper  
XSDB Server Channel: tcfchan#5
Building the BSP Library for domain  - domain_microblaze_0 on processor microblaze_0
"Running Make include in microblaze_0/libsrc/bram_v4_4/src"

I am thinking that these make commands are in something called buildplatform.bat in the .xsa file. Changing to my own .xsa file, built in Xilinx 2020.1, results in the same error. So, it doesn't seem to be because the solution presumably is from 2020.2.

Are there reports from other Vivado/Vitis 2020.1 users on Windows? If others are having success that would be helpful to know. Not sure what to do next, if the commands that are causing issues are in the .xsa file, then I think whatever I did wrong is back in Vivado.