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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [boards/] [xilinx/] [ml501/] [bench/] [verilog/] [orpsoc_testbench.v] - Blame information for rev 415

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

Line No. Rev Author Line
1 412 julius
//////////////////////////////////////////////////////////////////////
2
///                                                               //// 
3
/// ORPSoC ML501 testbench                                        ////
4
///                                                               ////
5
/// Instantiate ORPSoC, monitors, provide stimulus                ////
6
///                                                               ////
7
/// Julius Baxter, julius@opencores.org                           ////
8
///                                                               ////
9
//////////////////////////////////////////////////////////////////////
10
////                                                              ////
11
//// Copyright (C) 2009, 2010 Authors and OPENCORES.ORG           ////
12
////                                                              ////
13
//// This source file may be used and distributed without         ////
14
//// restriction provided that this copyright statement is not    ////
15
//// removed from the file and that any derivative work contains  ////
16
//// the original copyright notice and the associated disclaimer. ////
17
////                                                              ////
18
//// This source file is free software; you can redistribute it   ////
19
//// and/or modify it under the terms of the GNU Lesser General   ////
20
//// Public License as published by the Free Software Foundation; ////
21
//// either version 2.1 of the License, or (at your option) any   ////
22
//// later version.                                               ////
23
////                                                              ////
24
//// This source is distributed in the hope that it will be       ////
25
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
26
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
27
//// PURPOSE.  See the GNU Lesser General Public License for more ////
28
//// details.                                                     ////
29
////                                                              ////
30
//// You should have received a copy of the GNU Lesser General    ////
31
//// Public License along with this source; if not, download it   ////
32
//// from http://www.opencores.org/lgpl.shtml                     ////
33
////                                                              ////
34
//////////////////////////////////////////////////////////////////////
35
 
36
`include "orpsoc-defines.v"
37
`include "orpsoc-testbench-defines.v"
38
`include "test-defines.v"
39
`include "timescale.v"
40
// Xilinx simulation:
41
`include "glbl.v"
42
 
43
module orpsoc_testbench;
44
 
45
   // Clock and reset signal registers
46
   reg clk = 0;
47
   reg rst_n = 1; // Active LOW
48
 
49
   always
50
     #((`BOARD_CLOCK_PERIOD)/2) clk <= ~clk;
51
 
52
   wire clk_n, clk_p;
53
   assign clk_p = clk;
54
   assign clk_n = ~clk;
55
 
56
 
57
   // Reset, ACTIVE LOW
58
   initial
59
     begin
60
        #1;
61
        repeat (32) @(negedge clk)
62
          rst_n <= 1;
63
        repeat (32) @(negedge clk)
64
          rst_n <= 0;
65
        repeat (32) @(negedge clk)
66
          rst_n <= 1;
67
     end
68
 
69
   // Include design parameters file
70
`include "orpsoc-params.v"
71
 
72
   // Pullup bus for I2C
73
   tri1 i2c_scl, i2c_sda;
74
 
75
`ifdef JTAG_DEBUG
76 415 julius
   wire tdo_pad_o;
77
   wire tck_pad_i;
78
   wire tms_pad_i;
79
   wire tdi_pad_i;
80 412 julius
`endif
81
`ifdef UART0
82 415 julius
   wire uart0_stx_pad_o;
83
   wire uart0_srx_pad_i;
84 412 julius
`endif
85
`ifdef GPIO0
86
   wire [gpio0_io_width-1:0] gpio0_io;
87
`endif
88
`ifdef SPI0
89
   wire                      spi0_mosi_o;
90
   wire                      spi0_miso_i;
91
   wire                      spi0_sck_o;
92
   wire                      spi0_hold_n_o;
93
   wire                      spi0_w_n_o;
94
   wire [spi0_ss_width-1:0]  spi0_ss_o;
95
`endif
96
`ifdef ETH0
97
   wire                      mtx_clk_o;
98
   wire [3:0]                 ethphy_mii_tx_d;
99
   wire                      ethphy_mii_tx_en;
100
   wire                      ethphy_mii_tx_err;
101
   wire                      mrx_clk_o;
102
   wire [3:0]                 mrxd_o;
103
   wire                      mrxdv_o;
104
   wire                      mrxerr_o;
105
   wire                      mcoll_o;
106
   wire                      mcrs_o;
107
   wire                      ethphy_rst_n;
108
   wire                      eth0_mdc_pad_o;
109
   wire                      eth0_md_pad_io;
110
`endif
111
`ifdef XILINX_DDR2
112
 `include "xilinx_ddr2_params.v"
113
   localparam DEVICE_WIDTH    = 16;      // Memory device data width
114
   localparam real           CLK_PERIOD_NS   = CLK_PERIOD / 1000.0;
115
   localparam real           TCYC_200           = 5.0;
116
   localparam real           TPROP_DQS          = 0.00;  // Delay for DQS signal during Write Operation
117
   localparam real           TPROP_DQS_RD       = 0.00;  // Delay for DQS signal during Read Operation
118
   localparam real           TPROP_PCB_CTRL     = 0.00;  // Delay for Address and Ctrl signals
119
   localparam real           TPROP_PCB_DATA     = 0.00;  // Delay for data signal during Write operation
120
   localparam real           TPROP_PCB_DATA_RD  = 0.00;  // Delay for data signal during Read operation
121
 
122
   wire [DQ_WIDTH-1:0]        ddr2_dq_sdram;
123
   wire [DQS_WIDTH-1:0]      ddr2_dqs_sdram;
124
   wire [DQS_WIDTH-1:0]      ddr2_dqs_n_sdram;
125
   wire [DM_WIDTH-1:0]        ddr2_dm_sdram;
126
   reg [DM_WIDTH-1:0]         ddr2_dm_sdram_tmp;
127
   reg [CLK_WIDTH-1:0]        ddr2_ck_sdram;
128
   reg [CLK_WIDTH-1:0]        ddr2_ck_n_sdram;
129
   reg [ROW_WIDTH-1:0]        ddr2_a_sdram;
130
   reg [BANK_WIDTH-1:0]      ddr2_ba_sdram;
131
   reg                       ddr2_ras_n_sdram;
132
   reg                       ddr2_cas_n_sdram;
133
   reg                       ddr2_we_n_sdram;
134
   reg [CS_WIDTH-1:0]         ddr2_cs_n_sdram;
135
   reg [CKE_WIDTH-1:0]        ddr2_cke_sdram;
136
   reg [ODT_WIDTH-1:0]        ddr2_odt_sdram;
137
 
138
   wire [DQ_WIDTH-1:0]        ddr2_dq_fpga;
139
   wire [DQS_WIDTH-1:0]      ddr2_dqs_fpga;
140
   wire [DQS_WIDTH-1:0]      ddr2_dqs_n_fpga;
141
   wire [DM_WIDTH-1:0]        ddr2_dm_fpga;
142
   wire [CLK_WIDTH-1:0]      ddr2_ck_fpga;
143
   wire [CLK_WIDTH-1:0]      ddr2_ck_n_fpga;
144
   wire [ROW_WIDTH-1:0]      ddr2_a_fpga;
145
   wire [BANK_WIDTH-1:0]     ddr2_ba_fpga;
146
   wire                      ddr2_ras_n_fpga;
147
   wire                      ddr2_cas_n_fpga;
148
   wire                      ddr2_we_n_fpga;
149
   wire [CS_WIDTH-1:0]        ddr2_cs_n_fpga;
150
   wire [CKE_WIDTH-1:0]      ddr2_cke_fpga;
151
   wire [ODT_WIDTH-1:0]      ddr2_odt_fpga;
152
`endif
153
`ifdef XILINX_SSRAM
154 415 julius
   wire                      sram_clk;
155
   wire                      sram_clk_fb;
156
   wire                      sram_adv_ld_n;
157
   wire [3:0]                 sram_bw;
158
   wire                      sram_cen;
159
   wire [21:1]               sram_flash_addr;
160
   wire [31:0]                sram_flash_data;
161
   wire                      sram_flash_oe_n;
162
   wire                      sram_flash_we_n;
163
   wire                      sram_mode;
164 412 julius
`endif
165
 
166
   orpsoc_top dut
167
     (
168
`ifdef JTAG_DEBUG
169
      .tms_pad_i                        (tms_pad_i),
170
      .tck_pad_i                        (tck_pad_i),
171
      .tdi_pad_i                        (tdi_pad_i),
172
      .tdo_pad_o                        (tdo_pad_o),
173
`endif
174
`ifdef XILINX_DDR2
175
      .ddr2_a                           (ddr2_a_fpga),
176
      .ddr2_ba                          (ddr2_ba_fpga),
177
      .ddr2_ras_n                       (ddr2_ras_n_fpga),
178
      .ddr2_cas_n                       (ddr2_cas_n_fpga),
179
      .ddr2_we_n                        (ddr2_we_n_fpga),
180
      .ddr2_cs_n                        (ddr2_cs_n_fpga),
181
      .ddr2_odt                         (ddr2_odt_fpga),
182
      .ddr2_cke                         (ddr2_cke_fpga),
183
      .ddr2_dm                          (ddr2_dm_fpga),
184
      .ddr2_ck                          (ddr2_ck_fpga),
185
      .ddr2_ck_n                        (ddr2_ck_n_fpga),
186
      .ddr2_dq                          (ddr2_dq_fpga),
187
      .ddr2_dqs                         (ddr2_dqs_fpga),
188
      .ddr2_dqs_n                       (ddr2_dqs_n_fpga),
189
`endif
190
`ifdef XILINX_SSRAM
191
      .sram_clk                         (sram_clk),
192
      .sram_flash_addr                  (sram_flash_addr),
193
      .sram_cen                         (sram_cen),
194
      .sram_flash_oe_n                  (sram_flash_oe_n),
195
      .sram_flash_we_n                  (sram_flash_we_n),
196
      .sram_bw                          (sram_bw),
197
      .sram_adv_ld_n                    (sram_adv_ld_n),
198
      .sram_mode                        (sram_mode),
199
      .sram_clk_fb                      (sram_clk_fb),
200
      .sram_flash_data                  (sram_flash_data),
201
`endif
202
`ifdef UART0
203
      .uart0_stx_pad_o                  (uart0_stx_pad_o),
204
      .uart0_srx_pad_i                  (uart0_srx_pad_i),
205
      .uart0_stx_expheader_pad_o        (uart0_stx_pad_o),
206
      .uart0_srx_expheader_pad_i        (uart0_srx_pad_i),
207
`endif
208
`ifdef SPI0
209 415 julius
      /*
210
       via STARTUP_VIRTEX5
211
       .spi0_sck_o                      (spi0_sck_o),
212
       .spi0_miso_i                     (spi0_miso_i),
213
       */
214 412 julius
      .spi0_mosi_o                      (spi0_mosi_o),
215
      .spi0_ss_o                        (spi0_ss_o),
216
`endif
217
`ifdef I2C0
218
      .i2c0_sda_io                      (i2c_sda),
219
      .i2c0_scl_io                      (i2c_scl),
220
`endif
221
`ifdef I2C1
222
      .i2c1_sda_io                      (i2c_sda),
223
      .i2c1_scl_io                      (i2c_scl),
224
`endif
225
`ifdef GPIO0
226
      .gpio0_io                         (gpio0_io),
227
`endif
228
`ifdef ETH0
229
      .eth0_tx_clk                      (mtx_clk_o),
230
      .eth0_tx_data                     (ethphy_mii_tx_d),
231
      .eth0_tx_en                       (ethphy_mii_tx_en),
232
      .eth0_tx_er                       (ethphy_mii_tx_err),
233
      .eth0_rx_clk                      (mrx_clk_o),
234
      .eth0_rx_data                     (mrxd_o),
235
      .eth0_dv                          (mrxdv_o),
236
      .eth0_rx_er                       (mrxerr_o),
237
      .eth0_col                         (mcoll_o),
238
      .eth0_crs                         (mcrs_o),
239
      .eth0_rst_n_o                     (ethphy_rst_n),
240
      .eth0_mdc_pad_o                   (eth0_mdc_pad_o),
241
      .eth0_md_pad_io                   (eth0_md_pad_io),
242
`endif //  `ifdef ETH0
243
 
244
      .sys_clk_in_p                     (clk_p),
245
      .sys_clk_in_n                     (clk_n),
246
 
247
      .rst_n_pad_i                      (rst_n)
248
      );
249
 
250
   //
251
   // Instantiate OR1200 monitor
252
   //
253
   or1200_monitor monitor();
254
 
255
`ifndef SIM_QUIET
256
 `define CPU_ic_top or1200_ic_top
257
 `define CPU_dc_top or1200_dc_top
258 415 julius
   wire                      ic_en = orpsoc_testbench.dut.or1200_top0.or1200_ic_top.ic_en;
259 412 julius
   always @(posedge ic_en)
260
     $display("Or1200 IC enabled at %t", $time);
261
 
262 415 julius
   wire                      dc_en = orpsoc_testbench.dut.or1200_top0.or1200_dc_top.dc_en;
263 412 julius
   always @(posedge dc_en)
264
     $display("Or1200 DC enabled at %t", $time);
265
`endif
266
 
267
 
268
`ifdef JTAG_DEBUG
269
 `ifdef VPI_DEBUG
270
   // Debugging interface
271
   vpi_debug_module vpi_dbg
272
     (
273
      .tms(tms_pad_i),
274
      .tck(tck_pad_i),
275
      .tdi(tdi_pad_i),
276
      .tdo(tdo_pad_o)
277
      );
278
 `else
279
   // If no VPI debugging, tie off JTAG inputs
280
   assign tdi_pad_i = 1;
281
   assign tck_pad_i = 0;
282
   assign tms_pad_i = 1;
283
 `endif // !`ifdef VPI_DEBUG_ENABLE
284
`endif //  `ifdef JTAG_DEBUG
285
 
286
`ifdef SPI0
287 415 julius
   // STARTUP_VIRTEX5 module routes these out on the board.
288
   // So for now just connect directly to the internals here.
289
   assign spi0_sck_o = dut.spi0_sck_o;
290
   assign dut.spi0_miso_i = spi0_miso_i;
291
 
292 412 julius
   // SPI flash memory - M25P16 compatible SPI protocol
293 415 julius
   AT26DFxxx
294
     #(.MEMSIZE(2048*1024)) // 2MB flash on ML501
295
     spi0_flash
296 412 julius
     (// Outputs
297
      .SO                                       (spi0_miso_i),
298
      // Inputs
299
      .CSB                                      (spi0_ss_o),
300
      .SCK                                      (spi0_sck_o),
301
      .SI                                       (spi0_mosi_o),
302
      .WPB                                      (1'b1)
303
      );
304 415 julius
 
305
 
306 412 julius
`endif //  `ifdef SPI0
307
 
308
`ifdef ETH0
309
 
310
   /* TX/RXes packets and checks them, enabled when ethernet MAC is */
311
 `include "eth_stim.v"
312
 
313
   eth_phy eth_phy0
314
     (
315
      // Outputs
316
      .mtx_clk_o                        (mtx_clk_o),
317
      .mrx_clk_o                        (mrx_clk_o),
318
      .mrxd_o                           (mrxd_o[3:0]),
319
      .mrxdv_o                          (mrxdv_o),
320
      .mrxerr_o                         (mrxerr_o),
321
      .mcoll_o                          (mcoll_o),
322
      .mcrs_o                           (mcrs_o),
323
      .link_o                           (),
324
      .speed_o                          (),
325
      .duplex_o                         (),
326
      .smii_clk_i                       (1'b0),
327
      .smii_sync_i                      (1'b0),
328
      .smii_rx_o                        (),
329
      // Inouts
330
      .md_io                            (eth0_md_pad_io),
331
      // Inputs
332
 `ifndef ETH0_PHY_RST
333
      // If no reset out from the design, hook up to the board's active low rst
334
      .m_rst_n_i                        (rst_n),
335
 `else
336
      .m_rst_n_i                        (ethphy_rst_n),
337
 `endif
338
      .mtxd_i                           (ethphy_mii_tx_d[3:0]),
339
      .mtxen_i                          (ethphy_mii_tx_en),
340
      .mtxerr_i                         (ethphy_mii_tx_err),
341
      .mdc_i                            (eth0_mdc_pad_o));
342
 
343
`endif //  `ifdef ETH0
344
 
345
`ifdef XILINX_SSRAM
346 415 julius
   wire [18:0]                sram_a;
347
   wire [3:0]                 dqp;
348 412 julius
 
349
   assign sram_a[18:0] = sram_flash_addr[19:1];
350 415 julius
   wire                      sram_ce1b, sram_ce2, sram_ce3b;
351 412 julius
   assign sram_ce1b = 1'b0;
352
   assign sram_ce2 = 1'b1;
353
   assign sram_ce3b = 1'b0;
354
   assign sram_clk_fb = sram_clk;
355
 
356
   cy7c1354 ssram0
357
     (
358
      // Inouts
359
      // This model puts each parity bit after each byte, but the ML501's part
360
      // doesn't, so we wire up the data bus like so.
361
      .d                                ({dqp[3],sram_flash_data[31:24],
362
                                          dqp[2],sram_flash_data[23:16],
363
                                          dqp[1],sram_flash_data[15:8],
364
                                          dqp[0],sram_flash_data[7:0]}),
365
      // Inputs
366
      .clk                              (sram_clk),
367
      .we_b                             (sram_flash_we_n),
368
      .adv_lb                           (sram_adv_ld_n),
369
      .ce1b                             (sram_ce1b),
370
      .ce2                              (sram_ce2),
371
      .ce3b                             (sram_ce3b),
372
      .oeb                              (sram_flash_oe_n),
373
      .cenb                             (sram_cen),
374
      .mode                             (sram_mode),
375
      .bws                              (sram_bw),
376
      .a                                (sram_a));
377
`endif
378
 
379
`ifdef XILINX_DDR2
380
 `ifndef GATE_SIM
381
   defparam dut.xilinx_ddr2_0.xilinx_ddr2_if0.ddr2_mig0.SIM_ONLY = 1;
382
 `endif
383
 
384
   always @( * ) begin
385
      ddr2_ck_sdram        <=  #(TPROP_PCB_CTRL) ddr2_ck_fpga;
386
      ddr2_ck_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_ck_n_fpga;
387
      ddr2_a_sdram    <=  #(TPROP_PCB_CTRL) ddr2_a_fpga;
388
      ddr2_ba_sdram         <=  #(TPROP_PCB_CTRL) ddr2_ba_fpga;
389
      ddr2_ras_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_ras_n_fpga;
390
      ddr2_cas_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_cas_n_fpga;
391
      ddr2_we_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_we_n_fpga;
392
      ddr2_cs_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_cs_n_fpga;
393
      ddr2_cke_sdram        <=  #(TPROP_PCB_CTRL) ddr2_cke_fpga;
394
      ddr2_odt_sdram        <=  #(TPROP_PCB_CTRL) ddr2_odt_fpga;
395
      ddr2_dm_sdram_tmp     <=  #(TPROP_PCB_DATA) ddr2_dm_fpga;//DM signal generation
396
   end // always @ ( * )
397
 
398
   // Model delays on bi-directional BUS
399
   genvar dqwd;
400
   generate
401
      for (dqwd = 0;dqwd < DQ_WIDTH;dqwd = dqwd+1) begin : dq_delay
402
         wiredelay #
403
           (
404
            .Delay_g     (TPROP_PCB_DATA),
405
            .Delay_rd    (TPROP_PCB_DATA_RD)
406
            )
407
         u_delay_dq
408
           (
409
            .A           (ddr2_dq_fpga[dqwd]),
410
            .B           (ddr2_dq_sdram[dqwd]),
411
            .reset       (rst_n)
412
            );
413
      end
414
   endgenerate
415
 
416
   genvar dqswd;
417
   generate
418
      for (dqswd = 0;dqswd < DQS_WIDTH;dqswd = dqswd+1) begin : dqs_delay
419
         wiredelay #
420
           (
421
            .Delay_g     (TPROP_DQS),
422
            .Delay_rd    (TPROP_DQS_RD)
423
            )
424
         u_delay_dqs
425
           (
426
            .A           (ddr2_dqs_fpga[dqswd]),
427
            .B           (ddr2_dqs_sdram[dqswd]),
428
            .reset       (rst_n)
429
            );
430
 
431
         wiredelay #
432
           (
433
            .Delay_g     (TPROP_DQS),
434
            .Delay_rd    (TPROP_DQS_RD)
435
            )
436
         u_delay_dqs_n
437
           (
438
            .A           (ddr2_dqs_n_fpga[dqswd]),
439
            .B           (ddr2_dqs_n_sdram[dqswd]),
440
            .reset       (rst_n)
441
            );
442
      end
443
   endgenerate
444
 
445
   assign ddr2_dm_sdram = ddr2_dm_sdram_tmp;
446
   parameter NUM_PROGRAM_WORDS=1048576;
447
   integer ram_ptr, program_word_ptr, k;
448
   reg [31:0] tmp_program_word;
449
   reg [31:0] program_array [0:NUM_PROGRAM_WORDS-1]; // 1M words = 4MB
450
   reg [8*16-1:0] ddr2_ram_mem_line; //8*16-bits= 8 shorts (half-words)
451
   genvar         i, j;
452
   generate
453
      // if the data width is multiple of 16
454
      for(j = 0; j < CS_NUM; j = j+1) begin : gen_cs // Loop of 1
455
         for(i = 0; i < DQS_WIDTH/2; i = i+1) begin : gen // Loop of 4 (DQS_WIDTH=8)
456
            initial
457
              begin
458
 
459
 `ifdef PRELOAD_RAM
460
  `include "ddr2_model_preload.v"
461 415 julius
 `endif
462
              end
463
 
464
            ddr2_model u_mem0
465
              (
466
               .ck        (ddr2_ck_sdram[CLK_WIDTH*i/DQS_WIDTH]),
467
               .ck_n      (ddr2_ck_n_sdram[CLK_WIDTH*i/DQS_WIDTH]),
468
               .cke       (ddr2_cke_sdram[j]),
469
               .cs_n      (ddr2_cs_n_sdram[CS_WIDTH*i/DQS_WIDTH]),
470
               .ras_n     (ddr2_ras_n_sdram),
471
               .cas_n     (ddr2_cas_n_sdram),
472
               .we_n      (ddr2_we_n_sdram),
473
               .dm_rdqs   (ddr2_dm_sdram[(2*(i+1))-1 : i*2]),
474
               .ba        (ddr2_ba_sdram),
475
               .addr      (ddr2_a_sdram),
476
               .dq        (ddr2_dq_sdram[(16*(i+1))-1 : i*16]),
477
               .dqs       (ddr2_dqs_sdram[(2*(i+1))-1 : i*2]),
478
               .dqs_n     (ddr2_dqs_n_sdram[(2*(i+1))-1 : i*2]),
479
               .rdqs_n    (),
480
               .odt       (ddr2_odt_sdram[ODT_WIDTH*i/DQS_WIDTH])
481
               );
482
         end
483
      end
484
   endgenerate
485 412 julius
 
486
`endif
487
 
488
 
489
`ifdef VCD
490
   reg vcd_go = 0;
491
   always @(vcd_go)
492
     begin
493
 
494
 `ifdef VCD_DELAY
495
        #(`VCD_DELAY);
496
 `endif
497
 
498
        // Delay by x insns
499
 `ifdef VCD_DELAY_INSNS
500
        #10; // Delay until after the value becomes valid
501
        while (monitor.insns < `VCD_DELAY_INSNS)
502
          @(posedge clk);
503
 `endif
504
 
505
 `ifdef SIMULATOR_MODELSIM
506
        // Modelsim can GZip VCDs on the fly if given in the suffix
507
  `define VCD_SUFFIX   ".vcd.gz"
508
 `else
509
  `define VCD_SUFFIX   ".vcd"
510
 `endif
511
 
512 415 julius
 `ifndef SIM_QUIET
513 412 julius
        $display("* VCD in %s\n", {"../out/",`TEST_NAME_STRING,`VCD_SUFFIX});
514 415 julius
 `endif
515 412 julius
        $dumpfile({"../out/",`TEST_NAME_STRING,`VCD_SUFFIX});
516
 `ifndef VCD_DEPTH
517
  `define VCD_DEPTH 0
518
 `endif
519
        $dumpvars(`VCD_DEPTH);
520
 
521
     end
522
`endif //  `ifdef VCD
523
 
524
   initial
525
     begin
526
`ifndef SIM_QUIET
527
        $display("\n* Starting simulation of design RTL.\n* Test: %s\n",
528
                 `TEST_NAME_STRING );
529
`endif
530
 
531
`ifdef VCD
532
        vcd_go = 1;
533
`endif
534
 
535
     end // initial begin
536
 
537
`ifdef END_TIME
538
   initial begin
539
      #(`END_TIME);
540 415 julius
 `ifndef SIM_QUIET
541 412 julius
      $display("* Finish simulation due to END_TIME being set at %t", $time);
542 415 julius
 `endif
543 412 julius
      $finish;
544
   end
545
`endif
546
 
547
`ifdef END_INSNS
548
   initial begin
549
      #10
550
        while (monitor.insns < `END_INSNS)
551
          @(posedge clk);
552
 `ifndef SIM_QUIET
553
      $display("* Finish simulation due to END_INSNS count (%d) reached at %t",
554
               `END_INSNS, $time);
555
 `endif
556
      $finish;
557
   end
558
`endif
559
 
560
`ifdef UART0
561
   //   
562
   // UART0 decoder
563
   //   
564
   uart_decoder
565
     #(
566
        .uart_baudrate_period_ns(8680) // 115200 baud = period 8.68uS
567
        )
568
   uart0_decoder
569
     (
570
      .clk(clk),
571
      .uart_tx(uart0_stx_pad_o)
572
      );
573
 
574
   // Loopback UART lines
575
   assign uart0_srx_pad_i = uart0_stx_pad_o;
576
 
577
`endif //  `ifdef UART0
578
 
579
endmodule // orpsoc_testbench
580
 
581
// Local Variables:
582
// verilog-library-directories:("." "../../rtl/verilog/orpsoc_top")
583
// verilog-library-files:()
584
// verilog-library-extensions:(".v" ".h")
585
// End:
586
 

powered by: WebSVN 2.1.0

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