Quartus Prime 18.1 报错Error (12007): Top-level design entity “top“ is undefined

Quartus Prime 报错
Error (12007): Top-level design entity “top” is undefined

根据开源项目项目:https://github.com/tastynoob/FPGA_network
是我顶层模块弄错了。因为他是名叫做top的文件,quartus自动认为有有个名叫top的顶层模块在top文件中,但是没有。他的顶层模块名为Network(在top文件中第一个模块就是)。
如何修改顶层模块名字方法:Assignments -> Settings ->General-> Top-Level Entity ->Select your module

top.v文件

//3*3*3*3的神经网络
module NetWork(
	input[3*32-1:0] Xi,
	output[3*32-1:0] Yo 
);


reg[3*3*3*32-1:0] ws = 
{
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC
};

reg[3*3*32-1:0] bs =
{
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC,
32'h3DCCCCCC,32'h3DCCCCCC,32'h3DCCCCCC
};


wire[3*32-1:0] cen[1:0];
Layer l1(Xi,ws[0*3*3*32+3*3*32-1:0*3*3*32],bs[0*3*32+3*32-1:0*3*32],cen[0]);
Layer l2(cen[0],ws[1*3*3*32+3*3*32-1:1*3*3*32],bs[1*3*32+3*32-1:1*3*32],cen[1]);
Layer l3(cen[1],ws[2*3*3*32+3*3*32-1:2*3*3*32],bs[2*3*32+3*32-1:2*3*32],Yo);



endmodule


module Layer(
	input[3*32-1:0] Xi,
	input[3*3*32-1:0] Ws,	
	input[3*32-1:0] Bs,
	output[3*32-1:0] Yo
);	

Neural n1(Xi,Ws[0*3*32+3*32-1:0*3*32],Bs[0*32+32-1:0*32],Yo[0*32+32-1:0*32]);
Neural n2(Xi,Ws[1*3*32+3*32-1:1*3*32],Bs[1*32+32-1:1*32],Yo[1*32+32-1:1*32]);
Neural n3(Xi,Ws[2*3*32+3*32-1:2*3*32],Bs[2*32+32-1:2*32],Yo[2*32+32-1:2*32]);

endmodule


module Neural(
	input[3*32-1:0] Xi,
	input[3*32-1:0] Ws,//权重
	input[31:0]  B,//偏执
	output[31:0] Yo
);

wire[31:0] o[2:0];

FPU_MUL f1(Xi[0*32+32-1:0*32],Ws[0*32+32-1:0*32],o[0]);
FPU_MUL f2(Xi[1*32+32-1:1*32],Ws[1*32+32-1:1*32],o[1]);
FPU_MUL f3(Xi[2*32+32-1:2*32],Ws[2*32+32-1:2*32],o[2]);


wire[31:0] t[1:0],f;
FPU_ADD f4(o[0],o[1],t[0]);
FPU_ADD f5(o[2],t[0],t[1]);
FPU_ADD f6(B,t[1],f);
Act_Func act(f,Yo);
endmodule


//激活函数
module Act_Func(
	input[31:0] Xi,
	output[31:0] Yo
);

assign Yo = Xi[31] ? 32'd0 : Xi;

endmodule
### 解决顶层设计实体未定义的错误 当遇到 `Error (12007): Top-level design entity "clock_display" is undefined` 错误时,表明Quartus II无法找到指定的设计顶层模块。此问题通常由以下几个原因引起: - 设计文件名称与顶级设计实体名称不匹配[^1]。 - 文件路径配置不当或者项目设置中缺少必要的源文件引用[^2]。 #### 验证并修正设计文件名和实体名的一致性 确保Verilog或VHDL源代码中的模块声明与其对应的文件命名保持一致非常重要。例如,在Verilog中,如果顶层模块名为`clock_display`,那么该模块应该被定义如下所示,并保存在一个同名`.v`文件里: ```verilog module clock_display ( input wire clk, output reg [7:0] seg ); // module implementation here... endmodule ``` 对于VHDL,则应有类似的结构体声明部分,同样需注意文件命名为`clock_display.vhd`: ```vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity clock_display is Port ( clk : in STD_LOGIC; seg : out STD_LOGIC_VECTOR(7 downto 0) ); end clock_display; architecture Behavioral of clock_display is begin -- architecture body goes here... end Behavioral; ``` #### 检查项目设置中的文件包含情况 确认所有的源文件都已正确添加到当前工程之中。可以通过Project Navigator窗口下的Files面板来查看是否有遗漏的文件项。如果有任何缺失,请通过右键菜单选项将其加入至工程项目当中。 另外,还需保证这些文件位于正确的目录下,并且其相对路径已在编译器设定里得到适当指明。这一步骤有助于防止因路径解析失败而导致的识别不到特定模块的情况发生。 #### 设置顶层模块属性 有时即使上述条件均已满足,仍可能出现此类警告提示。此时可以尝试手动指定项目的顶层模块。具体操作是在软件界面中选择Assignments -> Settings, 然后导航到EDA Tool Settings -> General标签页下面,将Top-Level Entity字段设为`clock_display`。 完成以上调整之后重新构建整个项目,观察是否解决了原始报告的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值