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
Vivado UCF转XDC表格是指将Vivado设计工具中使用的用户约束文件(UCF)转换为Xilinx Design Constraints(XDC)文件的过程。UCF和XDC是Xilinx FPGA设计中指定引脚约束和其他各种约束的文件格式。 UCF是Xilinx旧版设计工具ISE中使用的约束文件格式,而XDC是Vivado工具中使用的新版约束文件格式。由于Vivado取代了ISE作为Xilinx的主要FPGA设计工具,因此UCF到XDC的转换成为了一种常见的需求。 UCF和XDC的语法和选项有一些区别,需要进行一定的调整和转换。转换UCF到XDC可以通过以下步骤完成: 1. 打开Vivado设计工具,并在设计工程目录中创建一个新的XDC文件。 2.Vivado的Constraints语法中,将UCF中的约束语句逐行复制到XDC文件中,并进行一些必要的调整和移除过时的语法。例如,针对引脚约束,需要将"NET"关键字替换为"set_property PACKAGE_PIN"。 3. 检查所有约束语句,确保其在XDC语法中是有效的。如果有任何参数或语法错误,需要对其进行调整。 4. 检查XDC文件中是否有明确定义的引脚映射。如果没有,需要手动为每个引脚添加映射。例如,使用"set_property IOSTANDARD"和"set_property PACKAGE_PIN"指定引脚的标准和物理位置。 5. 根据需要,可以添加其他约束语句,如时钟约束、时序规范等。 在转换过程中,需要注意UCF和XDC之间的显著差异,确保所有约束都正确转换和安排。完成后,保存XDC文件,并在Vivado中重新运行综合和实现等过程以应用新的约束。 总的来说,将Vivado UCF转换为XDC表格需要一些手动的调整和对语法的熟悉。通过仔细审查每个约束语句,确保其在XDC中的有效性,可以成功地进行UCF到XDC的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值