FPGA_动态功能切换_DFX RTL工程流程
接上一篇UltraScale DFX流程,本篇为RTL project流程
私人日记-1
私人内容,请自重
兔言兔语——2
一些乱写的东西,作个留念
乱七八糟的句子
1
那一刻你的心里有一场海啸
你安静地站在那里
没有人知道
2
有朋自远方来,虽远必诛!
邹忌修八尺有余,而形貌昳丽,中通外直,不蔓不枝,香远益清,亭亭净植
大圣归去
瑶池自饮闲愁,灵霄踏碎离忧
五行山下遇江流。
道是西游,成佛何游,
梦里琴奏。菩提陋
三更时候,一樽酒,
跪守柴门只等笑无由。
痴猴怎甘心羞,
老祖却只眉皱,
越水三秋,齐天妄想依旧。
尝登七楼,兜宫火苗不休。
谁系一叶扁舟,
浮沉渡口。
梦归园
人满巷,本无伤。
听寂静喧哗,看空空车马。
院中一点,梦归故园。
曾言妖伪,今思还谁?
仗剑旧友丛中戏,杆头新朋凄凄呖。
驾鹤故人名楼憩,愿为知己君无意。
紫藤枯枝影摇,枝头败叶冷笑。
满地残花无人扫,不期潇湘思野草。
冰雨侵寒屐,东风何处觅。
檐下数细雨,薜荔空自诩。
淡酒怎解满杯愁,木也飗飗,风也飗飗。
聒碎归想,惊洒孟汤。
恍惊起,孑身空巷。
FPGA_动态功能切换_UltraScale 基本 DFX 流程
UltraScale 基本 DFX 流程。目前动态可重构(Partial Reconfiguration) 已经更名为DFX(Dynamic Function eXchange, 动态功能切换),方便软件工程师也能更容易理解这个Feature.
本流程介绍 UltraScale™ 和 UltraScale+™ 器件的基本动态函数交换 (DFX) 流程。首先,您将使用脚本单独综合静态模块和每个可重新配置的设计模块变体。然后在 IDE 中,您将使用 Pblock 约束可重配置模块 (RM) 的位置并实现设计的初始配置。接下来,您将通过锁定设计的静态部分、使用变体更新可重新配置模块以及重新运行实现来实现替代配置。最后,您将验证每个实现的 RM 是否与设计的静态部分兼容,如果兼容,则生成比特流。
一、解压例程
根据ug947文档提示在赛灵思官网下载例程压缩包,定位到 \led_shift_count_us 文件夹为UltraScale系列例程,在2020.1版本中仅支持vcu118,在2022.1版本中新增了支持。需要注意的是例程是为KCU105, VCU108, KCU116 ...
FPGA_PR_1app
本篇主要是部分可重构的应用,暂时搁置,看到提醒我填坑 ^_^
FPGA_部分可重构技术_0介绍
本篇主要是FPGA中部分可重构技术学习笔记,第0篇。内容主要参考赛灵思官方文档ug909.ug947等,部分翻译可能存在问题,还请指正。这一部分主要为Partial Reconfiguration(PR)的介绍
在减少尺寸、重量、功率和成本的同时,部分可重构技术使得一些新的FPGA设计成为可能。
一、专业名词
自底向上综合(Bottom-Up Synthesis)
在Vivado中,自底向上综合指的是脱离上下文的综合(out-of-context synthesis).OOC综合为每个OOC模块生成一个单独的网表(或DCP),并需要进行部分重构,以确保没有在模块边界上进行优化。在OOC综合中,顶层(或静态)逻辑与每个OOC模块的黑盒模块定义一起合成。
配置(Configuration)
配置是一个完整的设计,对于每个可重构分区都有一个可重构模块。在部分重新配置FPGA项目中可能有许多配置。每个配置都会生成一个完整的BIT文件,以及为每个可重构的模块(RM)生成一个部分的BIT文件。
配置帧(Configuration Frame)
配置帧是FPGA配置内存空间中 ...
Vitis-AI 编译使用minist解读
由于TVM框架目前未找到合适的方法部署神经网络(pytorch框架)在FPGA上,故想要单独尝试Vitis-AI编译网络流程。一下是官方的以手写数字识别的vitis-ai pytorch流的指导。记录执行过程并分析。
整体的flow如下图所示:
首先利用数据集训练得到模型文件,然后用校准数据和模型共同输入到量化器中,然后编译生成的.xmodel得到可以再FPGA上运行的.xmodel文件。最后在目标FPGA平台上使用生成的.xmodel模型文件。
一、训练
该脚本将执行 CNN 的训练,并将训练的浮点模型另存为 ./build/float_model 文件夹中的 .pth 文件。即f_model.pth
# folders
export BUILD=./build
export LOG=${BUILD}/logs
mkdir -p ${LOG}
# run training
python -u train.py -d ${BUILD} 2>&1 | tee ${LOG}/tra ...
TVM编译模型(yolov3_tf的例子解读)
本篇主要记录一下TVM编译yolov3_tf模型的例子,FPGA开发板:zcu102
一、主机前置环境安装
即setup_custom_yolov3.sh这个脚本,下面是详细内容,部分文件以及git仓库是我预先下载好的,以cp取代下载。下面的脚本主要就是:下载了yolov3_coco.tar.gz(即checkpoint文件),解压至checkpoint文件夹。然后利用convert_weight.py将相关权重文件转换为pb格式。使用freeze_graph.py将模型文件和权重数据整合在一起并去除无关的op。最后将整合的tf模型转换为ONNX格式(如代码块后的图所示)
. $VAI_ROOT/conda/etc/profile.d/conda.sh
conda activate vitis-ai-tensorflow
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/bin/python3.6 -m pip insta ...
TVM编译模型(tf的例子解读)
本篇主要记录一下TVM编译一个使用tf框架模型的例子,FPGA开发板:zcu102
一、流程记录
需要注意的是,显然(我就不知道) https://tvm.apache.org/docs/how_to/deploy/vitis_ai.html TVM官方这里给的流程,不是完整脚本,只是一个介绍,完整Py脚本可以在编译模型的相关网页最下面下载得到。
过程跟着 https://github.com/Xilinx/Vitis-AI/blob/1.4/external/tvm/docs/compiling_a_model.md 这个走。
运行容器镜像:./docker_run.sh tvm.ci_vai_1x
进入tf虚拟环境
进入example文件夹
编译生成对应目标的文件 python3 compile_mxnet_resnet_18.py “DPUCZDX8G-zcu102”
最后一个参数指DPU target ID 参照: https://github.com/Xilinx/Vitis-AI/blob/1.4/external/tvm/README.md#dpu ...
TVM环境搭建
本篇主要记录一下TVM环境搭建过程,FPGA开发板:zcu102
一、主机环境搭建
大部分的流程跟着官方文档:https://tvm.apache.org/docs/how_to/deploy/vitis_ai.html, 这篇的内容是利用Vitis-AI环境去搭建安装VTM。这里重点记录一些需要注意的地方。
1.docker相关
1.1 docker容器拉取
利用docker去pull官方的container(容器)的时候可以换源来加速(由于要下载的内容较多,科学上网中途可能因为安全问题被断开连接)。daocloud的加速教程:http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox
1.2 GPG ERROR
GPG error: https://apt.kitware.com/ubuntu bionic InRelease:
The following signatures couldn't be verified because the public k ...