基于Vitis Model Composer完成全流程AI Engine开发

描述

基于Vitis Model Composer进行AI Engine(AIE)开发,核心优势体现在AIE专属优化、开发流程简化、灵活的适配性、高效验证及量产适配等方面,具体如下:

专属优化的AI Engine库,降低基础开发成本:提供AIE专用DSPLib库,包含FFT、FIR等预制模块,适配AIE架构且同步开源生态,无需重复开发基础算法。

灵活的AIE代码导入方式,适配多样开发需求:支持AIE Kernel、Class Kernel、Graph三种导入形式,兼容缓冲区/流数据访问,适配不同开发场景。

简化的AIE专属开发流程,提升开发效率:在Simulink环境中直观搭建设计,支持中间信号查看与调试,降低开发门槛。

自动化代码生成,简化编程流程:一键生成ADF graph、Makefile、Testbench等代码,无需手动适配底层架构。

适配动态场景,配置高度灵活:支持Variable-sized Signals,可建模动态数据处理,支持自定义约束,灵活调整性能。

精准的AIE仿真与调试,保障设计正确性:支持功能与高精度仿真,快速验证设计正确性,确保算法与硬件特性匹配。

AI

01环境准备

Ubuntu 22.04

Vitis 2025.1(必须是选择Vitis完整安装流程,不能是Vivado ML Enterprise安装)

Vitis Model Composer

MATLAB R2024b

02获取Vitis_Libraries

 

git clone https://gitee.com/light007/Vitis_Libraries.git

 

03下载依赖文件

 

git clone https://gitee.com/qinzhusheng/vmc_duc.git

 

04启动Model Composer

 

#!/bin/bash
# 设置 Vitis 环境
source /tools/Xilinx//2025.1/Vitis/settings64.sh


# 设置 Model Composer 环境
source /tools/Xilinx/2025.1/Model_Composer/settings64.sh


# 设置 MATLAB 路径
export PATH=$PATH:/tools/MATLAB/R2024b/bin


# 启动 Model Composer
model_composer

 

上述的路径需要修改为实际运行环境的安装路径。

05在Simulink中创建空白模型

5.1 在MATLAB Command Window输入以下命令切换到工作目录,$WORK_PATH需替换为实际目录。

 

cd /$WORK_PATH/vmc_duc/lab

 

5.2 在MATLAB Command Window输入以下命令创建并打开空白模型。

 

new_system('duc_chain')
open_system('duc_chain')

 

按Ctrl+S保存到/$WORK_PATH/vmc/lab目录内。

AI

06添加模型初始化函数

6.1 回到duc_chain.slx,右键空白处,选择Model Properties,点击Callbacks窗口,点击InitFcn,在右侧的框口中输入下面的脚本:

 

PreprocIn0data= dataPreProc('data/input_sig_i0.txt');
PreprocIn1data= dataPreProc('data/input_sig_i1.txt');
PreprocOutdata= dataPreProc('data/output_adder.txt');

 

AI

6.2 点击OK完成设置。

这些模型初始化函数在设计更新或模拟运行时会自动调用dataPreProc.m filter配置脚本。

该filter配置脚本会设置以下内容:

Input 0模块的输入数据变量PreprocIn0data

Input 1模块的输入数据变量PreprocIn1data

Golden_Adder 模块的输出数据变量PreprocOutdata

07查看AI Engine library

按Ctrl+Shift+L打开Library Browser,展开AMD Toolbox,可看到AI Engine的模型library。

AI

AI Engine library包含:

用于导入Versal AI Engine使用的kernels和graphs

与FIRs、FFTs、Mixers和直接数字合成器相关的AI Engine DSP模块

08添加FIR Resampler Filter

8.1 依次展开AMD Toolbox>AI Engine>DSP>Buffer IO library,找到FIR Resampler Filter。

AI

8.2 按住左键将FIR Resampler Filter拖入到duc_chain.slx当中,双击进行配置,按图中红框部分进行修改,配置为一个3/2分数采样器,实际采样点数为71个。

Filter coefficients:

 

[-8,-15,2,27,38,-1,-67,-86,1,139,171,-2,-257,-309,2,443,522,-3,-724,-842,4,1144,1324,-4,-1789,-2078,5,2866,3402,-5,-5080,-6495,6,13412,27026,32762,27026,13412,6,-6495,-5080,-5,3402,2866,5,-2078,-1789,-4,1324,1144,4,-842,-724,-3,522,443,2,-309,-257,-2,171,139,1,-86,-67,-1,38,27,2,-15,-8]

 

AI

8.3 点击OK完成配置。

09添加三个FIR Halfband Interpolator blocks

9.1 依次展开AMD Toolbox>AI Engine>DSP>Buffer IO library,找到FIR Halfband Interpolator。

AI

9.2 按住左键将FIR Halfband Interpolator拖入到duc_chain.slx当中,重复三次添加三个FIR Halfband Interpolator,依次双击配置,配置如下:

AI

10添加Mixer

10.1 依次展开AMD Toolbox>AI Engine>DSP>Buffer IO library,找到Mixer。

AI

10.2 按住左键将Mixer拖入到duc_chain.slx当中,配置如下:

Input window size (Number of samples): 3072

Rounding mode: Round symmetrical to infinity

Saturation mode: 3-Symmetric

Phase Increment: 715827883

11添加PLIO

依次展开AMD Toolbox>AI Engine>Interfaces library,找到PLIO,按住左键将PLIO拖入到duc_chain.slx当中,双击修改如下配置:

AI

将各模块按下图连接。

AI

按住左键框选上面的所有blocks,复制并粘贴出另一信号通道,如下图所示:

AI

双击粘贴出来的Mixer,把Phase Increment修改为3042268501。

12从Reference_design_blocks内复制信号输入模块

在MATLAB Command Window输入以下命令打开本设计参考模块合集。

 

Reference_design_blocks

 

复制如下几个blocks到duc_chain.slx当中。

AI

这些模块主要是包含预定义的信号输入、用Simulink原生blocks搭建的对比模块、用于自定义AIE block的AIE Class Kernel以及相减对比结果的波形查看器。

修改粘贴出来的PLIO2 block的配置PLIO width(bits):64

13配置自定义AIE block的AIE Class Kernel

双击AIE Class Kernel打开配置窗口,按下图配置点击Import导入C++设计的AIE加法器Kernel。

AI

14完成所有模块的连接

把未连接的模块按如下示意分别连接信号输入和输出。

AI

AI

15添加Vitis Model Composer Hub block

Vitis Model Composer Hub block本质是个控制面板,用于控制系统与仿真参数、选择AMD芯片板卡型号以及调用代码生成流程。

只要Simulink模型包含AMD Toolbox的任一Block,就必须添加Vitis Model Composer Hub block,才能进行自定义代码生成和仿真。

15.1 依次展开AMD Toolbox>Utilities>Code Generation,找到Vitis Model Composer Hub block,按住左键将其拖入到duc_chain.slx当中。

AI

15.2 双击Vitis Model Composer Hub block打开配置窗口,点击右侧红框的按钮打开硬件平台选择窗口。

AI

15.3 选择platform窗口,下拉选择VCK190,点击OK关闭窗口。

AI

15.4 点击OK关闭Vitis Model Composer Hub block配置窗口。

16编译工程并运行仿真

16.1 按Ctrl+S保存工程,按Ctrl+D执行编译,等待编译完成。

AI

16.2 把仿真的停止时间设置为100,点击Run运行仿真。

AI

16.3 仿真结果,中间一个窗口波形是AIE仿真结果和Simulink对照组相减后的结果,可以从波形上看到基本为0,说明AIE仿真结果达到预期效果。

AI

17创建子系统并生成graph代码

17.1 按住左键选中如下的Blocks。

AI

17.2 按Ctrl+G将这些Blocks创建为一个子系统,如下图所示。

AI

17.3 双击上图蓝色部分,把子系统重命名为DUCchain,双击Vitis Model Composer Hub block打开配置窗口,点击Code Generation窗口,选中DUCchain,右侧窗口切换到Analyze,点击Analyzer按钮。

AI

17.4 随后会自动运行仿真、编译生成graph代码。

AI

17.5 完成后如下图所示,点击。

AI

17.6 生成的graph源代码在如下目录中。

AI

 

/$WORK_PATH/vmc_duc/lab/code/ip/DUCchain/src

 

AI

通过上述流程,可基于Vitis Model Composer完成从模型搭建、配置、仿真验证到代码生成的全流程AIE开发。借助其可视化设计与自动化工具链,能显著降低开发复杂度,提升设计效率与可靠性,为AIE应用的快速实现提供有力支撑。

 

 

关于安富利  

安富利是全球领先的技术分销商和解决方案提供商,在过去一个多世纪里一直秉持初心,致力于满足客户不断变化的需求。通过遍布全球的专业化和区域化业务覆盖,安富利可在产品生命周期的每个阶段为客户和供应商提供支持。安富利能够帮助各种类型的公司适应不断变化的市场环境,在产品开发过程中加快设计和供应速度。安富利在整个技术价值链中处于中心位置,这种独特的地位和视角让其成为了值得信赖的合作伙伴,能够帮助客户解决复杂的设计和供应链难题,从而更快地实现营收。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分