1

I'm getting a syntax error for my program counter test bench, and I can not figure out why I keep getting it.

The following Verilog source has syntax error:

"pc_tb.v", 20: token is 'initial'
initial 
       ^

Am I using initial wrong? I'm making a pipelined datapath, and this the only part I got that isn't working for me so far.

//PC_TB.V USED TO TEST THE PC MODULE
`include"pc.v"
module pc_tb;
wire[15:0]out;
reg stall,hold
reg[9:0]Mux,Haz
reg[7:0]Mem[0:65535];
ProgramCounter g1(stall,hold,Mem,out,Mux,Haz);
initial begin
stall=1'b0
hold=1'b0;
Mem=0;
Mux=9'b000000010;
Haz=9'b000000000;
#5 Mem[2]=1;
#10 hold=1'b1;
#30 halt=1'b1;
#40 
initial
#100 $finish;
end
endmodule
1
  • 3
    Please indent your code, then you will see your missing an end for your first initial statement. Commented May 2, 2016 at 9:50

1 Answer 1

2

You cannot declare another initial block inside an initial block, so you need to close your begin. Here's the corrected code; see comments for corrections:

//PC_TB.V USED TO TEST THE PC MODULE
`include"pc.v"
`define MEM_SIZE 65535

module pc_tb;
  wire [15:0] out;
  reg stall, hold; // Missing ;
  reg [9:0] Mux, Haz; // Missing ;
  reg [7:0] Mem[0:`MEM_SIZE-1]; // Convert to macro
  integer i;

  ProgramCounter g1(stall, hold, Mem, out, Mux, Haz);

  // First initial block
  initial begin
    stall = 1'b0; // Missing ;
    hold = 1'b0;
    // Canot set unpacked array to 0, need to loop through to set each element
    for (i = 0; i < `MEM_SIZE; i = i + 1) begin
      Mem[i] = 8'd0;
    end
    Mux = 9'b000000010;
    Haz = 9'b000000000;
    
    #5 Mem[2] = 1;
    #10 hold = 1'b1;
    #30 halt = 1'b1; // halt undeclared, not sure what you meant to do here
    // #40 does nothing here
  end // This end was missing 
  
  // Second initial block
  initial begin
    #100 $finish; // 100 time units from start, simulation will terminate
  end
endmodule
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.