1.前言
每次新建工程,我们都需要做很多繁琐但重复的配置,
如vivado需要添加用户IP路径,添加源文件,IP,blockdesign,结合外部软件仿真等
vitis需要导入源文件,添加头文件路径,链接外部库,设置编译选项,堆栈大小,launch选项等等各项配置,配置更加繁琐,少配一步都需要很多时间来debug找问题
同时,在编译稍大些的vivado工程后,整个项目会占用几百M甚至上G的硬盘容量,直接打包工程进行项目管理会非常占用空间,工程直接复制给其他人使用也非常麻烦,还会有各种路径依赖问题和bug
针对以上问题,我做了一个脚本小项目,该项目实现了工程与源文件分离,使用makefile、tcl、python脚本进行配置,集成vitis工程创建,vivado工程创建,编译运行,vivado结合外部软件仿真于一体。旨在最大化减小构建工程与重构工程时的繁琐程度。
例如,需要将自己的工程项目上传至github进行工程管理,与别人共享工程时,只需要将项目的源码文件和脚本文件上传,极大的节省了空间,给别人使用也只需一行简单的命令即可快速重建工程。
目前,整个项目还没有进行通用性测试,仅适用于我的个人工程配置,如仿真软件现仅适配VCS,vitis工程创建目前支持的版本只有2024.2(其他版本还没测试过),待暑假电赛结束,我会对项目做进一步的整理和修缮,提高整体的通用性后再开源出来
2.快速使用
工程的整体目录结构如下
2.1工程目录讲解
.Xil文件是工程创建过程中产生的中间文件prj文件是由脚本自动创建的vivado工程tcl文件是项目所包含的所有脚本,可以不用管,除非有其他的配置需求,需要阅读并修改脚本代码usr文件内含有用户使用的所有源文件,用户在开发过程中使用的全部文件都在这里,包括bd文件(blockdesgin导出的tcl文件)、IP文件、src(verilog源文件)、src_vitis(vitis源文件,所有用户c语言代码全在该目录下),tb(添加的仿真文件),xdc(管脚约束文件)vitis是脚本自动创建的vitis工程sxa文件夹内包含了所有导出的.xsa文件
2.2快速测试
删除自动创建的工程文件夹prj和vitis
打开终端,输入make help,快速查找命令
根据测试要求,我们要创建vivado工程和vitis工程,并打开gui
2.2.1 vivado工程创建测试
vivado工程创建主要使用tcl脚本
参考make help,我们应该输入make set gui命令来创建并打开vivado工程
测试成功后的画面如下,vivado工程自动创建并打开
2.2.2 vitis工程创建测试
vitis工程创建主要使用python脚本(有一说一,python真好用)
参考make help,我们应该输入make setv guiv命令来创建并打开vitis工程
测试成功后的画面如下,vitis工程自动创建并打开,可见usr文件夹内的src_vitis文件夹被完整的导入工程中,同时也自动编译成功
3.如何创建自己的工程?
3.1vivado配置
3.1.1添加源文件
usr/ip文件夹内添加IP的xci文件,脚本会自动递归遍历 添加路径下的所有.xci后缀IP文件
usr/src和usr/tb文件夹内添加所有要用到的源文件和仿真文件,如下所示,脚本会自动递归遍历 添加路径下的所有.v、.sv和.vhd后缀源文件
usr/bd文件夹内添加blockdesign导出的tcl文件,创建工程后会自动复现原来的blockdesign
复现后效果
blockdesign导出方法,工程内打开blockdesign,点击File->Export->Export Block Design即可
usr/xdc文件夹内添加对应的管脚和时序约束文件
3.1.2makefile脚本配置
打开工程下的makefile文件
如上图所示,可以对项目的工程名,器件,顶层编译模块、顶层仿真模块、目标约束文件和用户IP路径 进行配置
其中工程名、器件选择和用户IP路径 必须在vivado工程创建前就设置好
顶层编译模块和目标约束文件在需要自动编译下载工程时设置,顶层仿真模块在需要仿真时设置
3.2vitis配置
3.2.1添加源文件
将需要的c文件添加到usr/src_vitis文件夹下,vitis创建工程时会将整个src_vitis文件全部导入
3.2.2makefile脚本配置
打开工程下的makefile文件
vitis可配置参数较多,
- vitis_spacename:工作区名字,该参数决定vitis工程文件夹的名字,以满足需要建立不同工作区的需求
- platform_name:platform名称
- app_name:app名称
- xsa_dir:xsa文件路径
- stack_size:栈大小设置
- heap_size:堆大小设置
- template:创建app工程时使用的内置模板,默认empty_application(空工程)
- user_link_libraries:需要链接的外部库,本例链接了c语言math标准库和之前移植好的fftw静态库(fftw移植教程详见vitis2024移植FFTW库)
- inlude_dir:添加c语言头文件的路径
4.注意事项
创建vitis工程时的注意事项
- 第一次创建会有点慢,因为要对platfom和app进行一次编译,后续如果创建另外的app,脚本会判断是否已经创建过platform,若已经创建过,则只编译一次新创建的app,速度会快很多。
- 若已经创建了一次app,后续还要再创建另一个app,请记得在makefile脚本下修改app名,脚本会自动判断两次的app工程名是否相同,若相同则报错退出,这么做为了防止手残或者忘记在makefile脚本中更改需要配置的app名,因为每次新建app都会导入
usr/src_vitis目录下的所有源文件,若手残不小心重新创建工程,那之前写的代码就都芜了。若确定需要创建并覆盖原来的app工程,请做好源码备份后手动删除工程文件夹后再创建。










Comments NOTHING