初步使用Xilinx CORE Generator:
参考书籍:《Xilinx ISE 5.x 使用详解》 EDA先锋工作室
P63-P72:IP核生成工具——CORE Generator
1. 对于如何在工程中加入IP核,是很简单的,我在未看书之前,就可根据提示挑选适当的核,对核进行参数设置,将核加入工程。
2. 接下来是如何使用,在这里,由于我主要使用VHDL语言,仿真工具用ModelSim6.0,综合工具主要使用Synplify7.7,我就只说在这样的环境下如何对该IP核进行元件例化,进行项目配置,并进行仿真与综合。
2.1 元件例化
可使用ISE的Laguage Template,也就是Xilinx 6.2 ISE中工具栏右上角的小灯泡,在COREGEN目录下,你会发现,你所用到的IP核的例化语句已经出现在模板里,拷过去就可以直接用了(当然你可能也要视情况进行必要的改动)。
3. 仿真
这里,最主要的问题是库,由于使用了IP核,所以要把XilinxCroeLib加入ModelSim库中。我的经验是:先在当前工程的目录下创建一个xilinxcorelib库,然后把该库文件剪切到modelsim根目录下,最后在modelsim下,选中该库,点击右键选择Edit,将路径高到modelsim下。然后将xilinx\vhdl\src\xilinxcorelib编译到该库中。此时要注意,由于库文件的关联性,第一次不可能全部编译通过,连续三次后,大多数核就在库中,只有少数几个不能通过编译。
4. 综合
由于综合过程中,提示如下(下面是我在comp.arch.fpga上所发的问题):
In my project,there's a xilinx IP core. I want to use the synplify7.7 to synthesize it, but there's a warning when synthesize .
The warning is :
@W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":29:10:29:19|Unbound component counter_11 mapped to black box
@W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":37:10:37:18|Unbound component counter_4 mapped to black box
my project nane is itu656_dec : a decoder for itu 656 video
The following code has been used in my project:
component counter_11
port (
Q: OUT std_logic_VECTOR(10 downto 0);
CLK: IN std_logic;
CE: IN std_logic;
ACLR: IN std_logic);
end component;
component counter_4
port (
Q: OUT std_logic_VECTOR(3 downto 0);
CLK: IN std_logic;
CE: IN std_logic;
ACLR: IN std_logic);
end component;
新闻组上有人这样回复:
1. please refer to the "core generator guide" document. It explains how to do it. the document is located at
YOUR_XILINX_ISE_INSTALLTION_FOLDER \doc\usenglish\books\docs\cgn
2. "Xilinx-boxes" are synthesized within Xilinx-toolchain, as it seems.
Xilinx: XAPP409 might solve your problem.I'm not sure if that's really important when using synplify, butreading XILINX: xst.pdf might also make sense.
3. These warnings can be ignored. The netlist (edf, ngo, etc) for the core will be picked up when you run ngdbuild. "-sd" option of ngdbuild may be helpful.
根据第一个答复,我找到了cgn.pdf,在P99页上找到了答案:
VHDL Black Box
component myadder8
port (
A: IN std_logic_VECTOR(7 downto 0);
B: IN std_logic_VECTOR(7 downto 0);
C_IN: IN std_logic;
Q: OUT std_logic_VECTOR(8 downto 0);
CLK: IN std_logic
);
end component;
-- Synplicity black box declaration
attribute black_box : boolean;
attribute black_box of myadder8: component is true;
将attribute语句拷入我的工程,还有warning.根据提示,将black_box改成syn_black_box,问题才得以解决,此时,不会再有上述warning存在了。
后来,在Xilinx ISE 5.x 使用详解》中翻到如下内容:P71
书上有云:
“IP核在综合时一般被认为是黑盒子(Black Box),综合器不对黑盒子做任何编译。将IP核加入工程有两种方法,一为在工程中新建Coregen IP类型资源,另一种是针对第三方综合工具而言,同时避免了在新工程中需要重新加入IP核资源的麻烦。也就是将IP核声明成黑盒子,具体操作时可以利用IP核生成时生成的仿真文件和IP核实例化文件(.veo,.vho),将仿真文件中的IP核的相关部分原封不动地拷贝到顶层文件中去,声明IP核模块,然后将实例化文件内容粘贴到模块的实例化部分。
然面,使用Synplify Pro等综合工具综合IP核等Xilinx硬件原语时,需要调用相应Xilinx器件的硬件原语声明文件。位于Synpliy\lib\Xilinx”子目录中的virtex.v/vhd,virtexe.v/vhd,virtex2.v/vhd,virtex2p.v/vhd等文件就是硬件原语声明文件。调用时用"include"命令。
综合工具 |
Verilog语法声明 |
VHDL语法声明 |
synplify |
// synthesis black_box |
attribute syn_black_box : Boolean; attribute syn_black_box of core_name : component is true; |
synopsys |
// synopsys translate_off // synopsys translate_on |
attribute fpga_dont_touch : string; attribute fpga_dont_touch of core_name : component is “true”; |
XST |
// box_type “black_box” |
attribute box_type : string; attribute box_type of core_name : component is “black_box”; |
来源:https://www.cnblogs.com/wantfei/archive/2005/02/24/108854.html