summaryrefslogtreecommitdiff
path: root/tests/asicworld/code_verilog_tutorial_first_counter_tb.v
blob: 806e177365ab45dae80b569f0823a247a8fa9252 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module testbench();
// Declare inputs as regs and outputs as wires
reg clock = 1, reset = 0, enable = 0;
wire [3:0] counter_out;
integer file;

// Initialize all variables
initial begin        
  file = $fopen(`outfile);
  $fdisplay (file, "time\t clk reset enable counter");	
  #5 reset = 1;    // Assert the reset
  #10 reset = 0;   // De-assert the reset
  #10 enable = 1;  // Assert enable
  #100 enable = 0; // De-assert enable
  #5 $finish;      // Terminate simulation
end

always @(negedge clock)
  $fdisplay (file, "%g\t %b   %b     %b      %b", 
	  $time, clock, reset, enable, counter_out);	

// Clock generator
initial begin
  #1;
  forever
    #5 clock = ~clock; // Toggle clock every 5 ticks
end

// Connect DUT to test bench
first_counter U_counter (
clock,
reset,
enable,
counter_out
);

endmodule