Vivado2020.2 工程管理

概述

Vivado工程在编译过程中产生很多临时文件,备份文件非常之大,本文粗略说明了Vivado工程目录结构,及版本管理建议文件,并对自定义IP和源码加密进行了简要说明。

Vivado2020.2目录结构与版本管理

Vivado工程完整目录结构

project_name
project_name.xpr 工程文件
project_name.srcs 源码文件
constrs_1 xdc约束文件
sim_1
用户编写的仿真激励tb_xxx.v
new文件夹
import文件夹
sources_1
ip
xci文件
new新创建文件
import导入文件
bd
block_name
hdl
ui
ip
*.xci
project_name.tmp 源码文件
project_name.sim 仿真过程文件和仿真波形,结果等
project_name.runs 综合实现结果文件,bit流和ltx文件
project_name.ip_user_files
project_name.hw 调试存储的波形文件等
project_name.gen 生成文件,2020.2为方便工程管理,增加的文件
project_name.srcs 源码文件

对于20.2版本,对工程管理进行了优化,官方增加了.gen目录用于存放ip、block等生成的中间文件,为最小化工程存储容量,仅需要保存project_name.xpr 和 project_name.srcs 目录即可,其他文件均可重新生成。

为工程保存tcl脚本方法

保险起见,建议生成tcl脚本以便工程破坏后重建,打开Vivado工程,点击Project-Write Project tcl,保存tcl到工程目录,并将src/sdk目录与tcl文件一同压缩备份。

工程复位方法

工程复位是官方提供的一个tcl脚本指令:reset_project,执行后会将工程编译生成的过程文件/最终文件全部清空,复位后备份文件很小,但还原时需要重新编译。

总结

所有版本:

  1. 均可保存tcl脚本,并需要连同备份src目录,否则还原报错,实际占用空间没有有效减少,
  2. 工程复位之后占用空间小,但使用时需要重新编译,建议可以对关键文件进行单独备份
  3. 全部工程备份占用磁盘空间,但还原起来很方便

2020.2版本:

  1. 仅需备份xpr工程文件和src目录即可

自定义IP及建议发布文件

3种方式:

  1. IP管理器创建IP(在具有AXI接口的IP建议使用该工具创建IP)
  2. IP管理器导入某个目录(导入源文件目录和工程目录不在同一位置,引用混乱,且无法仿真,不建议使用)
  3. 推荐:打包RTL工程

打包RTL工程流程

  1. 按正常流程创建Vivado工程,工程目录结构与普通工程相同
  2. 使用“工程打包”命令进行IP打包即可
  3. 发布IP(除sources_1和sim_1目录外,另在IP_name.srcs目录增加了xgui目录和component.xml文件需一并发布)

自定义IP使用注意

  1. 在使用了自定义IP的工程中,需要重构工程时,需保证用户IP资源中的SRC目录内相关文件完整可访问,否则编译会报告丢失文件
  2. 在使用了自定义IP的工程中,自定义IP目录结构与官方IP目录结构一致(2020.2)

IP加密

3种方式

  1. 推荐:IP源码加密
    采用IEEE-1735加密源码的方式可实现知识产权保护,Vivado在2016以后的版本能够支持,但需要EncryptedWriter_v2的Lic,目前还未找到该lic,详情参考:UG1118
  2. edif网表
  3. DCP网表

DCP网表

目前网表加密仍是切实可行的加密手段,具体方法如下:

  1. 将需要生成DCP的模块设置为顶层,打开综合设置,在more option中填入:-mode out_of_context,表示综合模块不含IObuf
  2. 删除所有约束文件,我直接重建一个临时工程,不含任何约束,只有待加密代码,生成完删除即可
  3. 综合工程,完成后在:工程名.run\synth_1找到与顶层模块同名的DCP文件即可
  4. 为保证DCP被正常调用,其内部使用的IP需要设置为Global模式,并在综合完成后,打开综合设计,在tcl中输入:write_checkpoint -force d:/xx/xx.dcp

总结

  1. 不论用edif网表或者dcp网表文件均不支持定制参数,只能作为综合后的网表来进行调用,与ip使用方式差异太大,因此建议公司内部采用源码IP进行交流
  2. edif网表调用需要.v引用文件,且嵌套使用问题较多,不建议使用
  3. DCP网表文件不能够支持在IP中调用,否则调用该IP的工程将提示找不到DCP对应的源文件
  4. 自定义IP内部可调用官方IP再封装
  5. 自定义IP内部不可使用DCP网表

测试工程

为进行测试,采用IP方式设计了一个呼吸灯的例子,呼吸灯测试工程,工程信息如下:

  1. 软件版本:Vivado2020.2
  2. 硬件平台:PYNQ-Z1
  3. 功能:实现呼吸灯,并可通过ps写寄存器控制呼吸等频率

主要测试了:

  1. block design添加IP
  2. 自定义IP
  3. 自定义IP嵌套IP
  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用另外,在vivado2020.2中,还进行了对工程管理的优化,增加了.gen目录用于存放生成的中间文件,可以最小化工程存储容量。只需要保存project_name.xpr和project_name.srcs目录即可,其他文件可以重新生成。此外,vivado2020.2还提供了两种封装形式,设计者可以选择修改封装文件或者采用只读模式并让vivado自动更新管理文件。这些改进和功能都可以帮助用户更方便地进行项目开发和仿真。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vivado2020.2 联合 Modelsim2019.2进行仿真](https://blog.csdn.net/jh323410/article/details/120340318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vivado2020.2输出hello world](https://blog.csdn.net/weixin_47988506/article/details/120684010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vivado2020.2 工程管理](https://blog.csdn.net/ai_ljh/article/details/108027066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值