当前位置: 首页 > news >正文

VIVADO生成DCP和EDF指南


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源文件的加密压缩文件

  • DCP文件可以类似Verilog的使用方式,可以直接使用或者仿真。而edf文件,其特征就是不能进行功能仿真。
  • 此外,为什么DCP和edf在综合的时候要设置 -mode out_of_context 属性(就是和上下文分离)或者 -no_iobuf,就是因为iobuf只有port才有,而网表或者dcp是内部使用的。

此外,dcp需要注意的点:

  • 如果有parameter,则将值设置为常量
  • DCP中若有IP,需要设置为不常见,不然外部有相同名称的IP会出问题
  • 内部有三态设计,则使用iobuf原语

步骤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或者-no_iobuf
步骤3:设置要封装的代码为顶层。
步骤4:综合
步骤5:打开综合设计(打开之后再写脚本,不然会出错)

注意:如果设计里有三态,最好还是用iobuf原语

区别在于生成文件的脚本不一样

write_edif -security_mode all F:/FPGA/abc.edf

此外还需要生成stub:

write_verilog -mode synth_stub add_driver_stub.v

因为edf是不可以仿真的所以,还需要生成netlist_sim仿真网表(dcp就不需要生成仿真网表)

write_verilog -force -mode funcsim add_driver.v

总结:生成dcp和edf类似,都是在打开综合后进行命令生成,区别在于使用的命令不一样和edf要使用独立的仿真网表

遇到过小问题:我生成的edf文件在调用的时候报错block box,即drc inbb-3。解决这个的原因是edf文件必须和模块名一致才行。不过生成的stub文件倒是没有这个要求。(其实充模块分级也能看出,如果edf或者dcp没有生效,他就不会出现在调用模块的地方,而是出现在未使用的模块的层次里


http://www.mrgr.cn/news/89851.html

相关文章:

  • 结合DeepSeek实现智能巡检
  • 观察者模式和订阅发布模式的关系
  • VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)
  • VMware 和本机(Win10)安装共享文件
  • 计算机的错误计算(二百二十二)
  • 大模型训练_硬件微调知识增强
  • 【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)
  • C++开发(软件开发)常见面试题
  • Mysql知识梳理(数据库的锁梳理,Mysql优化)
  • Android13-系统服务大管家-ServiceManager进程-启动篇
  • 【从零开始系列】DeepSeek-R1:(本地部署使用)思维链推理大模型,开源的神!——Windows / Linux本地环境测试 + vLLM / SGLang远程部署服务
  • C# winforms 使用菜单和右键菜单
  • TaskBuilder低代码开发项目实战:项目简介
  • 2、k8s的cni网络插件和基本操作命令
  • 使用git commit时‘“node“‘ 不是内部或外部命令,也不是可运行的程序
  • JAVA安全—FastJson反序列化利用链跟踪autoType绕过
  • Android原生开发问题汇总
  • VMware下Linux和macOS遇到的一些问题总结
  • π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当
  • idea——IDEA2024版本创建Sping项目无法选择Java 8
  • aliyun 的 ip 设置方法
  • 定时任务单线程消费 redis 中数据导致消费能力不足
  • DeepSeek本地化部署
  • mongodb 使用内存过大分析
  • 学习笔记:机器学习中的数学原理(一)
  • 均方根层标准化(RMSNorm: Root Mean Square Layer Normalization)