11
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
- # vitis makefile-generator v2.0.6
14
+ # vitis makefile-generator v2.0.7
15
15
16
16
# ############################# Help Section ##############################
17
17
.PHONY : help
@@ -34,9 +34,15 @@ help::
34
34
$(ECHO ) " Command to build host application."
35
35
$(ECHO ) " By default, HOST_ARCH=x86. HOST_ARCH is required for SoC shells"
36
36
$(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 >"
40
46
$(ECHO ) " "
41
47
$(ECHO ) " make clean "
42
48
$(ECHO ) " Command to remove the generated non-hardware files."
@@ -61,7 +67,7 @@ ifeq ($(PLATFORM),)
61
67
PLATFORM := $(DEVICE )
62
68
endif
63
69
ifeq ($(PLATFORM ) ,)
64
- PLATFORM := xilinx_u280_xdma_201920_3
70
+ PLATFORM := xilinx_u280_gen3x16_xdma_1_202120_1
65
71
endif
66
72
67
73
# #################### Checking if PLATFORM in whitelist ############################
@@ -87,12 +93,17 @@ RUN_DEPS :=
87
93
# get global setting
88
94
ifeq ($(HOST_ARCH ) , x86)
89
95
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
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
91
97
VPP_FLAGS += -t $(TARGET ) --platform $(XPLATFORM ) --save-temps
92
98
VPP_LDFLAGS += --optimize 2 -R 2
93
99
else 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
94
104
CXXFLAGS += -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
96
107
VPP_FLAGS += -t $(TARGET ) --platform $(XPLATFORM ) --save-temps
97
108
VPP_LDFLAGS += --optimize 2 -R 2
98
109
endif
@@ -107,15 +118,23 @@ ifeq ($(TARGET),hw_emu)
107
118
CXXFLAGS += -D HW_EMU_TEST
108
119
endif
109
120
110
- ifeq (,$(findstring opencv,$(CXXFLAGS ) ) )
111
- CXXFLAGS += $(XRT_CXXFLAGS )
112
- endif
113
-
114
121
# Inclue Required Host Source Files
122
+ ifeq ($(ps_on_x86 ) , on)
115
123
HOST_SRCS += $(XFLIB_DIR ) /L2/src/sw/cgSolver/test_cgSolver_gemv_jacobi.cpp $(XFLIB_DIR ) /../blas/L2/src/xcl2/xcl2.cpp
116
124
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
117
125
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
118
126
CXXFLAGS += -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
119
138
120
139
EXE_NAME := host.exe
121
140
EXE_FILE := $(BUILD_DIR ) /$(EXE_NAME )
@@ -251,11 +270,6 @@ $(EMCONFIG):
251
270
emconfigutil --platform $(XPLATFORM ) --od $(BUILD_DIR )
252
271
# ############################# Preparing sdcard folder ##############################
253
272
ifneq ($(HOST_ARCH ) , x86)
254
- ifneq (,$(findstring zc706, $(PLATFORM_NAME ) ) )
255
- K_IMAGE := $(SYSROOT ) /../../uImage
256
- else
257
- K_IMAGE := $(SYSROOT ) /../../Image
258
- endif
259
273
RUN_SCRIPT := $(BUILD_DIR ) /run_script.sh
260
274
$(RUN_SCRIPT ) :
261
275
rm -rf $(RUN_SCRIPT )
@@ -271,7 +285,7 @@ endif
271
285
@echo './$(EXE_NAME) $(PKG_HOST_ARGS)' >> $(RUN_SCRIPT)
272
286
@echo 'return_code=$$?' >> $(RUN_SCRIPT)
273
287
@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)
275
289
@echo 'else' >> $(RUN_SCRIPT)
276
290
@echo ' echo "INFO: TEST PASSED, RC=0"' >> $(RUN_SCRIPT)
277
291
@echo 'fi' >> $(RUN_SCRIPT)
@@ -289,23 +303,28 @@ SD_DIRS_WITH_PREFIX = $(foreach sd_dir,$(DATA_DIR),--package.sd_dir $(sd_dir))
289
303
PACKAGE_FILES := $(BINARY_CONTAINERS )
290
304
PACKAGE_FILES += $(AIE_CONTAINER )
291
305
SD_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
294
307
@echo " Generating sd_card folder...."
295
308
mkdir -p $(SD_CARD )
296
309
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)
301
314
@echo "# ## ***** sd_card generation done! ***** ###"
302
- vck190_dfx_hw := true
303
315
endif
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
304
320
endif
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)
307
325
@echo "# ## ***** sd_card generation done! ***** ###"
308
326
endif
327
+ endif
309
328
310
329
.PHONY : sd_card
311
330
sd_card : $(SD_CARD )
@@ -329,7 +348,7 @@ ifeq ($(HOST_ARCH), x86)
329
348
330
349
else
331
350
@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
333
352
grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1
334
353
335
354
endif
@@ -340,24 +359,32 @@ ifeq ($(HOST_ARCH), x86)
340
359
LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
341
360
XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS)
342
361
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
+
343
367
else
344
368
@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
346
370
grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1
347
371
372
+ endif
348
373
endif
349
374
endif
350
375
# hw
351
376
ifeq ($(TARGET ) , hw)
352
377
ifneq (,$(findstring aws-vu9p-f1, $(PLATFORM_NAME ) ) )
353
- ifneq ( $( JENKINS_INTERNAL_BUILD ) , 1 )
378
+ ifeq (, $( wildcard $( BUILD_DIR ) /cgSolver.awsxclbin) )
354
379
$(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"
355
380
else
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))
358
384
359
385
endif
360
386
else ifeq ($(HOST_ARCH), x86)
387
+ LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \
361
388
$(EXE_FILE) $(HOST_ARGS)
362
389
363
390
else
@@ -391,12 +418,11 @@ cleanh:
391
418
392
419
cleank :
393
420
-$(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.*
397
422
398
423
cleanall : cleanh cleank
399
424
-$(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
400
425
-$(RMDIR ) $(CUR_DIR ) /Work $(CUR_DIR ) /* .xpe $(CUR_DIR ) /hw.o $(CUR_DIR ) /* .xsa $(CUR_DIR ) /xnwOut
426
+ -$(RMDIR )
401
427
402
428
clean : cleanh
0 commit comments