0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将包含XIlinx IP的用户模块封装成网表文件

FPGA之家 来源:FPGA之家 2023-05-18 11:12 次阅读

在Vivado TCL命令窗口中可以通过调用write_edif命令将用户自定义模块封装成.edf网表文件(类似ISE里的.ngc文件),但按照官方给出的参考用法生成的网表文件对自定义模块有种种限制,即待封装的模块不能含有Xilinx IP(少部分IP可以包含,如RAM IP、FIFO IP等),如DSP IP、MIG IP等,否则在编译时将报错,提示有未定义的黑盒。

那么如何将包含XIlinx IP的用户模块封装成网表文件,下面将给出详细步骤

1. 将待封装模块设置为top层
如下图所示,待封装模块为abc,则选中abc后右键,选择“Set as Top”,

a1ceb78c-f525-11ed-90ce-dac502259ad0.png

2. I/O Buffers设置
设置Settings–>综合 synthesis–>选项options下拉至最后一项:More Options,将其值设置为:

-mode out_of_context

a1d65bfe-f525-11ed-90ce-dac502259ad0.jpg
-mode out_of_context表示在该级不插入任何I/O BUFFERs,该选项类似ISE里在相应设置处不勾选I/O BUFFERs。
另外还可以在选项options中找到“-flatten_hierarchy”,将层级结构设置为“full”,
层级结构则可设置“-flatten_hierarchy”选项为“full”:“全”该选项指示工具把层级全面变平,只剩下顶层,保护IP的层级结构不被其他用户清楚查看。

3. 综合
运行综合synthesis,完成综合后,打开综合设计open synthesized design

4. 生成仅包含IO端口信息的empty module
打开综合设计open synthesized design后,在TCL命令窗口执行如下命令:
2017.4之前版本:

write_verilog -mode port F:/FPGA/abc_stub.v

2018.1之后版本:

write_verilog -mode synth_stub F:/FPGA/abc_stub.v

其中F:/FPGA/替换为要存放的路径,如未指明路径,则将存放到工程文件所在路径下。

5. 生成edf文件
重头戏来了,分两条:

若不含Xilinx IP则可通过如下命令生成edf文件:
write_edif F:/FPGA/abc.edf

若含Xilinx IP则需通过如下命令生成edf文件:
write_edif -security_mode all F:/FPGA/abc.edf

6. 新工程中网表文件调用
将上述生成的abc_stub.v和abc.edf添加到新工程中即可。

7. 带Xilinx IP的另外一种网表封装方式(不推荐
上述步骤3后,在tcl命令窗口中执行如下命令:

write_verilog -force abc_stub.v

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    126

    文章

    7814

    浏览量

    142781
  • Xilinx
    +关注

    关注

    71

    文章

    2164

    浏览量

    121089
  • 编译
    +关注

    关注

    0

    文章

    654

    浏览量

    32824

原文标题:使用Vivado将包含Xilinx IP的用户模块封装成网表文件(也适用不包含Xilinx IP的用户模块)

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    动态库封装成python模块的方法

    之前的文章 静态库封装成 python 模块中讲解了如何将静态库封装成 python 模块,静
    发表于 07-13 15:24 628次阅读

    XILINX IP核移植

    XILINX ISE 14.7,我想建立一个工程,里面要调用之前别人的包含SRAM IP核的模块,需要使用.v和.ngc文件,可是不知道那个
    发表于 04-18 14:21

    xilinx EDF已经综合过的文件怎样添加到Vivado工程中?

    xilinx EDF已经综合过的文件怎样添加到Vivado工程中?买了一个第三方的IP,给出了端口列表和核心
    发表于 09-07 11:34

    如何将CCS3.3工程中.C文件封装成OBJ库文件

    如何将CCS3.3工程中的.C文件封装成OBJ库文件
    发表于 11-02 09:41

    xilinx vivado 怎么封装包含一个ip核的自定义ip

    我写了一个缓存模块,里面包含有一个BlockRAM的IP核,现在想把这个缓存模块封装成我的一个自定义ip
    发表于 12-11 10:25

    怎么HDL源文件添加到Xilinx IP

    嗨,我必须在现有的XilinX IP(MIG)中添加一个新的verilog文件。我取消选中了IP属性中的“IS MANAGED”选项,并在顶部实例化了新
    发表于 04-21 06:38

    如何将常用接口封装成类似于NCNN的接口调用形式?

    如何将常用接口封装成类似于NCNN的接口调用形式?
    发表于 03-10 07:08

    基于Vivadoverilog代码封装成IP的步骤

    Xilinx的Vivado采用原理图的设计方式,比较直观适合大型项目,我们自己的code都需要封装成user IP。这里主要介绍怎么把多个关联管脚合并成类似bus的大端口。
    发表于 09-15 16:54 42次下载
    基于Vivado<b class='flag-5'>将</b>verilog代码<b class='flag-5'>封装成</b><b class='flag-5'>IP</b>的步骤

    Xilinx CORE生成器IP列表名称及说明详解

    本页包含通过LabVIEW FPGA模块可用的Xilinx CORE生成器IP的列表。LabVIEW通过Xilinx
    发表于 11-18 05:55 4802次阅读

    Vivado模块封装IP的方法介绍

    在给别人用自己的工程时可以封装IP,Vivado用封装IP的工具,可以得到像xilinxip
    的头像 发表于 06-26 11:33 7901次阅读

    如何将IP模块整合到System Generator for DSP中

    了解如何将Vivado HLS设计作为IP模块整合到System Generator for DSP中。 了解如何将Vivado HLS设计保存为
    的头像 发表于 11-20 05:55 3219次阅读

    Xilinx如何配置BSP工程包含的的公共模块

    Xilinx的SoC在业界应用非常广泛。对应的开发工具SDK也很成熟。在SDK里,每一个baremetal工程,对应一个BSP工程,它包含一些Xilinx提供的公共模块,比如硬件的驱动
    的头像 发表于 10-09 12:22 3567次阅读
    <b class='flag-5'>Xilinx</b>如何配置BSP工程<b class='flag-5'>包含</b>的的公共<b class='flag-5'>模块</b>

    如何将函数封装成库使用的方法介绍

    无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是核心的函数封装成库,下面结合例程说明具体实现方法。 1.库的建立 1).新建库工程 在CCS中,选择Project ->
    的头像 发表于 01-12 16:32 5291次阅读
    <b class='flag-5'>如何将</b>函数<b class='flag-5'>封装成</b>库使用的方法介绍

    关于如何将函数封装成库使用的方法介绍

    关于如何将函数封装成库使用的方法介绍
    发表于 10-28 12:00 1次下载
    关于<b class='flag-5'>如何将</b>函数<b class='flag-5'>封装成</b>库使用的方法介绍

    关于如何将函数封装成库使用的方法介绍

    在项目开发过程中,开发者出于保护核心算法的目的,希望部分核心代码封装起来,使得其他使用者无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是核心的函数封装成库,下面
    的头像 发表于 03-21 09:36 3937次阅读
    关于<b class='flag-5'>如何将</b>函数<b class='flag-5'>封装成</b>库使用的方法介绍