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 106

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 99 unneback
//`include "tb_defines.v"
2 9 unneback
`timescale 1ns/1ns
3
module versatile_mem_ctrl_tb
4
  (
5
   output OK
6
   );
7
 
8 99 unneback
`ifdef NR_OF_WBM
9
        parameter nr_of_wbm = `NR_OF_WBM;
10
`else
11
        parameter nr_of_wbm = 1;
12
`endif
13 9 unneback
 
14 99 unneback
`ifdef SDRAM_CLK_PERIOD
15
        parameter sdram_clk_period = `SDRAM_CLK_PERIOD;
16
`else
17
        parameter sdram_clk_period = 8;
18
`endif
19 94 unneback
 
20 99 unneback
`ifdef WB_CLK_PERIODS
21
        parameter [1:nr_of_wbm] wb_clk_periods = {`WB_CLK_PERIODS};
22
`else
23
        parameter [1:nr_of_wbm] wb_clk_periods = (20);
24
`endif
25
        parameter wb_clk_period = 20;
26
 
27 106 unneback
   wire [31:0] wbm_a_dat_o;
28
   wire [3:0]  wbm_a_sel_o;
29
   wire [31:0] wbm_a_adr_o;
30
   wire [2:0]  wbm_a_cti_o;
31
   wire [1:0]  wbm_a_bte_o;
32
   wire        wbm_a_we_o ;
33
   wire        wbm_a_cyc_o;
34
   wire        wbm_a_stb_o;
35
   wire [31:0] wbm_a_dat_i;
36
   wire        wbm_a_ack_i;
37
   reg         wbm_a_clk  ;
38
   reg         wbm_a_rst  ;
39 99 unneback
 
40 106 unneback
   wire [31:0] wbm_b_dat_o;
41
   wire [3:0]  wbm_b_sel_o;
42
   wire [31:2] wbm_b_adr_o;
43
   wire [2:0]  wbm_b_cti_o;
44
   wire [1:0]  wbm_b_bte_o;
45
   wire        wbm_b_we_o ;
46
   wire        wbm_b_cyc_o;
47
   wire        wbm_b_stb_o;
48
   wire [31:0] wbm_b_dat_i;
49
   wire        wbm_b_ack_i;
50 99 unneback
 
51 94 unneback
   wire [31:0] wb_sdram_dat_i;
52
   wire [3:0]  wb_sdram_sel_i;
53 99 unneback
   wire [31:2] wb_sdram_adr_i;
54 94 unneback
   wire [2:0]  wb_sdram_cti_i;
55
   wire [1:0]  wb_sdram_bte_i;
56 99 unneback
   wire        wb_sdram_we_i;
57 94 unneback
   wire        wb_sdram_cyc_i;
58
   wire        wb_sdram_stb_i;
59
   wire [31:0] wb_sdram_dat_o;
60
   wire        wb_sdram_ack_o;
61 99 unneback
   reg         wb_sdram_clk;
62
   reg         wb_sdram_rst;
63
 
64 106 unneback
        wire wbm_OK;
65 99 unneback
 
66
        genvar i;
67
 
68
`define DUT sdr_sdram_16_ctrl
69
`define SDR 16
70
`ifdef SDR
71
        wire [1:0]  ba, ba_pad;
72
        wire [12:0] a, a_pad;
73
        wire [`SDR-1:0] dq_i, dq_o, dq_pad;
74
        wire        dq_oe;
75
        wire [1:0]  dqm, dqm_pad;
76
        wire        cke, cke_pad, cs_n, cs_n_pad, ras, ras_pad, cas, cas_pad, we, we_pad;
77 106 unneback
 
78
    vl_o_dff # ( .width(20), .reset_value({2'b00, 13'h0,3'b111,2'b11})) o0(
79
        .d_i({ba,a,ras,cas,we,dqm}),
80
        .o_pad({ba_pad,a_pad,ras_pad, cas_pad, we_pad, dqm_pad}),
81
        .clk(wb_sdram_clk),
82
        .rst(wb_sdram_rst));
83
        /*
84 99 unneback
        assign #1 {ba_pad,a_pad} = {ba,a};
85
        assign #1 {ras_pad, cas_pad, we_pad} = {ras,cas,we};
86 106 unneback
        assign #1 dqm_pad = dqm;*/
87 99 unneback
        assign #1 cke_pad = cke;
88
        assign cs_n_pad = cs_n;
89 106 unneback
    vl_io_dff_oe # ( .width(16)) io0 (
90
        .d_i(dq_i),
91
        .d_o(dq_o),
92
        .oe(dq_oe),
93
        .io_pad(dq_pad),
94
        .clk(wb_sdram_clk),
95
        .rst(wb_sdram_rst));
96
 
97 99 unneback
        mt48lc16m16a2 mem(
98
                .Dq(dq_pad),
99
                .Addr(a_pad),
100
                .Ba(ba_pad),
101
                .Clk(wb_sdram_clk),
102
                .Cke(cke_pad),
103
                .Cs_n(cs_n_pad),
104
                .Ras_n(ras_pad),
105
                .Cas_n(cas_pad),
106
                .We_n(we_pad),
107
                .Dqm(dqm_pad));
108 106 unneback
 
109
        `DUT
110
        # (.tRFC(9), .cl(3))
111
        DUT(
112 99 unneback
        // wisbone i/f
113 106 unneback
        .dat_i(wbm_b_dat_o),
114
        .adr_i({wbm_b_adr_o[24:2],1'b0}),
115
        .sel_i(wbm_b_sel_o),
116
`ifndef NO_BURST
117
        .bte_i(wbm_b_bte_o),
118
`endif
119
        .we_i (wbm_b_we_o),
120
        .cyc_i(wbm_b_cyc_o),
121
        .stb_i(wbm_b_stb_o),
122
        .dat_o(wbm_b_dat_i),
123
        .ack_o(wbm_b_ack_i),
124 99 unneback
        // SDR SDRAM
125
        .ba(ba),
126
        .a(a),
127
        .cmd({ras, cas, we}),
128
        .cke(cke),
129
        .cs_n(cs_n),
130
        .dqm(dqm),
131
        .dq_i(dq_i),
132
        .dq_o(dq_o),
133
        .dq_oe(dq_oe),
134
        // system
135
        .clk(wb_sdram_clk), .rst(wb_sdram_rst));
136
 
137
`endif
138 9 unneback
 
139 106 unneback
// wishbone master
140 99 unneback
 
141 106 unneback
        wbm wbmi(
142
            .adr_o(wbm_a_adr_o),
143
            .bte_o(wbm_a_bte_o),
144
            .cti_o(wbm_a_cti_o),
145
            .dat_o(wbm_a_dat_o),
146
            .sel_o(wbm_a_sel_o),
147
            .we_o (wbm_a_we_o),
148
            .cyc_o(wbm_a_cyc_o),
149
            .stb_o(wbm_a_stb_o),
150
            .dat_i(wbm_a_dat_i),
151
            .ack_i(wbm_a_ack_i),
152
            .clk(wbm_a_clk),
153
            .reset(wbm_a_rst),
154
            .OK(wbm_OK)
155 99 unneback
);
156 11 mikaeljf
 
157 106 unneback
        vl_wb3wb3_bridge wbwb_bridgei (
158 99 unneback
        // wishbone slave side
159 106 unneback
        .wbs_dat_i(wbm_a_dat_o),
160
        .wbs_adr_i(wbm_a_adr_o[31:2]),
161
        .wbs_sel_i(wbm_a_sel_o),
162
        .wbs_bte_i(wbm_a_bte_o),
163
        .wbs_cti_i(wbm_a_cti_o),
164
        .wbs_we_i (wbm_a_we_o),
165
        .wbs_cyc_i(wbm_a_cyc_o),
166
        .wbs_stb_i(wbm_a_stb_o),
167
        .wbs_dat_o(wbm_a_dat_i),
168
        .wbs_ack_o(wbm_a_ack_i),
169
        .wbs_clk(wbm_a_clk),
170
        .wbs_rst(wbm_a_rst),
171 99 unneback
        // wishbone master side
172 106 unneback
        .wbm_dat_o(wbm_b_dat_o),
173
        .wbm_adr_o(wbm_b_adr_o),
174
        .wbm_sel_o(wbm_b_sel_o),
175
        .wbm_bte_o(wbm_b_bte_o),
176
        .wbm_cti_o(wbm_b_cti_o),
177
        .wbm_we_o (wbm_b_we_o),
178
        .wbm_cyc_o(wbm_b_cyc_o),
179
        .wbm_stb_o(wbm_b_stb_o),
180
        .wbm_dat_i(wbm_b_dat_i),
181
        .wbm_ack_i(wbm_b_ack_i),
182 99 unneback
        .wbm_clk(wb_sdram_clk),
183
        .wbm_rst(wb_sdram_rst));
184
 
185 9 unneback
 
186 11 mikaeljf
 
187 106 unneback
        assign OK = wbm_OK;
188 99 unneback
 
189 33 unneback
 
190 99 unneback
                // Wishbone reset
191
                initial
192
        begin
193 106 unneback
                #0      wbm_a_rst = 1'b1;
194
                #200    wbm_a_rst = 1'b0;
195 99 unneback
        end
196 33 unneback
 
197 99 unneback
                // Wishbone clock
198
                initial
199
        begin
200 106 unneback
                #0 wbm_a_clk = 1'b0;
201 99 unneback
                forever
202 106 unneback
                        #(wb_clk_period/2) wbm_a_clk = !wbm_a_clk;
203 99 unneback
        end
204 9 unneback
 
205 33 unneback
 
206 80 mikaeljf
 
207
   // SDRAM reset
208
   initial
209
     begin
210 99 unneback
        #0      wb_sdram_rst = 1'b1;
211
        #200    wb_sdram_rst = 1'b0;
212 80 mikaeljf
     end
213 9 unneback
 
214 80 mikaeljf
   // SDRAM clock
215 9 unneback
   initial
216
     begin
217 99 unneback
        #0 wb_sdram_clk = 1'b0;
218 9 unneback
        forever
219 99 unneback
          #(sdram_clk_period/2) wb_sdram_clk = !wb_sdram_clk;
220 9 unneback
     end
221
 
222
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.