如何将自己写的verilog模块封装成IP核

(2014-11-21 14:53:29)

标签:

财经

分类: 我的东东

=======================第一篇=======================

如何将自己写的verilog模块封装成IP核

将你的设计制作成BlackBox,也就是网表文件,这样别人看不到你的设计但是可以调用你的模块了。详细的参考信息如下:
1. 什么是BlackBox
- 一个大的设计中可以用到一系列网表文件作为输入的一部分而并不全部使用HDL文件。当综合这个大设计时综合器不需要知道这个网表文件是怎样实现的,而只需要知道它的输入输出接口就可以了。这样的网表就称为黑盒子,因为我们不需要看到它的内部情况。
- 通常付费IP都会以BlackBox的形式
2. 如何使用BlackBox
- BlackBox网表可以是EDIF或NGC文件。
- 每个BlackBox网表都需要有一个与之相对应的HDL文件来注明它的端口。这个HDL只说明BlackBox的端口信息,而不提供具体实现信息。这个只提供端口信息的HDL文件称为Wrapper。Wrapper的名字通常需要与BlackBox网表的名字相同。
- 在ISE工程中使用BlackBox时只需要将它的Wrapper添加到工程中。然后像普通的模块一样在其上层声明和例化就可以使用。
- BlackBox网表文件可以放在ISE工程目录中,也可以放在其他任意文件夹内。当不放在ISE工程目录时,需要在Translate属性中将Macro Search Path指向这个目录。多个目录使用"|"分割。
3. 如何制作BlackBox
- BlackBox只是普通网表而已。XST的综合结果就可以直接作为BlackBox使用。
- 通常BlackBox外部还会连接其他逻辑,所以BlackBox中一般不插入IOBUF。在XST属性中去除Insert IO Buffer的选项。

引自:http://www.cnblogs.com/youngfq/archive/2011/06/15/2081123.html

=======================第二篇=======================

【问】ISE开发套件能否将自己写的模块封装成ip?这里所说的IP是指类似于用core generator生成的IP格式。
若不能,是否还有其它的工具能将自己所写的模块封装成IP

【答】这个可以吧,你如果只是做成一个IP core用ISE里面的开发套件就行了,如果要接到xilinx的microblaze核或者是powerpc核上就要用XPS来生成

引自:http://www.eetrend.com/forum/100023865

=======================第三篇=======================

【问】ISE 中是否可以把自己代码封装成一个IPcore?

【答】使用PlanAhead 中的将你的设计转换为PBlock,然后加上约束条件再export 就可以了。以后你要用的话,只需要import 这个PBlock 就可以了。这样做的核是硬核。当然咯,你也可以使用.edif + .ncf 这样就是固核,如果你要求灵活性最高的话,就使用RTL + constraint 这样就是软核了。

引自:http://group.chinaaet.com/109/1729

=======================第四篇=======================

【楼主】请教把verilog代码封装成IP核

请教各位,怎么将自己写的verilog代码模块封装成网表型式的IP核呢?

【一楼】

Altera提供的方案为:封装成qxp文件 ,具体步骤如下:

1.需要创建一个Quartus II 顶层设计项目 并且确保该项目目标器件与该.qxp文件目标器件相同(或者说至少相同器件系列(在不包括布局布线信息前提下).

2.使用提供的端口信息实例这个设计模块;
3.在Porcessing Menu 上, 点击Start/Perform Analysis & Elaboration , 验证该设计的层次.
4.为这个设计模块实例创建一个design partition. Right-click the instance name in the Project Navigator, andchoose Set as design partition.
5.导入这个.qxp文件到相关的partition hierarchy. 如果你使用the Quartus II GUI, 则在Project menu,选择
Import Design Partition,select the partition for the design block, and browse to the .qxp file provided.

【二楼】谢谢!再问下对于xilinx的FPGA,在ISE上怎么实现呢?
【三楼】xilinx CORE Generate 在开始ISE design tools/tools里,没用过。。。楼主用完可以分享下经验
【四楼】将一个子模块单独综合后,会得到ngc文件或者edif文件。在调用模块的时候,仅需将.ngc 文件放在工程目录下。详细过程查阅xilinx官方手册。 附:常见文件类型说明 XCO: This file contains core options and parameters. EDN/NGC: This is the implementation netlist for the IP cores which output netlists. It is passed on to the Translate (NGDBuild) process. SYM: This schematic symbol is automatically generated for instantiating the IP in a schematic. VHO or VEO template files: These files are automatically generated for instantiating the IP in an HDL file. VHD or V simulation wrapper files: These files are provided for simulation of IP cores which output netlists. VHD or V source-code files: These files are the actual source-code required for both synthesis and simulation of IP cores which output source-code.

【五楼】今天试了试好像还挺容易的。 只要把将一个子模块单独综合,把综合属性里的“Add I/O Buffers”去掉,综合,生成的ngc网表再加上你自己做的一个wrapper文件(就是只有端口列表的.v或者.vhd文件),就可以调用了了。 wrapper文件里要注明: // XST black box declaration // box_type "black_box" // synthesis attribute box_type of sdram_top is "black_box" 不过要注意的是,如果代码里例化了I/O Buffer的话,去掉这个综合选项是不会将例化的buffer删除的。这种情况下,别人用你的IP的时候就要注意了,不能重复添加buffer。 详细的请参考:http://www.xilinx.com/support/answers/34771.htm

转自:http://forum.eepw.com.cn/thread/208146/1

=======================第五篇=======================
【楼主】求助:如何将自己写的verilog模块封装成IP核

自己写了一些verilog模块,想封装成IP核或者类似的黑盒,以防误改,也可以给别人用(但是不想让别人看到源码),请教有什么方法吗?

【一楼】好像是可以这么做的. 小版印象中,在ISE中做XST综合的时候,去掉"Insert IO Buffers",然后给别人一个ngc netlist和blackbox wrapper.

具体信息,你可以在xilinx的主页搜索 blackbox.应该有具体的方法参考.

【五楼】SuperX-man说的就可以实现。把综合选项里的“Add I/O Buffers”去掉,综合,生成的ngc网表再加上你自己做的一个wrapper文件(就是只有端口列表的.v或者.vhd文件),就可以交给别人用了。不过要注意的是,如果代码里例化了I/O Buffer的话,去掉这个综合选项是不会将例化的buffer删除的。这种情况下,别人用你的IP的时候就要注意了,不能重复添加buffer。
看看这个:http://www.xilinx.com/support/answers/34771.htm

转自:http://bbs.21ic.com/icview-201989-1-1.html

=======================第六篇=======================

【楼主】如何将自己写的VHDL/verilog模块封装成IP核?

看到之前的一个帖子,“把综合选项里的“Add I/O Buffers”去掉,综合,生成的ngc网表再加上你自己做的一个wrapper文件(就是只有端口列表的.v或者.vhd文件)”,不明白的是wrapper文件的格式是什么,哪位大侠给个例子看看,谢谢!

【一楼】就是把你综合网表时候的顶层文件加以修改就行了.
VHDL的话就是留下entity和一个空的architecture.
Verilog就是留下port.
然后把这个文件和综合出来的NGC文件放在同一目录下就行了.

【二楼】

ls正解。
具体原理是这样的:
Xilinx ISE中的综合工具XST在综合时候会将只有IOport的VHDL和verilog模块综合成一个blackbox。
在map和P&R的时候,xilinx的工具会在项目工程的根目录下找各个blackbox对应的ngc文件。如果找到,就替换掉blackbox,否则就报错。
所以想要封装成IP的话,一个是要不包含IO Buffer的ngc文件,用于Mapping和P&R,另一个就是仅包含IOPORT的verilog或VHDL文件,用于XST工具综合。但这两个文件的模块名称和IOPORT必须要一致

引自:http://www.eefocus.com/bbs/article_1103_175879.html

 

如何将自己写的verilog模块封装成IP核的更多相关文章

  1. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  2. 关于把RTL工程代码封装成IP时对define宏定义参数的处理

    在把RTL工程封装成IP的时候,如果工程中的代码中含有global include中定义的参数,则vivado不支持该参数文件的封装.出现IP_FLOW 19-4646的错误代码,解决方法: 1.在用 ...

  3. Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核

    Zedboard OLED Display Controller IP v1 介绍 Author:zhangxianhe 本文档提供了快速添加,连接和使用ZedboardOLED v1.0 IP内核的 ...

  4. Vivado使用技巧(二):封装自己设计的IP核

    由 judyzhong 于 星期五, 09/08/2017 - 14:58 发表 概述   Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原 ...

  5. Vivado使用技巧:封装自己设计的IP核

    概述   Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线.IP核一部分来自于Xilinx ...

  6. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  7. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

  8. python + selenium 模块封装及参数化

    模块封装 示例代码: baidu.py from time import sleep from selenium import webdriver driver = webdriver.Chrome( ...

  9. 把jQuery的类、插件封装成seajs的模块的方法

    这篇文章主要介绍了把jQuery的类.插件封装成seajs的模块的方法,需要的朋友可以参考下 注:本文使用的seajs版本是2.1.1 一.把Jquery封装成seajs的模块 define(func ...

随机推荐

  1. Java基础中的RMI介绍与使用

    今天在这边介绍一下Java基础中的rmi使用.其实rmi有什么样的使用场景呢?它跟webservice有什么区别呢?其实webservice主要是可以跨语言实现项目间的方法调用,而rmi只是java内 ...

  2. Alpha(4/10)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  3. Windows上搭建安卓的Java开发环境

    下载安装JDK path的系统变量增加值(示例): D:\Program Files\Java\jdk1.8.0_25\bin同理为名为classpath的系统变量增加值(示例:没有的话可以新建)D: ...

  4. 错误代码:0x80070032 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    错误分析: vs2010默认采用的是.NET 4.0框架,4.0框架是独立的CLR,和.NET 2.0的不同,如果想运行.NET 4.0框架的网站,需要用aspnet_regiis注册.NET 4.0 ...

  5. ;(function(){ //代码})(); 自执行函数开头为什么要加;或者!

    我们有时候会在自执行函数中看到这样的代码;(function(){ //我们的代码.. alert('Hello!'); })(); !(function(){ //我们的代码.. alert('He ...

  6. TFS Release 步骤调用命令行返回失败信息的处理方法

    TFS Release中自定义步骤时,可以选择“命令行”,官方的文档中,并没有描述调用相关的程序后,如何返回失败信息.通过下面步骤,可以实现本标题描述的功能. 步骤一:编写Console Applic ...

  7. IDEA的安装

    https://blog.csdn.net/when_to_return/article/details/81590356

  8. mysql的基本查询(等于,不等于,between...and...,)

    单个字段多个字段查询 查询员工姓名 *注:在SQL语句中不区分大小写:SQL语句以“:”分号结束 select ename from emp; 注:select询句后面跟的是字段名称,select是关 ...

  9. unity windowEditor平台下鼠标左键控制摄像机的视角

    工作的原因,今天就只写了unity下的鼠标左键控制摄像机的视角左右上下调节:明天,补齐.[有诸多参考,着实是需要多多加油的] using System.Collections; using Syste ...

  10. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...