Verilog代码错误

时间:2014-03-11 20:28:00

标签: verilog verification

我在这段代码中收到错误。该代码用于4位比较器。错误是我得到了"未指定"输出out1端口。

请帮忙。

module bitCompare(num1,num2,out1,out2);

    parameter n = 3;

    output out1;
    output out2;
    input  [n:0] num1;
    input  [n:0] num2;

    wire [n:0] eq;
    wire x0,x1,x2,x3;
    wire a,b,c,d;
    wire an;

    // Comparator in structural mode
    xnor xn1(x0,num1[0],num2[0]);
    xnor xn2(x1,num1[1],num2[1]);
    xnor xn3(x2,num1[2],num2[2]);
    xnor xn4(x3,num1[3],num2[3]);
    and  a1(out2,x0,x1,x2,x3);
    not  n1(an,num1[3]);
    and  a2(a,an,num2[3]);
    not  n2(an,num1[2]);
    and  a3(b,x3,an,num2[2]);
    not  n3(aN,num1[1]);
    and  a4(c,x3,x2,an,num2[1]);
    not  n4(an,num1[0]);
    and  a5(d,x3,x2,x1,an,num2[0]);
    or   o1(out1,a,b,c,d);
endmodule

module Testbench;

    reg [3:0] numb1, numb2;
    wire outp1;
    wire outp2;
    bitCompare c(numb1, numb2,outp1,outp2);

    initial
    begin
    //case 0
        numb1 <= 4'b0000;
        numb2 <= 4'b0001;  #20;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b1111;
        numb2 <= 4'b1111;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b1000;
        numb2 <= 4'b1010;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b0111;
        numb2 <= 4'b0111;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
    //case2
    end
endmodule

1 个答案:

答案 0 :(得分:1)

Verilog几乎可以并行模拟所有内容。当网络有多个驱动程序时,需要解析值的值。如果驱动程序的值相同,则输出将具有已知值。如果驾驶值不匹配,则输出为X。除了阻止语句之外,没有最后的分配获胜。

Verilog允许网络上的多个驱动程序,它不会警告你。确保单个驱动程序可以通过切换到SystemVerilog并在always_combalways_ffalways_latch块中分配值来完成。