Been going thru tutorial 1 and getting an error at seciton 8 “Run Application”.
Error msg:
Exiting for exception: No acceptable implementations found in any libraries for “local.DemoProject.source”. Use log level 8 for more detail.
make: *** [run] Error 1^M
I saw from your previous topic that you asked about supported Vivado version.
What operating system are you running? There’s a known Xilinx vendor tool issue with Ubuntu 18.04+ and
the xsim hdl simulator platform. In this occasion you need to install Xilinx Vivado 2020.1+ to properly execute xsim.
As far as log level 8. When using OpenCPI command line utilities you can increase the logging level. You can accomplish this by using the environment variable OCPI_LOG_LEVEL . By increasing the log level it will give you more verbose logs.
For example in Tutorial 1 Section 8 you can invoke it using: OCPI_LOG_LEVEL=8 ocpidev run application DemoApp.xml
Or alternatively you can export it in your environment to persist between executions like this: export OCPI_LOG_LEVEL=8
Log level 8 is high, but you can even go a step higher to log level 10. IIRC default it 5 or 6.
What operating system are you running? There’s a known Xilinx vendor tool issue with Ubuntu 18.04+ and the xsim hdl simulator platform. In this occasion you need to install Xilinx Vivado 2020.1+ to properly execute xsim.
A bad combo of operating system should manifest a problem during build; I doubt that is the cause of this.
You’re right , I missed the “No acceptable implementations.”, part from the OP Which is usually leads to an issue withOCPI_LIBRARY_PATH.
From what I remember though when it comes to bad combo of operating system and Vivado in this particular case was that it did build successfully but failed to run. If I have time, I’ll try to reproduce it.
I used the --minimal flag (ocpiadmin install platform xsim --minimal) when installing the platform in my environment.
The --minimal flag only builds the workers needed to build the testbias hdl assembly. If you do not provide it this flag it will build all the workers and all of the possible build configurations for that worker and will take a considerable more amount of time. You just have to remember to add --workers-as-needed when building future assemblies.
When I executed your script on CentOS7 using Xilinx Vivado 2019.2 I saw this in the “Create HDL Assembly” phase of your script.
++ : --------------------------------------------------
++ : 6 Create HDL Assembly
++ : --------------------------------------------------
++ cd /opencpi/projects/tutorial1
++ ocpidev create hdl assembly demo_assembly
++ xml=/opencpi/projects/tutorial1/hdl/assemblies/demo_assembly/demo_assembly.xml
++ sed -i 's/<\/HdlAssembly>//g' /opencpi/projects/tutorial1/hdl/assemblies/demo_assembly/demo_assembly.xml
++ cat
++ ocpidev build hdl assembly demo_assembly --hdl-platform xsim
Generating the definition file: gen/demo_assembly-defs.vh
Generating the implementation header file: gen/demo_assembly-impl.vh from demo_assembly.xml
Generating the implementation skeleton file: gen/demo_assembly-skel.v
Generating the assembly source file: gen/demo_assembly-assy.v from demo_assembly.xml
Generating the opposite language definition file: gen/demo_assembly-defs.vhd
Generating the VHDL constants file for config 0: target-xsim/generics.vhd
Generating the vhdl implementation file: gen/demo_assembly-impl.vhd from demo_assembly.xml
Generating the Verilog constants file for config 0: target-xsim/generics.vh
Building the demo_assembly assembly for xsim (target-xsim/demo_assembly) 0:(demo_assembly_ocpi_debug=false demo_assembly_ocpi_endian=little demo_assembly_ocpi_max_opcode_in=0 demo_assembly_ocpi_max_latency_out=256 demo_assembly_ocpi_max_bytes_in=8192 demo_assembly_ocpi_max_bytes_out=8192 demo_assembly_ocpi_max_opcode_out=0)
Tool "xsim" for target "xsim" succeeded. 0:09.89 at 15:05:10
Creating link to export worker binary: lib/hdl/xsim/demo_assembly -> target-xsim/demo_assembly
Creating link from lib/hdl/xsim/demo_assembly.cores -> target-xsim/demo_assembly.cores to expose the list of core dependencies for worker demo_assembly.
Creating link from lib/hdl/xsim/demo_assembly-generics.vhd -> target-xsim/generics.vhd to expose generics for worker demo_assembly.
Creating link from lib/hdl/xsim/demo_assembly.v -> target-xsim/demo_assembly-defs.vh to expose the definition of worker demo_assembly.
Creating link from lib/hdl/xsim/demo_assembly.vhd -> target-xsim/demo_assembly-defs.vhd to expose the other-language stub for worker demo_assembly.
Creating link from lib/hdl -> demo_assembly.xml to expose the demo_assembly implementation xml.
Error: HDL worker "wsi_width_clock_adapter" found in component library "/opencpi/projects/tutorial1/imports/ocpi.core/exports/lib/adapters" (/opencpi/projects/core/hdl/adapters/lib), but build config "9" not built for target "xsim"
/opencpi/cdk/include/hdl/hdl-lib2.mk:54: *** . Stop.
make: *** [container-demo_assembly_xsim_base/target-xsim/demo_assembly_xsim_base.bitz] Error 2
If you add --workers-as-needed to line 261
ocpidev build hdl assembly demo_assembly --hdl-platform xsim --workers-as-needed
It will successfully build the assembly
Additionally in the application package attribute needs to be updated to the project name.
When the application executes it looks at the artifacts directories for artifacts described by the OpenCPI Application Specifiation (OAS) the directories it searches in is dictated by OCPI_LIBRARY_PATH environment variable. When using ocpidev run it figures out this path based on the project registry, so you don’t have to manually set it.
It goes through each artifact and tries to find match component specified in the app to the workers implemented for the available containers at runtime. “No Implementation was found” indicates that it could not satisfy the OAS for that particular worker. In this case the HDL assembly that contained the HDL workers didn’t exist because of the build failure.
Hi,
Doh! That would do it… “DemoProject” vs “DemoProject1”… my brain glossed over the 1…
btw I did the full build for xsim… (it did take a while!). Did not see that error for the wsi_width worker iirc… I added the ‘workers-as-needed’ flag anyway.
Anyways, now the tutorial advances a little further…
New Error: “Cannot obtain a local IP address. No socket interface found with usable address…”
The IP/socket error was happening when the host was on a another network.
The VM was not configured correctly for that network come to think of it, so I’ll hand wave and chaulk it up to that. Error went away with host/VM connected to its normal network.