VIVADO生成DCP和EDF指南

devtools/2025/2/8 7:30:20/

VIVADO生成DCP和EDF


文章目录

  • VIVADO生成DCP和EDF
  • 前言
  • 一、DCP封装
  • 二、EDF封装


前言


详细步骤就不贴图了,网上一大堆

在Vivado中,常用的三种封装形式有三种:

● IP
● edif
● dcp

在下文之前,先看几个概念

  • out_of_context:和global相对,out_of_context就是将上下文分离,在综合的时候,只是将这个module作为一个整体,类似IP生成的时候,选择global就会将IP修改部分和未修改部分整合起来一起综合和优化,而out_of_context就只是将这一块或者修改部分进行综合和优化
  • -no_iobuf:将综合属性设置为这个,就是外部接口不会被优化为IOBUF,因为生成的DCP或者网表,一般是内部的接口,而IOBUF是外部PORT使用的。

一、DCP封装

DCP文件是Vivado独有的一种相当于FPGA设计中的HDL源文件的加密压缩文件

  • 注意这里的加密压缩文件可以理解为一个加密的Verilog文件。这里主要和edf网表文件做区分。
  • DCP文件可以类似Verilog的使用方式。而edf文件就是门级网表,其特征就是不能进行功能仿真。
  • 此外,为什么DCP和edf在综合的时候要设置 -mode out_of_context 属性(就是和上下文分离)或者 -no_iobuf,就是因为iobuf只有port才有,而网表或者dcp是内部使用的。

此外,dcp需要注意的点:

  • 如果有parameter,则将值设置为常量
  • DCP中若有IP,需要设置为不常见,不然外部有相同名称的IP会出问题

步骤1:将xdc disable;(我们在生成某些IP的时候,可以看到里面会有XDC和DCP,这里的DCP就会带有XDC的约束)
步骤2:设置综合属性为 -mode out_of_context
步骤3:设置要封装的代码为顶层。
步骤4:综合
步骤5:打开综合设计(打开之后再写脚本,不然会出错)

在TCL中输入命令(或者在GUI界面的FILE菜单栏找到checkpoint)生成以下文件:(因为dcp是压缩文件,所以可以直接类似Verilog直接使用)
dcp压缩文件(可仿真,可综合,可生成bit):

write_checkpoint add_driver.dcp

仅包含端口文件(仅仅是端口):

write_verilog -mode synth_stub add_driver_stub.v

或者生成仿真的网表文件:(只能进行功能仿真,不能被综合)

write_verilog -force -mode funcsim add_driver.v

生成网表的.v文件(可仿真,可综合,可生成bit):

write_verilog add_driver_netlist_v.v

其实在project_1.runs\synth_1路径下也可以找到顶层的DCP文件
对于同名的文件,但又只想做仿真,可以在文件general中设置为仅仅仿真
在生成bit流时,需要取消-mode out_of_context,否则会报错

二、EDF封装

EDF封装和DCP类似:区别在于EDF文件是不可以直接被用的,而是需要借助生成的.V文件
步骤1:将xdc disable;
步骤2:设置综合属性为 -mode out_of_context
步骤3:设置要封装的代码为顶层。
步骤4:综合
步骤5:打开综合设计(打开之后再写脚本,不然会出错)


http://www.ppmy.cn/devtools/157041.html

相关文章

基于深度学习的医疗器械分类编码映射系统:设计、实现与优化

一、引言 1.1 研究内容与方法 本研究旨在设计并实现一个基于深度学习的医疗器械分类编码映射系统,以解决医疗器械分类编码管理中存在的问题,提高医疗器械管理的效率和准确性。具体研究内容包括以下几个方面: 系统需求分析:深入研究国内外主流医疗器械编码体系,如中国的 …

stm32小白成长为高手的学习步骤和方法

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。STM32单片机自学教程 这篇博文也是一篇不错的入门教程,初学者可以看看,讲的真心不错。 英文好的同学&#xf…

互联网分布式ID解决方案

业界实现方案 1. 基于UUID 2. 基于DB数据库多种模式(自增主键、segment) 3. 基于Redis 4. 基于ZK、ETCD 5. 基于SnowFlake 6. 美团Leaf(DB-Segment、zkSnowFlake) 7. 百度uid-generator() 基于UUID生成唯一ID UUID生成策略 推荐阅读 DDD领域驱动与微服务架构设计设计模…

DeePseek结合PS!批量处理图片的方法教程

​ ​ 今天我们来聊聊如何利用deepseek和Photoshop(PS)实现图片的批量处理。 传统上,批量修改图片尺寸、分辨率等任务往往需要编写脚本或手动处理,而现在有了AI的辅助,我们可以轻松生成PS脚本,实现自动化处…

Debian安装Seafile

前言 Debian 无图形化界面通过 docker 安装 Seafile。我安装 Seafile12 没有成功,按照之前经验安装。 方法 安装docker 参考官方文档 Install Docker Engine on Debian。 设置 Docker’s apt repository. # Add Dockers official GPG key: sudo apt-get updat…

Elastic:为何它在技术领域备受瞩目

在当今大数据和云计算蓬勃发展的时代,数据的高效处理和分析成为了企业和开发者面临的关键挑战。Elastic 作为一款强大的开源搜索和分析引擎,凭借其卓越的性能和丰富的功能,在众多技术中脱颖而出,受到了广泛的关注和应用。它不仅改…

source 与 shell 之详解(Detailed Explanation of Source and Shell)

source 命令与 shell 变量 随着IC工具的升级迭代,不同项目使用到的 IC 工具版本可能会不一样。为保证 IC 工具版本和芯片项目的对应,需要使用 source 命令执行对应项目的环境变量设置脚本。那么,source 命令与一般的脚本执行命令&#xff0c…

unity学习32:角色相关1,基础移动控制

目录 0 应用商店 1 角色上新增CharacterController 组件 1.1 角色上新增CharacterController 组件 1.2 如果没有这个则会报错​编辑 2 速度 2.1 默认速度 2.2 修改速度为按时间计算 2.2 movespeed, 3 测试移动的代码 3.1 CharacterController 变量的声明…