Verilog code wont simulate properly

Thread Starter

linux2k

Joined Dec 13, 2008
3
I'm making a behavioral model of BCD to 7-segment decoder. But its does not give the predicted results. The output of all the segments are 'z'.

Rich (BB code):
module binaryTo7Seg(code, segment);

output reg [7:0] segment;
input [3:0] code;

always@(code)
case(code)
       0: segment = ~8'b11111100;  
       1: segment = ~8'b01100000; 
       2: segment = ~8'b11011010; 
       3: segment = ~8'b11110010;  
       4: segment = ~8'b01100110;  
       5: segment = ~8'b10110110; 
       6: segment = ~8'b10111110;
       7: segment = ~8'b11100000;
       8: segment = ~8'b11111110; 
       9: segment = ~8'b11100110; 
      10: segment = ~8'b11101110;  
      11: segment = ~8'b00111110;
      12: segment = ~8'b10011100;
      13: segment = ~8'b01111010;
      14: segment = ~8'b10011110;
      15: segment = ~8'b10001110;
      default: segment = 8'bx;
    endcase

endmodule
Rich (BB code):
module binaryTo7Seg_test(code, segment);

output reg [3:0] code;
input  [7:0] segment;

initial 
 
      begin 
 
         $monitor($time,,,"A = %b B = %b C = %b D = %b, aSeg = %b, bSeg = %b, cSeg = %b, dSeg = %b, eSeg = %b, fSeg = %b, gSeg = %b, hSeg = %b",code[3],code[2],code[1],code[0],segment[7],segment[6],segment[5],segment[4],segment[3],segment[2],segment[1],segment[0]); 
 
         #10  code[3] = 0; code[2] = 0; code[1] = 0; code[0] = 0; 
         #10  code[3] = 0; code[2] = 0; code[1] = 0; code[0] = 1; 
         #10  code[3] = 0; code[2] = 0; code[1] = 1; code[0] = 0; 
         #10  code[3] = 0; code[2] = 0; code[1] = 1; code[0] = 1; 
         #10  code[3] = 0; code[2] = 1; code[1] = 0; code[0] = 0; 
         #10  code[3] = 0; code[2] = 1; code[1] = 0; code[0] = 1; 
         #10  code[3] = 0; code[2] = 1; code[1] = 1; code[0] = 0; 
         #10  code[3] = 0; code[2] = 1; code[1] = 1; code[0] = 1; 
         #10  code[3] = 1; code[2] = 0; code[1] = 0; code[0] = 0; 
         #10  code[3] = 1; code[2] = 0; code[1] = 0; code[0] = 1;
         #10  code[3] = 1; code[2] = 0; code[1] = 1; code[0] = 0;
         #10  code[3] = 1; code[2] = 0; code[1] = 1; code[0] = 1;
         #10  code[3] = 1; code[2] = 1; code[1] = 0; code[0] = 0;
         #10  code[3] = 1; code[2] = 1; code[1] = 0; code[0] = 1;
         #10  code[3] = 1; code[2] = 1; code[1] = 1; code[0] = 0;
         #10  code[3] = 1; code[2] = 1; code[1] = 1; code[0] = 1; 
         #10 $finish; 
      end 
initial
     begin
        $dumpfile ("binaryTo7Seg.dump");
        $dumpvars (0, binaryTo7Seg_test);
     end

endmodule
Here is the result of the simulation
Rich (BB code):
0  A = x B = x C = x D = x, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  10  A = 0 B = 0 C = 0 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  20  A = 0 B = 0 C = 0 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  30  A = 0 B = 0 C = 1 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  40  A = 0 B = 0 C = 1 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  50  A = 0 B = 1 C = 0 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  60  A = 0 B = 1 C = 0 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  70  A = 0 B = 1 C = 1 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  80  A = 0 B = 1 C = 1 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                  90  A = 1 B = 0 C = 0 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 100  A = 1 B = 0 C = 0 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 110  A = 1 B = 0 C = 1 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 120  A = 1 B = 0 C = 1 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 130  A = 1 B = 1 C = 0 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 140  A = 1 B = 1 C = 0 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 150  A = 1 B = 1 C = 1 D = 0, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
                 160  A = 1 B = 1 C = 1 D = 1, aSeg = z, bSeg = z, cSeg = z, dSeg = z, eSeg = z, fSeg = z, gSeg = z, hSeg = z
Is there something wrong with my testbench?
 

MaxSmoke

Joined Oct 29, 2009
35
module binaryTo7Seg_test(code, segment);

output reg [3:0] code;
input [7:0] segment;

[/code]Is there something wrong with my testbench?
Should the above test bench statements not be ...

reg [3:0] code;
wire [7:0] segment;

No need for the input & output statements.

Hope this is of help.
 
Top