summaryrefslogtreecommitdiff
path: root/clock_divider/clock_divider_tb.v
blob: 7499454b6af1ddfd51c5cb6393b1bd562f578d06 (plain) (blame)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
`timescale 1 ns / 10 ps

module clock_divider_tb ();

  reg  clk = 0;
  reg  rst = 0;

  wire out;
  wire out2;

  // Simulation time: 10_000 * 1 ns = 10 μs.
  localparam integer DURATION = 10_000;

  // generate clock signal : 1 / ((2 *  41.67) * 1 ns) == 11,999,040.08 MHz
  always begin
    // Delay for 41.667
    #41.667;

    clk = ~clk;
  end

  clock_divider #(
      .COUNT_WIDTH(4),
      .MAX_COUNT  (4)
  ) utt (
      .clk(clk),
      .rst(rst),
      .div_clk(out)
  );

  clock_divider #(
      .COUNT_WIDTH(4),
      .MAX_COUNT  (4)
  ) utt2 (
      .clk(out),
      .rst(rst),
      .div_clk(out2)
  );

  initial begin
    #10 rst = 1'b1;
    #1 rst = 1'b0;
  end

  initial begin
    $dumpfile("clock_divider_tb.vcd");
    $dumpvars(0, clock_divider_tb);

    #(DURATION);
    $display("Finished!");
    $finish;
  end

endmodule