Verilog 波形显示一些变量的蓝线和 Hiz

Verilog waveform shows blue lines and Hiz for some variables

module half_adder(sum, carry, a, b); 
input a, b; 
output sum, carry; 
xor sum1(sum, a, b); 
and carry1(carry, a, b); 
endmodule

module full_adder (fsum, fcarry_out, a, b, c); 
input a, b, c; 
output fsum, fcarry_out; 
wire half_sum_1, half_carry_1, half_carry_2; 
half_adder HA1(half_sum_1, half_carry_1, a, b); 
half_adder HA2(fsum, half_carry_2, half_sum_1, c); 
or or1(fcarry_out, half_carry_2, half_carry_1); 
endmodule

module four_bit_binary_adder (full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4, a, b, c, d, e, f, g, h, c_in);
input a, b, c, d,e,f,g,h, c_in;
output full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4;
wire full_carry_1, full_carry_2, full_carry_3;
full_adder FA1(full_sum_1, full_carry_1, a, e, c_in);
full_adder FA2(full_sum_2, full_carry_2, b, f , full_carry_1);
full_adder FA3(full_sum_3, full_carry_3, c, g ,  full_carry_2);
full_adder FA4(full_sum_4, carry_out_4 , d, h, full_carry_3);
endmodule

module testbench_4_bit_binary_adder;
  reg  A,B,C,D,E,F,G,H,C_in;
  wire  a,b,c,d,e,f,g;
  four_bit_binary_adder t6(S0,S1,S2,S3,C_out,A,B,C,D,E,F,G,H,C_in);
    initial
    begin
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B1;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B1;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;

    end
  endmodule

这是我的 Verilog 代码。我首先在全加器中实例化了半加器,然后在四位加器中实例化了全加器,并创建了一个模拟测试台。它可以编译,但我无法从中获得准确的波形。我不知道问题出在设计中还是测试台中。

在您的测试平台中,您将信号 a,b,c,d,e,f,g 声明为 wire,但您并未驱动这些信号。 wire 的默认值为 z.

由于您没有使用这些信号,而是使用了 S0 - S3 信号,因此您应该更改:

  wire  a,b,c,d,e,f,g;

至:

  wire S0, S1, S2, S3;