首页 > 其他分享 >vivado IP package

vivado IP package

时间:2023-11-06 21:34:08浏览次数:41  
标签:文件 封装 package uart IP vivado v1 user axi

源码保存成网表(无ip)

新建对应芯片的工程(对应的vivado版本)

添加需要封装的模块文件。

顶层

将需要封装的模块设置为顶层模块。顶层文件一般不包含任何逻辑(封装后仅该文件可见,其他封装成网表文件.edf)

一般包含如下文件。例:

user_axi_uart_v1_3.v   //顶层文件
user_axi_uart_v1_3_S00_AXI.v 
uartbuf_v3_0.v 
fifo_async_d32_8b_ahead_v2_0.v
fifo_async_d32_8b_v2_0.v 
tb_uartbuf_v3_0.v  //测试文件

总线

需要axi总线时,一般新建ip package时选择,会生成例子,在里边修改。一般情况下使用之前的代码就可以,如果vivado版本变化时可能会导致总线部分信号不识别,就需要新建ip package了。

综合待封装模块

-no_iobuf

vivado综合时会默认将输入输出端口添加buffer缓存,而封装的模块大多都是用在一个大的模块的内部,综合不能添加iobuf,在ISE的综合选 项中有-iobuf选项而在Vivado中该选项是隐藏的,可以在综合设置窗口的Options下面最后一 项 More Options一栏写入“-no_iobuf”,然后综合即可。类似在ISE的综合选项中去掉-iobuf选项。

-flatten_hierarchy

在设置选项的综合设置中选中打平整个设计,防止别人看到模块层次。(settings->Synthesis->Options,-flatten_hierarchy*设置成full)

生成.edif网表文件

打开综合后的设计:在Flow Navigator中点击“Open Synthesis Deisgn”

在TCL Console中输入:“write_edif /path/xx.edif” 。特别注意:路径分隔字符为“/”(得到的网表文件为user_axi_uart_v1_3.edif)

write_edif /path/user_axi_uart_v1_3.edif

在TCL Console中输入

a)导出空壳引脚描述文件: write_verilog -mode synth_stub 自定义目录/da1_gen.v

特别注意:路径分隔字符为“/”

write_verilog -mode synth_stub 自定义目录/da1_gen.v

b) 导出综合后的网表文件:

若不含Xilinx IP则可通过如下命令生成edf文件:

write_edif 盘符目录/ da1_gen.edf

若含Xilinx IP则需通过如下命令生成edf文件:

write_edif -security_mode all 盘符目录/ da1_gen.edf
write_verilog -mode synth_stub uartbuf_v2_3.v
write_edif -security_mode all uartbuf_v2_3.edf

建立wrapper

如果顶层文件包含逻辑,那么需要建立一个与待封装模块同名的.v文件,该文件只描述该模块的接口。

调用

将user_axi_uart_v1_3.v和user_axi_uart_v1_3.edif文件组成文件夹user_axi_uart_v1_3,添加到需要调用的工程中,然后直接对user_axi_uart_v1_3模块进行例化即可。

IP
	user_uart_v1_3
		xgui
		user_axi_uart_v1_3.tcl
		component.xml(文件结尾有目录信息和vivado版本信息,可删除)
	user_axi_uart.v
	user_axi_uart_v1_3.edf(文件结尾有目录信息,可删除)
	user_axi_uart_v1_3.v

封装成IP在block中使用(需对应芯片)

以下,未验证

带Xilinx IP的另外一种网表封装方式(不推荐)

上述步骤3后,在tcl命令窗口中执行如下命令:

   write_verilog -force abc_stub.v

该命令会将待封装模块中所有源码、IP都写入一个文件中,然后在新工程中仅需添加该文件即可。

IP package方法一(封装当前工程有fifo)

移除刚才封装的原设计文件,添加 abc_stub.v和abc.edf(注意封装一层)

img

img

img

IP package方法二(封装其他目录无fifo)

img

img

标签:文件,封装,package,uart,IP,vivado,v1,user,axi
From: https://www.cnblogs.com/streampute/p/16922969.html

相关文章

  • 人脸识别Mediapipe+Dlib实现1 : N式人脸匹配
    一、前言本来是想进行加速运行的。最后只快了两三帧哈哈哈哈。本次采用的方法是用Mediapipe进行人脸识别,配合使用Dlib进行特征提取以及特征向量转化。目前可以实现1:n式人脸匹配,随便改改就行n:m了,就是效率太低了实现原帖【---->点击这里<----】二、难点以及之后可继续学习......
  • UniPageControl1的Tab高度调整(69)
    .x-tab.x-tab-active.x-tab-inner-default{color:#FF0000!important;height:40px!important;line-height:40px}  ......
  • 【多校联考NOIP#12】比赛复盘
    A.星穹铁道读完题面就想到了\(O(n^2)\)的暴力。很好想,但是只有40分。观察到\(z_i=\pm1\),然而即便如此,我也没有得到有用的性质。(正解是用到这个性质的)然后我就暴力写了。正解的性质“最终在一个区间L,R内,初始也一定在一个连续段内”赛事没有想到。同时题解用了逆向思维,对......
  • eclipse中maven依赖的jar源码中文注释乱码解决
    通过maven下载源代码,在eclipse中浏览源代码时,发现中文注释为乱码的问题。eclipse默认编码造成的问题。可以通过以下方法解决:1.修改Eclipse中文本文件的默认编码:windows->Preferences->general->Workspace->Textfileencoding设置为UTF-82.修改JAVA源文件的默认编码:windows->P......
  • linux配置静态ip连接网络
    1.打开虚拟机,打开编辑选择虚拟网络编辑器。选择vmnet8进行编辑,将子网ip设置为192.168.88.0,将子网掩码设置为255.255.255.0,设置网关并且保存2.打开Linux终端输入cd/etc/sysconfig/network-scripts/vimifcfg-ens32编辑 ifcfg-ebs32文件将BOOTPROTO设置为static添加设置......
  • typescript 中的 Promise 类型定义中为何忽略了错误处理的类型?
    在TypeScript中的Promise类型定义中忽略了错误处理的类型是因为Promise类型的设计初衷是用于处理异步操作的结果,即成功或失败。当Promise成功时,它会返回一个值;而当Promise失败时,则会抛出一个错误。在Promise的类型定义中,只关注了成功的结果类型,而忽略了错误处理的类型......
  • JavaScript--Web API
    DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API。DOM是浏览器提供的一套专门用于操作网页内容的功能作用:开发网页内容特效和实现用户交互DOM树DOM节点节点是文档树的组成部分,每一个节点都是一个DOM对象,主要分为......
  • IP 数据包
    1.1字节=8BIT  这个请记住! 关于协议编号,稍微记一记:TCP/6,UDP/17ICMP-1IGMP-2TCP-6EGP-8IGP-9UDP-17IPv6-41ESP-40OSPF-89   2.待定 ......
  • 网络层协议及IP编址
     ICMP协议ICMP是InternetControlMessageProtocol的缩写,即互联网控制消息协议。它是互联网协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问......
  • NOIP 模拟12(NOIP A层联测25)
    100+100+30+100,T4自己写了Check最后一分钟发现Check锅了,赌了一发替换了部分分,赢!A.构造默认\(n\geq3,n\in\{2x+1,x\inN\},m\geq4\)。考虑构造rrrrr---yyyyy---xxxxx---yyyyy---rrrrr---yyyyy---xxxxx-----------这样有\(\dfrac{n-1}{2}\times(3m-4)\)个......