当前位置:   article > 正文

Vivado2020.2 工程管理_vivado生成的.gen是干什么用的

vivado生成的.gen是干什么用的

概述

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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/163000
推荐阅读
相关标签
  

闽ICP备14008679号