微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 为什么总是出错?

为什么总是出错?

时间:10-02 整理:3721RD 点击:
ERROR:NgdBuild:604 - logical block 'cam_exam_5' with type 'cam_exam_1' could not
请各位大侠帮忙分析一下,我用ISE10.1的ip核生成器生成了一个CAM的IP核(名字是cam_exam_1),然后在另一个模块中将它实例化,取名为cam_exam_5,实现的时候就出现了以上错误,请明人指点,附代码如下:
module cam_test_top(
   clk,
din,
we,
wr_addr,
busy,
match,
match_addr );
input clk;
input [7 : 0] din;
input we;
input [3 : 0] wr_addr;
output busy;
output match;
output [15 : 0] match_addr;
cam_exam_1  cam_exam_5(
        .clk(clk),
        .din(din),
        .we(we),
        .wr_addr(wr_addr),
        .busy(busy),
        .match(match),
        .match_addr(match_addr)
);
endmodule

备注:ip核可以单独在modelsim下仿真;

似乎你没有把这个模块放到工程下吧?看你应该使用的ISE,通过工程导航窗口,看看所属顶层下面的该子模块是否存在?

他们在同一个工程下!

ngc呢?

以前自己写模块的时候如果在上层模块调用子模块没有这个问题,也没有考虑ngc的问题
module cam_exam_1(
        clk,
        din,
        we,
        wr_addr,
        busy,
        match,
        match_addr);

input clk;
input [7 : 0] din;
input we;
input [3 : 0] wr_addr;
output busy;
output match;
output [15 : 0] match_addr;
                        
// synopsys translate_off
      /**/CAM_V5_1 #(
        2,  // c_addr_type
        8,  // c_cmp_data_mask_width
        8,  // c_cmp_din_width
        8,  // c_data_mask_width
        16, // c_depth
        8,  // c_din_width
        0,  // c_enable_rlocs
        0,  // c_has_cmp_data_mask
        0,  // c_has_cmp_din
        0,  // c_has_data_mask
        0,  // c_has_en
        0,  // c_has_multiple_match
        0,  // c_has_read_warning
        0,  // c_has_single_match
        1,  // c_has_we
        1,  // c_has_wr_addr
        16, // c_match_addr_width
        0,  // c_match_resolution_type
        1,  // c_mem_init
        "cam_exam_1.mif",        // c_mem_init_file
        1,  // c_mem_type
        1,  // c_read_cycles
        0,  // c_reg_outputs
        0,  // c_ternary_mode
        8,  // c_width
        4)  // c_wr_addr_width
    inst (
        .CLK(clk),
        .DIN(din),
        .WE(we),
        .WR_ADDR(wr_addr),
        .BUSY(busy),
        .MATCH(match),
        .MATCH_ADDR(match_addr),
        .CMP_DATA_MASK(),
        .CMP_DIN(),
        .DATA_MASK(),
        .EN(),
        .MULTIPLE_MATCH(),
        .READ_WARNING(),
        .SINGLE_MATCH());

// synopsys translate_on
endmodule
上面就是用ISE生成的ip核,调用的时候出现了上述问提,我用的是ISE10.1,请各位帮忙看一下为什么不能调用

用Magecore产生的IP可能会存在这样的问题,不能只使用它的.v文件。我之前让你确认的:不是看它们是不是在一个工程下,而是看它们在这个工程下是不是属于主从关系,这个关系在导航窗口应该是能够看出来的,换句话就是说你使用的RAM是不是在调用它的程序下一层,而不是两者是平行的。如果确认了是前者的话,可能就如前面那位朋友说的,也许要考虑NGC或者它的IP原型文件(忘记什么后缀名了),而不是仅仅使用v文件。

是的。10.1或者11里有些IP是不生成NGC,但是有依赖的文件。

先前我是先生成了ip核然后再写顶层模块(调用此ip核),
这次我先写了顶层模块cam_test_top ,
然后再其下一层添加了一个ip核形式的文件,
这次貌似可以,
实现的时候能够通过

嗯,我以前也是按照你后面的操作进行的,如果先生成IP再去添加,就容易出现这种问题。

请问有谁用EDK吗,最近在学这个,找不到合适的例子

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top