Quartus II出现Top-level design entity is undefined的原因

Posted by Harid十一月 - 1 - 2010 Leave comments

下面是一个十进制计数器的Verilog代码,它不包含测试向量,因为我已经在ModelSim里写了测试向量仿真,结果是正确的,所以它是一段可综合的代码,拿到Quartus II下编译的时候出现错误,说是“Error: Top-level design entity “count” is undefined”。

我拿这个错误提示 GG 了一下,发现有不少人遇到了这个问题,不过我是没有见到合适的解决办法,后来我咨询了老师(这就是在学校的优势),终于知道了原因所在。

先上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module counter(clk,clr,load,en,data,q,count_flag);
    input clk;
    input clr;
    input load;
    input en;
    input[3:0] data;
    output reg[3:0] q;
    output reg count_flag;
    always@(posedge clk)
        if(clr)
            q <= 0;
        else if(load == 1'b1)
            q <= data;
        else if(en == 1'b1) begin
        if(q == 9 )
            q <= 0;
        else
            q <= q + 1;
    end
    always@(q) begin
    if(q == 9)
        count_flag <= 1;
    else
        count_flag <= 0;
    end
endmodule

原因是我们在建立工程的时候没有填写正确的“Top-level design entity”——顶层设计实例

譬如上面这个程序,我们的模块名是“counter”,可是我在建立工程的时候,填写相关信息的时候是填写的“count”,所以在编译的时候EDA工具就报错,说是“Top-level design entity”没有定义。具体到建立工程的过程中,是下图所示这个步骤处应该填写我们的模块名称(对应上面这个计数器,这里就应该是counter):

Quartus 编译错误关键是第三空,“What is the name of the top-level design entity for this project? This name is must exactly match the entity name in the design file.”,工具能根据工程的名称自动为我们填写这一空,因此可能很多人就没有注意了。不过细心的朋友应该注意过这个地方,工具已经说明这个地方必须完全匹配我们的实例名称。

最后,想说这么一句话——“着小成大”,虽然说什么“成大事者不拘小节”,可是不同的场合,不同的境遇,不同的阶段,不同的对象,我们都得有不同的对策,不能死抠原则,也不能完全不守原则,一个人一定要能变通,该着眼细节的地方就不该“不拘小节”。

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《Quartus II出现Top-level design entity is undefined的原因


分享按钮