OpenCores
URL https://opencores.org/ocsvn/m1_core/m1_core/trunk

Subversion Repositories m1_core

[/] [m1_core/] [trunk/] [hdl/] [behav/] [testbench/] [testbench.v] - Blame information for rev 64

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 fafa1971
/*
2 64 albert.wat
 * M1 Core Testbench
3 2 fafa1971
 */
4
 
5 35 fafa1971
`include "ddr_include.v"
6
 
7 2 fafa1971
module testbench();
8
 
9 35 fafa1971
  /*
10
   * Registers
11
   */
12 2 fafa1971
 
13 35 fafa1971
  // System
14
  reg sys_clock;
15
  reg sys_reset;
16 2 fafa1971
 
17 35 fafa1971
  /*
18
   * Wires
19
   */
20
 
21
  // VGA Port
22
  wire vga_rgb_r;
23
  wire vga_rgb_g;
24
  wire vga_rgb_b;
25
  wire vga_hsync;
26
  wire vga_vsync;
27
 
28
  // PS/2 Keyboard interface
29
  wire ps2_keyboard_clock;
30
  wire ps2_keyboard_data;
31
  wire[7:0] received_char;
32
  wire char_valid;
33
 
34
  // DDR Port
35
  wire ddr_clk;
36
  wire ddr_clk_n;
37
  wire ddr_clk_fb = ddr_clk;
38
  wire ddr_ras_n;
39
  wire ddr_cas_n;
40
  wire ddr_we_n;
41
  wire ddr_cke;
42
  wire ddr_cs_n;
43
  wire[`A_RNG] ddr_a;
44
  wire[`BA_RNG] ddr_ba;
45
  wire[`DQ_RNG] ddr_dq;
46
  wire[`DQS_RNG] ddr_dqs;
47
  wire[`DM_RNG] ddr_dm;
48
 
49
  /*
50
   * Module instances
51
   */
52
 
53
  // DUT (Design Under Test)
54
  spartan3esk_top spartan3esk_top_0 (
55
 
56
    // System
57
    .sys_clock_i(sys_clock),
58
    .sys_reset_i(sys_reset),
59
 
60
    // VGA Port
61
    .vga_rgb_r_o(vga_rgb_r),
62
    .vga_rgb_g_o(vga_rgb_g),
63
    .vga_rgb_b_o(vga_rgb_b),
64
    .vga_hsync_o(vga_hsync),
65
    .vga_vsync_o(vga_vsync),
66
 
67
    // PS/2 Keyboard interface
68
    .ps2_keyboard_clock_io(ps2_keyboard_clock),
69
    .ps2_keyboard_data_io(ps2_keyboard_data),
70
 
71
    // DDR Port
72
    .ddr_clk(ddr_clk),
73
    .ddr_clk_n(ddr_clk_n),
74
    .ddr_clk_fb(ddr_clk_fb),
75
    .ddr_ras_n(ddr_ras_n),
76
    .ddr_cas_n(ddr_cas_n),
77
    .ddr_we_n(ddr_we_n),
78
    .ddr_cke(ddr_cke),
79
    .ddr_cs_n(ddr_cs_n),
80
    .ddr_a(ddr_a),
81
    .ddr_ba(ddr_ba),
82
    .ddr_dq(ddr_dq),
83
    .ddr_dqs(ddr_dqs),
84
    .ddr_dm(ddr_dm)
85
 
86
  );
87
 
88
  // PS/2 Keyboard model
89
  ps2_keyboard_model ps2_keyboard_model_0 (
90
    .kbd_clk_io(ps2_keyboard_clock),
91
    .kbd_data_io(ps2_keyboard_data),
92
    .last_char_received_o(received_char),
93
    .char_valid_o(char_valid)
94
  );
95
 
96
  // DDR model (Micron mt46v16m16)
97
  ddr ddr_0 (
98
    .Dq(ddr_dq),
99
    .Dqs(ddr_dqs),
100
    .Addr(ddr_a),
101
    .Ba(ddr_ba),
102
    .Clk(ddr_clk),
103
    .Clk_n(ddr_clk_n),
104
    .Cke(ddr_cke),
105
    .Cs_n(ddr_cs_n),
106
    .Ras_n(ddr_ras_n),
107
    .Cas_n(ddr_cas_n),
108
    .We_n(ddr_we_n),
109
    .Dm(ddr_dm)
110
  );
111
 
112
  /*
113
   * Sequential logic
114
   */
115
 
116
  // Clock
117
  always #10 sys_clock = !sys_clock;
118
 
119
  // Reset
120 2 fafa1971
  initial begin
121
 
122
    // Display start message
123 64 albert.wat
    $display("INFO: TBENCH(%m): Starting M1 Core simulation...");
124 35 fafa1971
 
125 2 fafa1971
    // Create VCD trace file
126
    $dumpfile("trace.vcd");
127
    $dumpvars();
128
 
129
    // Run the simulation
130 35 fafa1971
    sys_clock <= 1;
131
    sys_reset <= 1;
132 2 fafa1971
    #1000
133 35 fafa1971
    sys_reset <= 0;
134
    #99000
135 64 albert.wat
    $display("INFO: TBENCH(%m): Completed M1 Core simulation!");
136 2 fafa1971
    $finish;
137
 
138
  end
139
 
140
endmodule
141
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.