对简单的Verilog感到沮丧

时间:2015-03-23 07:28:26

标签: verilog

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肯定是有效的,所以它绝对是一件非常简单的东西,我可以忽视,但我不知道是什么。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

按照您的方式初始化模块时:

cla_16 (a[15:0],b[15:0],si,cin,c);

您可能会收到错误:Module or interface instance must be namedMissing 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);