module csa_32(
input [31:0]a,
input [31:0]b,
input cin,
output [31:0]s,
output cout
);
wire [15:0]si;
wire [31:16]s0;
wire [31:16]s1;
wire c;
wire c0;
wire c1;
cla_16 (a[15:0],b[15:0],si,cin,c);
cla_16 (a[31:16],b[31:16],s0,0,c0);
cla_16 (a[31:16],b[31:16],s1,1,c1);
mux2_1 (s0,s1,c,sum);
mux2_1 (c0,c1,c,cout);
assign s = {sum,si};
endmodule
我在verilog中制作了一个非常简单的进位选择加法器,但无论出于什么原因它都不会执行代码。时序分析表明它需要0秒而且不需要任何资源。 cla_16肯定是有效的,所以它绝对是一件非常简单的东西,我可以忽视,但我不知道是什么。感谢任何帮助。
答案 0 :(得分:1)
按照您的方式初始化模块时:
cla_16 (a[15:0],b[15:0],si,cin,c);
您可能会收到错误:Module or interface instance must be named
或Missing instance name in instantiation
(取决于您正在使用的IDE)。您应该命名所有子模块实例,即:
cla_16 somenamehere(a[15:0],b[15:0],si,cin,c);
cla_16 someothernamehere(a[31:16],b[31:16],s0,0,c0);
cla_16 someanothernamehere(a[31:16],b[31:16],s1,1,c1);
mux2_1 muxnamehere(s0,s1,c,sum);
mux2_1 sndmuxnamehere(c0,c1,c,cout);