1111# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212# See the License for the specific language governing permissions and
1313# limitations under the License.
14- # vitis makefile-generator v2.0.6
14+ # vitis makefile-generator v2.0.7
1515
1616# ############################# Help Section ##############################
1717.PHONY : help
@@ -34,9 +34,15 @@ help::
3434 $(ECHO ) " Command to build host application."
3535 $(ECHO ) " By default, HOST_ARCH=x86. HOST_ARCH is required for SoC shells"
3636 $(ECHO ) " "
37- $(ECHO ) " NOTE: For embedded devices, e.g. zcu102/zcu104/vck190, env variable SYSROOT and EDGE_COMMON_SW need to be set first, and HOST_ARCH is either aarch32 or aarch64. For example,"
38- $(ECHO ) " export SYSROOT=< path-to-platform-sysroot >"
39- $(ECHO ) " export EDGE_COMMON_SW=< path-to-rootfs-and-Image-files >"
37+ $(ECHO ) " NOTE: For embedded devices, e.g. zcu102/zcu104/vck190, HOST_ARCH is either aarch32 or aarch64."
38+ $(ECHO ) " a.IF Download the platform, and common-image from Xilinx Download Center(Suggested):"
39+ $(ECHO ) " Run the sdk.sh script from the common-image directory to install sysroot using the command : ./sdk.sh -y -d ./ -p "
40+ $(ECHO ) " Unzip the rootfs file : gunzip ./rootfs.ext4.gz"
41+ $(ECHO ) " export SYSROOT=< path-to-platform-sysroot >"
42+ $(ECHO ) " b. User could also define SYSROOT, K_IMAGE and ROOTFS by themselves: "
43+ $(ECHO ) " export SYSROOT=< path-to-platform-sysroot >"
44+ $(ECHO ) " export K_IMAGE=< path-to-Image-files >"
45+ $(ECHO ) " export ROOTFS=< path-to-rootfs >"
4046 $(ECHO ) " "
4147 $(ECHO ) " make clean "
4248 $(ECHO ) " Command to remove the generated non-hardware files."
@@ -61,7 +67,7 @@ ifeq ($(PLATFORM),)
6167PLATFORM := $(DEVICE )
6268endif
6369ifeq ($(PLATFORM ) ,)
64- PLATFORM := xilinx_u280_xdma_201920_3
70+ PLATFORM := xilinx_u280_gen3x16_xdma_1_202120_1
6571endif
6672
6773# #################### Checking if PLATFORM in whitelist ############################
@@ -87,12 +93,17 @@ RUN_DEPS :=
8793# get global setting
8894ifeq ($(HOST_ARCH ) , x86)
8995CXXFLAGS += -fmessage-length=0 -I$(CUR_DIR ) /src/ -I$(XILINX_XRT ) /include -I$(XILINX_HLS ) /include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label
90- LDFLAGS += -pthread -L$(XILINX_XRT ) /lib -L$(XILINX_HLS ) /lnx64/tools/fpo_v7_0 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_0_bitacc_cmodel
96+ LDFLAGS += -pthread -L$(XILINX_XRT ) /lib -L$(XILINX_HLS ) /lnx64/tools/fpo_v7_1 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_1_bitacc_cmodel
9197VPP_FLAGS += -t $(TARGET ) --platform $(XPLATFORM ) --save-temps
9298VPP_LDFLAGS += --optimize 2 -R 2
9399else ifeq ($(HOST_ARCH), aarch64)
100+ ifeq ($(ps_on_x86 ) , on)
101+ CXXFLAGS += -fmessage-length=0 -I$(CUR_DIR ) /src/ -I$(XILINX_XRT ) /include -I$(XILINX_HLS ) /include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label
102+ LDFLAGS += -pthread -L$(XILINX_XRT ) /lib -L$(XILINX_HLS ) /lnx64/tools/fpo_v7_1 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_1_bitacc_cmodel
103+ else
94104CXXFLAGS += -I$(CUR_DIR ) /src/ -fmessage-length=0 --sysroot=$(SYSROOT ) -I$(SYSROOT ) /usr/include/xrt -I$(XILINX_HLS ) /include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label
95- LDFLAGS += -pthread -L$(SYSROOT ) /usr/lib -L$(XILINX_VITIS_AIETOOLS ) /lib/aarch64.o -Wl,--as-needed -lxilinxopencl -lxrt_coreutil
105+ LDFLAGS += -pthread -L$(SYSROOT ) /usr/lib -Wl,--as-needed -lxilinxopencl -lxrt_coreutil
106+ endif
96107VPP_FLAGS += -t $(TARGET ) --platform $(XPLATFORM ) --save-temps
97108VPP_LDFLAGS += --optimize 2 -R 2
98109endif
@@ -107,15 +118,23 @@ ifeq ($(TARGET),hw_emu)
107118CXXFLAGS += -D HW_EMU_TEST
108119endif
109120
110- ifeq (,$(findstring opencv,$(CXXFLAGS ) ) )
111- CXXFLAGS += $(XRT_CXXFLAGS )
112- endif
113-
114121# Inclue Required Host Source Files
122+ ifeq ($(ps_on_x86 ) , on)
115123HOST_SRCS += $(XFLIB_DIR ) /L2/src/sw/cgSolver/test_cgSolver_gemv_jacobi.cpp $(XFLIB_DIR ) /../blas/L2/src/xcl2/xcl2.cpp
116124CXXFLAGS += -D HW_CLK=3e-9 -D CG_numTasks=1 -D CG_dataType=double -D CG_numChannels=16 -D CG_parEntries=4 -D CG_instrBytes=64
117125CXXFLAGS += -I $(XFLIB_DIR ) /L1/include/ -I $(XFLIB_DIR ) /L2/include/sw/cgSolver -I $(XFLIB_DIR ) /L2/include/common/cgSolver -I $(XFLIB_DIR ) /L2/include/sw/ -I $(XFLIB_DIR ) /../blas/L1/tests/sw/include/ -I $(XFLIB_DIR ) /../blas/L2/include/xcl2
118126CXXFLAGS += -O3
127+ else
128+ HOST_SRCS += $(XFLIB_DIR ) /L2/src/sw/cgSolver/test_cgSolver_gemv_jacobi.cpp $(XFLIB_DIR ) /../blas/L2/src/xcl2/xcl2.cpp
129+ CXXFLAGS += -D HW_CLK=3e-9 -D CG_numTasks=1 -D CG_dataType=double -D CG_numChannels=16 -D CG_parEntries=4 -D CG_instrBytes=64
130+ CXXFLAGS += -I $(XFLIB_DIR ) /L1/include/ -I $(XFLIB_DIR ) /L2/include/sw/cgSolver -I $(XFLIB_DIR ) /L2/include/common/cgSolver -I $(XFLIB_DIR ) /L2/include/sw/ -I $(XFLIB_DIR ) /../blas/L1/tests/sw/include/ -I $(XFLIB_DIR ) /../blas/L2/include/xcl2
131+ CXXFLAGS += -O3
132+ endif
133+
134+ # workaround for opencv
135+ ifeq (,$(findstring opencv,$(CXXFLAGS ) ) )
136+ CXXFLAGS += $(XRT_CXXFLAGS )
137+ endif
119138
120139EXE_NAME := host.exe
121140EXE_FILE := $(BUILD_DIR ) /$(EXE_NAME )
@@ -251,11 +270,6 @@ $(EMCONFIG):
251270 emconfigutil --platform $(XPLATFORM ) --od $(BUILD_DIR )
252271# ############################# Preparing sdcard folder ##############################
253272ifneq ($(HOST_ARCH ) , x86)
254- ifneq (,$(findstring zc706, $(PLATFORM_NAME ) ) )
255- K_IMAGE := $(SYSROOT ) /../../uImage
256- else
257- K_IMAGE := $(SYSROOT ) /../../Image
258- endif
259273RUN_SCRIPT := $(BUILD_DIR ) /run_script.sh
260274$(RUN_SCRIPT ) :
261275 rm -rf $(RUN_SCRIPT )
@@ -271,7 +285,7 @@ endif
271285 @echo './$(EXE_NAME) $(PKG_HOST_ARGS)' >> $(RUN_SCRIPT)
272286 @echo 'return_code=$$?' >> $(RUN_SCRIPT)
273287 @echo 'if [ $$return_code -ne 0 ]; then' >> $(RUN_SCRIPT)
274- @echo ' echo "ERROR: Embedded host run failed , RC=$$return_code"' >> $(RUN_SCRIPT)
288+ @echo ' echo "ERROR: TEST FAILED , RC=$$return_code"' >> $(RUN_SCRIPT)
275289 @echo 'else' >> $(RUN_SCRIPT)
276290 @echo ' echo "INFO: TEST PASSED, RC=0"' >> $(RUN_SCRIPT)
277291 @echo 'fi' >> $(RUN_SCRIPT)
@@ -289,23 +303,28 @@ SD_DIRS_WITH_PREFIX = $(foreach sd_dir,$(DATA_DIR),--package.sd_dir $(sd_dir))
289303PACKAGE_FILES := $(BINARY_CONTAINERS )
290304PACKAGE_FILES += $(AIE_CONTAINER )
291305SD_CARD := $(CUR_DIR ) /package_$(TARGET )
292- vck190_dfx_hw := false
293- $(SD_CARD ) : $(EXE_FILE ) $(BINARY_CONTAINERS ) $(RUN_SCRIPT ) $(EMCONFIG )
306+ $(SD_CARD ) : $(EXE_FILE ) $(BINARY_CONTAINERS ) $(RUN_SCRIPT ) $(EMCONFIG ) check_kimage check_rootfs
294307 @echo " Generating sd_card folder...."
295308 mkdir -p $(SD_CARD )
296309 chmod a+rx $(BUILD_DIR ) /run_script.sh
297- ifneq (, $( findstring vck190_base_dfx, $( PLATFORM_NAME ) ) )
298- ifeq ($(TARGET ) ,hw )
299- $(VPP) -t $(TARGET) --platform $(XPLATFORM) -p $(PACKAGE_FILES) -o $(BINARY_CONTAINERS_PKG)
300- $(VPP) -t $(TARGET) --platform $(XPLATFORM) -p --package.out_dir $(SD_CARD) --package.rootfs $(SYSROOT)/../../rootfs.ext4 --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX) --package.sd_file $(BINARY_CONTAINERS_PKG)
310+ # 1. DFX HW Flow
311+ ifeq ($(dfx_hw ) , on )
312+ $(VPP) -t $(TARGET) --platform $(XPLATFORM) -p $(PACKAGE_FILES) $(VPP_PACKAGE) -o $(BINARY_CONTAINERS_PKG)
313+ $(VPP) -t $(TARGET) --platform $(XPLATFORM) -p --package.out_dir $(SD_CARD) --package.rootfs $(ROOTFS) --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX) --package.sd_file $(BINARY_CONTAINERS_PKG)
301314 @echo "# ## ***** sd_card generation done! ***** ###"
302- vck190_dfx_hw := true
303315endif
316+ # 2. PS_ON_X86 - From 2022.2, Target:sw_emu
317+ ifeq ($(ps_on_x86 ) , on)
318+ @echo "# ## ***** running PS X86 SE_EMU ***** ###"
319+ $(VPP) -t $(TARGET) --platform $(XPLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.emu_ps x86
304320endif
305- ifeq ($(vck190_dfx_hw ) , false)
306- $(VPP) -t $(TARGET) --platform $(XPLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.rootfs $(SYSROOT)/../../rootfs.ext4 --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX)
321+ # 3. General Embeded flow
322+ ifeq ($(dfx_hw ) , off)
323+ ifeq ($(ps_on_x86 ) , off)
324+ $(VPP) -t $(TARGET) --platform $(XPLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.rootfs $(ROOTFS) --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX)
307325 @echo "# ## ***** sd_card generation done! ***** ###"
308326endif
327+ endif
309328
310329.PHONY : sd_card
311330sd_card : $(SD_CARD )
@@ -329,7 +348,7 @@ ifeq ($(HOST_ARCH), x86)
329348
330349else
331350 @echo $(RUN_DEPS)
332- $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT))
351+ $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT)) 2>&1 | tee $(SD_CARD)/qemu_output.log
333352 grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1
334353
335354endif
@@ -340,24 +359,32 @@ ifeq ($(HOST_ARCH), x86)
340359 LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
341360 XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS)
342361
362+ else
363+ ifeq ($(ps_on_x86 ) , on)
364+ LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
365+ XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS)
366+
343367else
344368 @echo $(RUN_DEPS)
345- $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT))
369+ $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT)) 2>&1 | tee $(SD_CARD)/qemu_output.log
346370 grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1
347371
372+ endif
348373endif
349374endif
350375# hw
351376ifeq ($(TARGET ) , hw)
352377ifneq (,$(findstring aws-vu9p-f1, $(PLATFORM_NAME ) ) )
353- ifneq ( $( JENKINS_INTERNAL_BUILD ) , 1 )
378+ ifeq (, $( wildcard $( BUILD_DIR ) /cgSolver.awsxclbin) )
354379 $(ECHO) "This makefile does not directly support converting .xclbin to .awsxclbin, please refer https://github.com/aws/aws-fpga/blob/master/Vitis/README.md for next operations"
355380else
356- $(ECHO) "Running inside Xilinx regression without converting to .awsxclbin"
357- $(EXE_FILE) $(HOST_ARGS)
381+ $(ECHO) "Running HW using generated .awsxclbin"
382+ LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
383+ $(EXE_FILE) $(subst .xclbin,.awsxclbin,$(HOST_ARGS))
358384
359385endif
360386else ifeq ($(HOST_ARCH), x86)
387+ LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
361388 $(EXE_FILE) $(HOST_ARGS)
362389
363390else
@@ -391,12 +418,11 @@ cleanh:
391418
392419cleank :
393420 -$(RMDIR ) $(BUILD_DIR ) /* .xclbin _vimage * xclbin.run_summary qemu-memory-_* emulation/ _vimage/ pl* start_simulation. sh * .xclbin
394- -$(RMDIR ) _x_temp.* /_x.* _x_temp.* /.Xil _x_temp.* /profile_summary.* xo_* _x*
395- -$(RMDIR ) _x_temp.* /dltmp* _x_temp.* /kernel_info.dat _x_temp.* /* .log
396- -$(RMDIR ) _x_temp.*
421+ -$(RMDIR ) _x_temp.*
397422
398423cleanall : cleanh cleank
399424 -$(RMDIR ) $(BUILD_DIR ) emconfig.json * .html $(TEMP_DIR ) $(CUR_DIR ) /reports * .csv * .run_summary $(CUR_DIR ) /* .raw package_* $(BUILD_DIR ) /run_script.sh .ipcache * .str
400425 -$(RMDIR ) $(CUR_DIR ) /Work $(CUR_DIR ) /* .xpe $(CUR_DIR ) /hw.o $(CUR_DIR ) /* .xsa $(CUR_DIR ) /xnwOut
426+ -$(RMDIR )
401427
402428clean : cleanh
0 commit comments