Warning:Instantiation 深度可能表示 ModelSim 中的递归
Warning:Instantiation depth might indicate recursion in ModelSim
我想实现HA(半加器),但遇到了问题。当我单击模拟时,它会显示此警告:
Warning: Instantiation depth of '/TM_HA/HA/HA/HA .....This might
indicate a recursive instantiation.
不知道怎么回事
HA.v
`timescale 1ns/1ns
module HA(a,b,c,sum,cout);
input a,b,c;
output sum,cout;
wire e1,e2,e3;
xor(e1,a,b);
and(e2,a,b);
and(e3,e1,c);
xor(sum,e1,c);
or(cout,e3,e2);
endmodule
TM_HA.v
`timescale 1ns/1ns
module TM_HA;
reg A,B,Cin;
wire Sum,Cout;
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
parameter t = 200;
initial
begin
#(2*t)
A = 1'b0;
B = 1'b0;
Cin = 1'b0;
#t
A = 1'b0;
B = 1'b0;
Cin = 1'b1;
....
#t
$stop;
end
endmodule
如您警告所说,您有一个递归实例化。这一行
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
内部模块 TM_HA
表示
instantiate module TM_HA
and give it the instance name HA
.
由于该行位于模块 TM_HA
内,您正在实例化模块 TM_HA
自身内部 - 递归实例化。在某个时候,在零级和无限级层次结构之间,您的模拟器放弃了。
如 ModelSim 给您的警告中所述:您正在执行递归实例化。让我们看一下 TM_HA
模块的前几行:
module TM_HA;
reg A,B,Cin;
wire Sum,Cout;
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
在 模块 TM_HA
中,您正在创建父模块 TM_HA
的名为 HA
的实例。这是一个递归调用,因为该实例将再次创建 TM_HA
.
的另一个实例
要实际实例化您的 HA
模块,您应该这样做(类似于):
HA HA_inst (.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
我想实现HA(半加器),但遇到了问题。当我单击模拟时,它会显示此警告:
Warning: Instantiation depth of '/TM_HA/HA/HA/HA .....This might indicate a recursive instantiation.
不知道怎么回事
HA.v
`timescale 1ns/1ns
module HA(a,b,c,sum,cout);
input a,b,c;
output sum,cout;
wire e1,e2,e3;
xor(e1,a,b);
and(e2,a,b);
and(e3,e1,c);
xor(sum,e1,c);
or(cout,e3,e2);
endmodule
TM_HA.v
`timescale 1ns/1ns
module TM_HA;
reg A,B,Cin;
wire Sum,Cout;
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
parameter t = 200;
initial
begin
#(2*t)
A = 1'b0;
B = 1'b0;
Cin = 1'b0;
#t
A = 1'b0;
B = 1'b0;
Cin = 1'b1;
....
#t
$stop;
end
endmodule
如您警告所说,您有一个递归实例化。这一行
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
内部模块 TM_HA
表示
instantiate module
TM_HA
and give it the instance nameHA
.
由于该行位于模块 TM_HA
内,您正在实例化模块 TM_HA
自身内部 - 递归实例化。在某个时候,在零级和无限级层次结构之间,您的模拟器放弃了。
如 ModelSim 给您的警告中所述:您正在执行递归实例化。让我们看一下 TM_HA
模块的前几行:
module TM_HA;
reg A,B,Cin;
wire Sum,Cout;
TM_HA HA(.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));
在 模块 TM_HA
中,您正在创建父模块 TM_HA
的名为 HA
的实例。这是一个递归调用,因为该实例将再次创建 TM_HA
.
要实际实例化您的 HA
模块,您应该这样做(类似于):
HA HA_inst (.a(A), .b(B), .c(Cin), .sum(Sum), .cout(Cout));