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

Subversion Repositories versatile_mem_ctrl

[/] [versatile_mem_ctrl/] [trunk/] [bench/] [tb.v] - Blame information for rev 11

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 mikaeljf
`include "tb_defines.v"
2 9 unneback
`timescale 1ns/1ns
3
module versatile_mem_ctrl_tb
4
  (
5
   output OK
6
   );
7
 
8
   reg    sdram_clk, wb_clk, wb_rst;
9
 
10
   wire [31:0] wb0_dat_i;
11
   wire [3:0]  wb0_sel_i;
12
   wire [31:0] wb0_adr_i;
13
   wire [2:0]  wb0_cti_i;
14
   wire [1:0]  wb0_bte_i;
15
   wire        wb0_cyc_i;
16
   wire        wb0_stb_i;
17
   wire [31:0] wb0_dat_o;
18
   wire        wb0_ack_o;
19
 
20
   wire [31:0] wb1_dat_i;
21
   wire [3:0]  wb1_sel_i;
22
   wire [31:0] wb1_adr_i;
23
   wire [2:0]  wb1_cti_i;
24
   wire [1:0]  wb1_bte_i;
25
   wire        wb1_cyc_i;
26
   wire        wb1_stb_i;
27
   wire [31:0] wb1_dat_o;
28
   wire        wb1_ack_o;
29
 
30
   wire [31:0] wb4_dat_i;
31
   wire [3:0]  wb4_sel_i;
32
   wire [31:0] wb4_adr_i;
33
   wire [2:0]  wb4_cti_i;
34
   wire [1:0]  wb4_bte_i;
35
   wire        wb4_cyc_i;
36
   wire        wb4_stb_i;
37
   wire [31:0] wb4_dat_o;
38
   wire        wb4_ack_o;
39
 
40
   wire [1:0]  ba, bad;
41
   wire [12:0] a, ad;
42
   wire [15:0] dq_i;
43
   wire [15:0] dq_o;
44
   wire [15:0] dq_io;
45 11 mikaeljf
   wire [1:0]  dqs, dqs_n, dqs_i, dqs_o, dqs_n_i, dqs_n_o, dqs_io, dqs_n_io;
46
   wire [1:0]  dqm, dqmd, dm_rdqs;
47
   wire        dq_oe, dqs_oe;
48 9 unneback
   wire        cs_n, cs_nd, ras, rasd, cas, casd, we, wed, cke, cked;
49 11 mikaeljf
 
50
`ifdef SDR_16
51 9 unneback
   wb0 wb0i
52
     (
53
      .adr(wb0_adr_i),
54
      .bte(wb0_bte_i),
55
      .cti(wb0_cti_i),
56
      .cyc(wb0_cyc_i),
57
      .dat(wb0_dat_i),
58
      .sel(wb0_sel_i),
59
      .stb(wb0_stb_i),
60
      .we (wb0_we_i),
61
      .ack(wb0_ack_o),
62
      .clk(wb_clk),
63
      .dat_i(wb0_dat_o),
64
      .reset(wb_rst)
65
      );
66
   wb1 wb1i
67
     (
68
      .adr(wb1_adr_i),
69
      .bte(wb1_bte_i),
70
      .cti(wb1_cti_i),
71
      .cyc(wb1_cyc_i),
72
      .dat(wb1_dat_i),
73
      .sel(wb1_sel_i),
74
      .stb(wb1_stb_i),
75
      .we (wb1_we_i),
76
      .ack(wb1_ack_o),
77
      .clk(wb_clk),
78
      .dat_i(wb1_dat_o),
79
      .reset(wb_rst)
80
      );
81
   wb4 wb4i
82
     (
83
      .adr(wb4_adr_i),
84
      .bte(wb4_bte_i),
85
      .cti(wb4_cti_i),
86
      .cyc(wb4_cyc_i),
87
      .dat(wb4_dat_i),
88
      .sel(wb4_sel_i),
89
      .stb(wb4_stb_i),
90
      .we (wb4_we_i),
91
      .ack(wb4_ack_o),
92
      .clk(wb_clk),
93
      .dat_i(wb4_dat_o),
94
      .reset(wb_rst)
95
      );
96 11 mikaeljf
`endif
97 9 unneback
 
98 11 mikaeljf
`ifdef DDR_16
99
   wb0_ddr wb0i
100
     (
101
      .adr(wb0_adr_i),
102
      .bte(wb0_bte_i),
103
      .cti(wb0_cti_i),
104
      .cyc(wb0_cyc_i),
105
      .dat(wb0_dat_i),
106
      .sel(wb0_sel_i),
107
      .stb(wb0_stb_i),
108
      .we (wb0_we_i),
109
      .ack(wb0_ack_o),
110
      .clk(wb_clk),
111
      .dat_i(wb0_dat_o),
112
      .reset(wb_rst)
113
      );
114
   wb1_ddr wb1i
115
     (
116
      .adr(wb1_adr_i),
117
      .bte(wb1_bte_i),
118
      .cti(wb1_cti_i),
119
      .cyc(wb1_cyc_i),
120
      .dat(wb1_dat_i),
121
      .sel(wb1_sel_i),
122
      .stb(wb1_stb_i),
123
      .we (wb1_we_i),
124
      .ack(wb1_ack_o),
125
      .clk(wb_clk),
126
      .dat_i(wb1_dat_o),
127
      .reset(wb_rst)
128
      );
129
   wb4_ddr wb4i
130
     (
131
      .adr(wb4_adr_i),
132
      .bte(wb4_bte_i),
133
      .cti(wb4_cti_i),
134
      .cyc(wb4_cyc_i),
135
      .dat(wb4_dat_i),
136
      .sel(wb4_sel_i),
137
      .stb(wb4_stb_i),
138
      .we (wb4_we_i),
139
      .ack(wb4_ack_o),
140
      .clk(wb_clk),
141
      .dat_i(wb4_dat_o),
142
      .reset(wb_rst)
143
      );
144
`endif
145
 
146 9 unneback
   wb_sdram_ctrl_top dut
147
  (
148
   .wbs0_dat_i(wb0_dat_i),
149
   .wbs0_dat_o(wb0_dat_o),
150
   .wbs0_adr_i(wb0_adr_i[31:2]),
151
   .wbs0_sel_i(wb0_sel_i),
152
   .wbs0_cti_i(wb0_cti_i),
153
   .wbs0_bte_i(wb0_bte_i),
154
   .wbs0_we_i (wb0_we_i),
155
   .wbs0_cyc_i(wb0_cyc_i),
156
   .wbs0_stb_i(wb0_stb_i),
157
   .wbs0_ack_o(wb0_ack_o),
158
   .wbs1_dat_i(wb1_dat_i),
159
   .wbs1_dat_o(wb1_dat_o),
160
   .wbs1_adr_i(wb1_adr_i[31:2]),
161
   .wbs1_sel_i(wb1_sel_i),
162
   .wbs1_cti_i(wb1_cti_i),
163
   .wbs1_bte_i(wb1_bte_i),
164
   .wbs1_we_i (wb1_we_i),
165
   .wbs1_cyc_i(wb1_cyc_i),
166
   .wbs1_stb_i(wb1_stb_i),
167
   .wbs1_ack_o(wb1_ack_o),
168
   .wbs4_dat_i(wb4_dat_i),
169
   .wbs4_dat_o(wb4_dat_o),
170
   .wbs4_adr_i(wb4_adr_i[31:2]),
171
   .wbs4_sel_i(wb4_sel_i),
172
   .wbs4_cti_i(wb4_cti_i),
173
   .wbs4_bte_i(wb4_bte_i),
174
   .wbs4_we_i (wb4_we_i),
175
   .wbs4_cyc_i(wb4_cyc_i),
176
   .wbs4_stb_i(wb4_stb_i),
177
   .wbs4_ack_o(wb4_ack_o),
178
   // SDR SDRAM 16
179 11 mikaeljf
`ifdef SDR_16
180 9 unneback
   .ba_pad_o(ba),
181
   .a_pad_o(a),
182
   .cs_n_pad_o(cs_n),
183
   .ras_pad_o(ras),
184
   .cas_pad_o(cas),
185
   .we_pad_o(we),
186
   .dq_o(dq_o),
187
   .dqm_pad_o(dqm),
188
   .dq_i(dq_i),
189
   .dq_oe(dq_oe),
190
   .cke_pad_o(cke),
191 11 mikaeljf
`endif
192
`ifdef DDR_16
193
   // DDR2 SDRAM 16
194
   .ck_pad_o(ck),
195
   .ck_n_pad_o(ck_n),
196
   .cke_pad_o(cke),
197
   .cs_n_pad_o(cs_n),
198
   .ras_pad_o(ras),
199
   .cas_pad_o(cas),
200
   .we_pad_o(we),
201
   .dm_rdqs_i(),
202
   .dm_rdqs_o(dm_rdqs),
203
   .ba_pad_o(ba),
204
   .addr_pad_o(a),
205
   .dq_i(dq_i),
206
   .dq_o(dq_o),
207
   .dq_oe(dq_oe),
208
   .dqs_i(dqs_i),
209
   .dqs_o(dqs_o),
210
   .dqs_oe(dqs_oe),
211
   .dqs_n_i(dqs_n_i),
212
   .dqs_n_o(dqs_n_o),
213
   .rdqs_n_pad_i(),
214
   .odt_pad_o(),
215
`endif
216 9 unneback
   // misc     
217
   .wb_clk(wb_clk),
218
   .wb_rst(wb_rst),
219
   .sdram_clk(sdram_clk)
220
   );
221
 
222
   assign #1 dq_io = dq_oe ? dq_o : {16{1'bz}};
223
   assign #1 dq_i  = dq_io;
224
   assign #1 dqmd = dqm;
225
 
226 11 mikaeljf
   assign #1 dqs_io = dqs_oe ? dqs_o : {2{1'bz}};
227
   assign #1 dqs_i  = dqs_io;
228
   assign #1 dqs_n_io = dqs_oe ? dqs_n_o : {2{1'bz}};
229
   assign #1 dqs_n_i  = dqs_n_io;
230 9 unneback
 
231
   assign #1 ad = a;
232
   assign #1 bad = ba;
233
   assign #1 cked = cke;
234
   assign #1 cs_nd = cs_n;
235
   assign #1 rasd = ras;
236
   assign #1 casd = cas;
237
   assign #1 wed = we;
238
 
239 11 mikaeljf
`ifdef SDR_16
240 9 unneback
mt48lc16m16a2 sdram
241
  (
242
   .Dq(dq_io),
243
   .Addr(ad),
244
   .Ba(bad),
245
   .Clk(sdram_clk),
246
   .Cke(cked),
247
   .Cs_n(cs_nd),
248
   .Ras_n(rasd),
249
   .Cas_n(casd),
250
   .We_n(wed),
251
   .Dqm(dqmd)
252
   );
253 11 mikaeljf
`endif
254
`ifdef DDR_16
255
ddr2 ddr2_sdram
256
  (
257
   .ck(ck),
258
   .ck_n(ck_n),
259
   .cke(cke),
260
   .cs_n(cs_n),
261
   .ras_n(ras),
262
   .cas_n(cas),
263
   .we_n(we),
264
   .dm_rdqs(dm_rdqs),
265
   .ba(ba),
266
   .addr(a),
267
   .dq(dq_io),
268
   .dqs(dqs_io),
269
   .dqs_n(dqs_n_io),
270
   .rdqs_n(),
271
   .odt()
272
   );
273
`endif
274 9 unneback
 
275
   initial
276
     begin
277
        #0 wb_rst = 1'b1;
278
        #200 wb_rst = 1'b1;
279
        #400 wb_rst = 1'b0;
280
     end
281
 
282
   initial
283
     begin
284
        #0 wb_clk = 1'b0;
285
        forever
286
          #20 wb_clk = !wb_clk;   // 25MHz
287
     end
288
 
289
   initial
290
     begin
291
        #0 sdram_clk = 1'b0;
292
        forever
293
          #4 sdram_clk = !sdram_clk;   // 125MHz
294
     end
295
 
296
endmodule // versatile_mem_ctrl_tb

powered by: WebSVN 2.1.0

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