AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)

在前一篇文章中我们介绍了如何创建一个包含PL/PSAIE三个domainVitis工程,接下来我们介绍一下如何编译该工程。
 
打开文件full_system_app_system.sprj,将Active build configuration设置为Emulation-HW。一旦设置成功,相应的其他三个应用的同名选项均变为Emulation-HW
 
图片[1]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[2]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[3]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[4]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
编译AIE Application
 
选择AIE Application,点击右键,选择Build Project,如下图所示。
 

图片[5]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

编译之后,我们可以用Vitis Analyzer进行分析,如下图所示。可以看到设计中包含两个kernel,这两个kernel分别运行在AIE Tile[24,0][25,0]上。同时还可以看到整个graph的两个输入和两个输出端口。

图片[6]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
编译PL Kernel
 
选择PL Application,点击右键,选择Build Project,如下图所示。需要说明的是在这个系统中3C/C++ kernel都和AI Engine Array相连,但这并不是设计准则。kernel只是需要在PL上实现的加速函数,因此,可以和AIE没有关系。
 
图片[7]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
PL的编译过程中,可以看到Vitis会使用V++工具,最终会生成.xo文件。每个kernel对应一个.xo文件,如下图所示。
图片[8]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

编译HW Link

 

如下图所示,选择HW Link Application,点击右键,选择Build Project。这一步在背后会调用Vivado

 

图片[9]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

v++会使用编译PL Kernel时生成的三个.xo文件和编译AIE时生成的libadf.a文件作为输入,最终输出XCLBIN文件,具体命令如下图所示。

图片[10]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[11]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
生成XCLBIN之后,我们也可以看到生成该文件的Vivado工程,工程名为prj.xpr,具体路径如下图所示。
 
图片[12]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
打开Vivado工程,查看其中的Block Design,可以看到AIE3PL Kernel的连接关系,如下图所示。
 
图片[13]-AIE(9)—创建一个包含PL/PS/AIE的Vitis工程(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
请登录后发表评论

    没有回复内容