平台与材料

  • 一个写好的工程,综合通过,不用布局布线,ISE或Vivado皆可。如果是ISE,需要在properties里取消选中 iobuf 。这样就只能被当做内部模块调用了。
  • Vivado

步骤

打开Vivado,创建一个工程
Tools -> Create or package IP
里面有三个选项,分别是打包本工程,打包本工程的一个Design,打包一个目录下的工程。
一般会选第三个
在该目录下,应该有一个Vivado或者ISE工程,综合通过了的。
选择完打包的目录后,选择Automatically select top module。
一般都能选择到正确的top module,如果选错了,先查看文件是否全部导入,如果全部导入了还选错顶层模块,那就右键手动set as top。
这个时候在右上侧的代码视窗里应该出现了配置IP核的选项,有好几种,慢慢选,完了在最后一栏检查有没错漏,然后点package IP。
然后IP就生成好了,在Block Design的原理图视窗右键add IP,就能找到你刚刚打包的IP了。

官方解释:

Description

There is a black-box submodule in the design which is fed with an EDIF/NGC netlist. The following errors and warnings are issued during Translate:

"ERROR:NgdBuild:770 - IBUF 'b_IBUF' and IBUF 'b_ibuf' on net 'b_IBUF' are linedup in series. Buffers of the same direction cannot be placed in series.
WARNING:NgdBuild:463 - input pad net 'b_IBUF' has an illegal input buffer
ERROR:NgdBuild:925 - input net 'b_IBUF' is connected to the incorrect side ofbuffer(s):
pin O on block b_IBUF with type IBUF
ERROR:NgdBuild:924 - input pad net 'clk_BUFGP' is driving non-buffer primitives:
pin C on block h with type FDR, pin C on block g with type FD, pin O on block clk_BUFGP/BUFG with type BUFG
ERROR:NgdBuild:809 - output pad net 'e' has an illegal load:
pin I1 on block Mxor_g_xor0000_Result1 with type LUT2
ERROR:NgdBuild:455 - logical net 'h' has multiple driver(s):
pin Q on block h with type FDR, pin PAD on block h.PAD with type PAD"

How can I resolve these errors?

Solution

These errors are issued because the submodule EDIF/NGC netlist contains IBUFs/OBUFs. XST also adds IBUFs and OBUFs to the top level, so that they are lined up or the pads are driving/being driven by non-buffer components.

When an EDIF/NGC netlist is used as a submodule of another design, the following conditions must be met:

  • If the input/output ports of the submodule are connected to the top module ports directly, like port1in the following figure, the IBUFs/OBUFs can be put in the submodule,but theXST property "Read Cores"has tobe checked. Then,XSTwill read the netlistin the project directory or a location specified in "Cores Search Directories" and will not add extra IBUFs/OBUFs on these top level ports.
  • If theinput/output ports of the submodule are NOT connected to the top module ports directly, like port2 inthe following figure, the IBUFs/OBUFs must not be put in the submodule.

The following are some solutions to this problem.

  1. Disable IBUF/OBUF insertion when you generate the submodule netlist. Add all IBUFs/OBUFsto the top level.

    • For XST, go to Synthesis Properties -> Xilinx Specific Options -> uncheck "Add I/O Buffers"
    • For Synplify Pro, go to Implementation Options -> Device tab -> check "Disable I/O Insertion"
  2. Selectively disableIBUF/OBUF insertion onthe input/output ports that are NOT connected to the top module ports directly.
    • For XST, use "buffer_type" constraint. Please refer to XST User Guide.
    • For Synplify Pro, refer to (Xilinx Answer 4508).
  3. If theIBUF/OBUFs are instantiated in the submodule, disablingIBUF/OBUF insertiondoes not remove the buffers from the submodule. If this is the case, remove theIBUF/OBUFs instantaiation from the submodule and instantiate them in the top level.

如何将自己写的verilog模块封装成IP核(一)相关推荐

  1. 如何将自己写的verilog模块封装成IP核(二)

    =======================第一篇======================= 如何将自己写的verilog模块封装成IP核 将你的设计制作成BlackBox,也就是网表文件,这样 ...

  2. bufg和bufgp_如何将自己写的verilog模块封装成IP核(一)

    平台与材料 一个写好的工程,综合通过,不用布局布线,ISE或Vivado皆可.如果是ISE,需要在properties里取消选中 iobuf .这样就只能被当做内部模块调用了. Vivado 步骤 打 ...

  3. [转]ISE中如何将自己的verilog源代码.v或VHDL源代码.vhd封装打包成IP核?

    =======================第一篇======================= 如何将自己写的verilog模块封装成IP核 将你的设计制作成BlackBox,也就是网表文件,这样 ...

  4. ISE中如何将自己的verilog源代码.v或VHDL源代码.vhd封装打包成IP核?

    =======================第一篇======================= 如何将自己写的verilog模块封装成IP核 将你的设计制作成BlackBox,也就是网表文件,这样 ...

  5. ISE中将Verilog封装为IP核的方法

    第一步:新建一个工程A 添加需要封装成IP核的代码到工程A中 第二步:属性设置 Synthesis-->Properties-->Xilinx Specific Options 把-iob ...

  6. 使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(上)

    前面一篇文章介绍了Xilinx FPGA平台下如何封装用户的源代码,形成网表文件的操作教程,具体见: 使用Vivado将包含Xilinx IP的用户模块封装成网表文件(也适用不包含Xilinx IP的 ...

  7. 使用Quartus将用户模块封装成网表文件:Quartus17.0及之前版本.qxp文件、Quartus17.1及之后版本.qdb文件(下)

    Xilinx FPGA平台下如何封装用户的源代码,形成网表文件的操作教程,具体见: 使用Vivado将包含Xilinx IP的用户模块封装成网表文件(也适用不包含Xilinx IP的用户模块) Alt ...

  8. verilog基础篇RAM IP核的使用

    在该页面中,我们去掉了q output port(去掉输出寄存器),并且添加了一个rden读使能信号,所谓rden读使能信号就是,当该信号为高电平时,我们才可以读取RAM IP核中的数据. 其余的页面 ...

  9. 【Verilog基础】ROM IP 核基础知识

    本小节为大家介绍一种较为常用的存储类 IP 核--ROM 的使用方法. ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器.其特性是一旦储存资 ...

最新文章

  1. Python 之 Matplotlib (二)figure
  2. 成功解决Python3版UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0x90 in position 614: ordinal not in
  3. 概率论-第一章 概率论的基本概念
  4. 删除Add-On表字段后不能激活
  5. linux为用户添加sudo权限
  6. 【Qt】Qt手动布局
  7. StringBuffer类和String 类的 equals 和 ==
  8. CentOS 7安装redis及php扩展
  9. ApacheCN 数据科学译文集 2020.8
  10. 移动办公之路的行业探索
  11. 如何和在桌面上添加计算机,怎么在电脑桌面上添加便签?
  12. 剑指offer1:二维数组中的查找
  13. 梯度下降法与正规方程的比较
  14. FLASH右键菜单的应用
  15. Leaflet--建设移动设备友好的互动地图
  16. 计算机教学提问的观课量表,观课议课|如何使用观察和记录量表
  17. Linux下进程通讯消息队列
  18. 开发者将《午夜凶铃》与 ARKit 结合,把贞子带到你面前
  19. java短信接口开发完整项目_java项目接入第三方短信接口
  20. Pytorch框架--知识图谱可视化展示

热门文章

  1. 控制车辆运行的19个神经元
  2. 一些可以让心灵安静的动图
  3. ADA4530静电计放大器
  4. 图书管理系统python源代码-Python实现图书管理系统
  5. 940m显卡 出现跳动的小点_启用4K 120Hz后NVIDIA安培显卡黑屏 原因找到:HDMI 2.1芯片BUG导致...
  6. java 反射 慢在那里_Java 反射到底慢在哪?
  7. @override代表什么意思_混凝土中C20、HZS180都代表什么意思?
  8. 检查压缩包是否损坏_修复损坏的gzip压缩文件之原理篇
  9. Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
  10. 怎么p出模糊的照片_李易峰打卡隐秘而伟大拍摄地,P可达鸭还原剧情,被调侃太灵性...