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 412

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
   wire                      tdo_pad_o;
77
   wire                      tck_pad_i;
78
   wire                      tms_pad_i;
79
   wire                      tdi_pad_i;
80
`endif
81
`ifdef UART0
82
   wire                      uart0_stx_pad_o;
83
   wire                      uart0_srx_pad_i;
84
`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
   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
`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
      .spi0_sck_o                       (spi0_sck_o),
210
      .spi0_mosi_o                      (spi0_mosi_o),
211
      .spi0_miso_i                      (spi0_miso_i),
212
      .spi0_ss_o                        (spi0_ss_o),
213
`endif
214
`ifdef I2C0
215
      .i2c0_sda_io                      (i2c_sda),
216
      .i2c0_scl_io                      (i2c_scl),
217
`endif
218
`ifdef I2C1
219
      .i2c1_sda_io                      (i2c_sda),
220
      .i2c1_scl_io                      (i2c_scl),
221
`endif
222
`ifdef GPIO0
223
      .gpio0_io                         (gpio0_io),
224
`endif
225
`ifdef ETH0
226
      .eth0_tx_clk                      (mtx_clk_o),
227
      .eth0_tx_data                     (ethphy_mii_tx_d),
228
      .eth0_tx_en                       (ethphy_mii_tx_en),
229
      .eth0_tx_er                       (ethphy_mii_tx_err),
230
      .eth0_rx_clk                      (mrx_clk_o),
231
      .eth0_rx_data                     (mrxd_o),
232
      .eth0_dv                          (mrxdv_o),
233
      .eth0_rx_er                       (mrxerr_o),
234
      .eth0_col                         (mcoll_o),
235
      .eth0_crs                         (mcrs_o),
236
      .eth0_rst_n_o                     (ethphy_rst_n),
237
      .eth0_mdc_pad_o                   (eth0_mdc_pad_o),
238
      .eth0_md_pad_io                   (eth0_md_pad_io),
239
`endif //  `ifdef ETH0
240
 
241
      .sys_clk_in_p                     (clk_p),
242
      .sys_clk_in_n                     (clk_n),
243
 
244
      .rst_n_pad_i                      (rst_n)
245
      );
246
 
247
   //
248
   // Instantiate OR1200 monitor
249
   //
250
   or1200_monitor monitor();
251
 
252
`ifndef SIM_QUIET
253
 `define CPU_ic_top or1200_ic_top
254
 `define CPU_dc_top or1200_dc_top
255
   wire ic_en = orpsoc_testbench.dut.or1200_top0.or1200_ic_top.ic_en;
256
   always @(posedge ic_en)
257
     $display("Or1200 IC enabled at %t", $time);
258
 
259
   wire dc_en = orpsoc_testbench.dut.or1200_top0.or1200_dc_top.dc_en;
260
   always @(posedge dc_en)
261
     $display("Or1200 DC enabled at %t", $time);
262
`endif
263
 
264
 
265
`ifdef JTAG_DEBUG
266
 `ifdef VPI_DEBUG
267
   // Debugging interface
268
   vpi_debug_module vpi_dbg
269
     (
270
      .tms(tms_pad_i),
271
      .tck(tck_pad_i),
272
      .tdi(tdi_pad_i),
273
      .tdo(tdo_pad_o)
274
      );
275
 `else
276
   // If no VPI debugging, tie off JTAG inputs
277
   assign tdi_pad_i = 1;
278
   assign tck_pad_i = 0;
279
   assign tms_pad_i = 1;
280
 `endif // !`ifdef VPI_DEBUG_ENABLE
281
`endif //  `ifdef JTAG_DEBUG
282
 
283
`ifdef SPI0
284
   // SPI flash memory - M25P16 compatible SPI protocol
285
   AT26DFxxx spi0_flash
286
     (// Outputs
287
      .SO                                       (spi0_miso_i),
288
      // Inputs
289
      .CSB                                      (spi0_ss_o),
290
      .SCK                                      (spi0_sck_o),
291
      .SI                                       (spi0_mosi_o),
292
      .WPB                                      (1'b1)
293
      );
294
`endif //  `ifdef SPI0
295
 
296
`ifdef ETH0
297
 
298
   /* TX/RXes packets and checks them, enabled when ethernet MAC is */
299
 `include "eth_stim.v"
300
 
301
   eth_phy eth_phy0
302
     (
303
      // Outputs
304
      .mtx_clk_o                        (mtx_clk_o),
305
      .mrx_clk_o                        (mrx_clk_o),
306
      .mrxd_o                           (mrxd_o[3:0]),
307
      .mrxdv_o                          (mrxdv_o),
308
      .mrxerr_o                         (mrxerr_o),
309
      .mcoll_o                          (mcoll_o),
310
      .mcrs_o                           (mcrs_o),
311
      .link_o                           (),
312
      .speed_o                          (),
313
      .duplex_o                         (),
314
      .smii_clk_i                       (1'b0),
315
      .smii_sync_i                      (1'b0),
316
      .smii_rx_o                        (),
317
      // Inouts
318
      .md_io                            (eth0_md_pad_io),
319
      // Inputs
320
 `ifndef ETH0_PHY_RST
321
      // If no reset out from the design, hook up to the board's active low rst
322
      .m_rst_n_i                        (rst_n),
323
 `else
324
      .m_rst_n_i                        (ethphy_rst_n),
325
 `endif
326
      .mtxd_i                           (ethphy_mii_tx_d[3:0]),
327
      .mtxen_i                          (ethphy_mii_tx_en),
328
      .mtxerr_i                         (ethphy_mii_tx_err),
329
      .mdc_i                            (eth0_mdc_pad_o));
330
 
331
`endif //  `ifdef ETH0
332
 
333
`ifdef XILINX_SSRAM
334
   wire [18:0]   sram_a;
335
   wire [3:0]    dqp;
336
 
337
   assign sram_a[18:0] = sram_flash_addr[19:1];
338
   wire         sram_ce1b, sram_ce2, sram_ce3b;
339
   assign sram_ce1b = 1'b0;
340
   assign sram_ce2 = 1'b1;
341
   assign sram_ce3b = 1'b0;
342
   assign sram_clk_fb = sram_clk;
343
 
344
   cy7c1354 ssram0
345
     (
346
      // Inouts
347
      // This model puts each parity bit after each byte, but the ML501's part
348
      // doesn't, so we wire up the data bus like so.
349
      .d                                ({dqp[3],sram_flash_data[31:24],
350
                                          dqp[2],sram_flash_data[23:16],
351
                                          dqp[1],sram_flash_data[15:8],
352
                                          dqp[0],sram_flash_data[7:0]}),
353
      // Inputs
354
      .clk                              (sram_clk),
355
      .we_b                             (sram_flash_we_n),
356
      .adv_lb                           (sram_adv_ld_n),
357
      .ce1b                             (sram_ce1b),
358
      .ce2                              (sram_ce2),
359
      .ce3b                             (sram_ce3b),
360
      .oeb                              (sram_flash_oe_n),
361
      .cenb                             (sram_cen),
362
      .mode                             (sram_mode),
363
      .bws                              (sram_bw),
364
      .a                                (sram_a));
365
`endif
366
 
367
`ifdef XILINX_DDR2
368
 `ifndef GATE_SIM
369
   defparam dut.xilinx_ddr2_0.xilinx_ddr2_if0.ddr2_mig0.SIM_ONLY = 1;
370
 `endif
371
 
372
   always @( * ) begin
373
      ddr2_ck_sdram        <=  #(TPROP_PCB_CTRL) ddr2_ck_fpga;
374
      ddr2_ck_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_ck_n_fpga;
375
      ddr2_a_sdram    <=  #(TPROP_PCB_CTRL) ddr2_a_fpga;
376
      ddr2_ba_sdram         <=  #(TPROP_PCB_CTRL) ddr2_ba_fpga;
377
      ddr2_ras_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_ras_n_fpga;
378
      ddr2_cas_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_cas_n_fpga;
379
      ddr2_we_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_we_n_fpga;
380
      ddr2_cs_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_cs_n_fpga;
381
      ddr2_cke_sdram        <=  #(TPROP_PCB_CTRL) ddr2_cke_fpga;
382
      ddr2_odt_sdram        <=  #(TPROP_PCB_CTRL) ddr2_odt_fpga;
383
      ddr2_dm_sdram_tmp     <=  #(TPROP_PCB_DATA) ddr2_dm_fpga;//DM signal generation
384
   end // always @ ( * )
385
 
386
   // Model delays on bi-directional BUS
387
   genvar dqwd;
388
   generate
389
      for (dqwd = 0;dqwd < DQ_WIDTH;dqwd = dqwd+1) begin : dq_delay
390
         wiredelay #
391
           (
392
            .Delay_g     (TPROP_PCB_DATA),
393
            .Delay_rd    (TPROP_PCB_DATA_RD)
394
            )
395
         u_delay_dq
396
           (
397
            .A           (ddr2_dq_fpga[dqwd]),
398
            .B           (ddr2_dq_sdram[dqwd]),
399
            .reset       (rst_n)
400
            );
401
      end
402
   endgenerate
403
 
404
   genvar dqswd;
405
   generate
406
      for (dqswd = 0;dqswd < DQS_WIDTH;dqswd = dqswd+1) begin : dqs_delay
407
         wiredelay #
408
           (
409
            .Delay_g     (TPROP_DQS),
410
            .Delay_rd    (TPROP_DQS_RD)
411
            )
412
         u_delay_dqs
413
           (
414
            .A           (ddr2_dqs_fpga[dqswd]),
415
            .B           (ddr2_dqs_sdram[dqswd]),
416
            .reset       (rst_n)
417
            );
418
 
419
         wiredelay #
420
           (
421
            .Delay_g     (TPROP_DQS),
422
            .Delay_rd    (TPROP_DQS_RD)
423
            )
424
         u_delay_dqs_n
425
           (
426
            .A           (ddr2_dqs_n_fpga[dqswd]),
427
            .B           (ddr2_dqs_n_sdram[dqswd]),
428
            .reset       (rst_n)
429
            );
430
      end
431
   endgenerate
432
 
433
   assign ddr2_dm_sdram = ddr2_dm_sdram_tmp;
434
   parameter NUM_PROGRAM_WORDS=1048576;
435
   integer ram_ptr, program_word_ptr, k;
436
   reg [31:0] tmp_program_word;
437
   reg [31:0] program_array [0:NUM_PROGRAM_WORDS-1]; // 1M words = 4MB
438
   reg [8*16-1:0] ddr2_ram_mem_line; //8*16-bits= 8 shorts (half-words)
439
   genvar         i, j;
440
   generate
441
      // if the data width is multiple of 16
442
      for(j = 0; j < CS_NUM; j = j+1) begin : gen_cs // Loop of 1
443
         for(i = 0; i < DQS_WIDTH/2; i = i+1) begin : gen // Loop of 4 (DQS_WIDTH=8)
444
            initial
445
              begin
446
 
447
 `ifdef PRELOAD_RAM
448
  `include "ddr2_model_preload.v"
449
 `endif
450
                 ddr2_model u_mem0
451
                   (
452
                    .ck        (ddr2_ck_sdram[CLK_WIDTH*i/DQS_WIDTH]),
453
                    .ck_n      (ddr2_ck_n_sdram[CLK_WIDTH*i/DQS_WIDTH]),
454
                    .cke       (ddr2_cke_sdram[j]),
455
                    .cs_n      (ddr2_cs_n_sdram[CS_WIDTH*i/DQS_WIDTH]),
456
                    .ras_n     (ddr2_ras_n_sdram),
457
                    .cas_n     (ddr2_cas_n_sdram),
458
                    .we_n      (ddr2_we_n_sdram),
459
                    .dm_rdqs   (ddr2_dm_sdram[(2*(i+1))-1 : i*2]),
460
                    .ba        (ddr2_ba_sdram),
461
                    .addr      (ddr2_a_sdram),
462
                    .dq        (ddr2_dq_sdram[(16*(i+1))-1 : i*16]),
463
                    .dqs       (ddr2_dqs_sdram[(2*(i+1))-1 : i*2]),
464
                    .dqs_n     (ddr2_dqs_n_sdram[(2*(i+1))-1 : i*2]),
465
                    .rdqs_n    (),
466
                    .odt       (ddr2_odt_sdram[ODT_WIDTH*i/DQS_WIDTH])
467
                    );
468
              end
469
         end
470
      endgenerate
471
 
472
`endif
473
 
474
 
475
`ifdef VCD
476
   reg vcd_go = 0;
477
   always @(vcd_go)
478
     begin
479
 
480
 `ifdef VCD_DELAY
481
        #(`VCD_DELAY);
482
 `endif
483
 
484
        // Delay by x insns
485
 `ifdef VCD_DELAY_INSNS
486
        #10; // Delay until after the value becomes valid
487
        while (monitor.insns < `VCD_DELAY_INSNS)
488
          @(posedge clk);
489
 `endif
490
 
491
 `ifdef SIMULATOR_MODELSIM
492
        // Modelsim can GZip VCDs on the fly if given in the suffix
493
  `define VCD_SUFFIX   ".vcd.gz"
494
 `else
495
  `define VCD_SUFFIX   ".vcd"
496
 `endif
497
 
498
`ifndef SIM_QUIET
499
        $display("* VCD in %s\n", {"../out/",`TEST_NAME_STRING,`VCD_SUFFIX});
500
`endif
501
        $dumpfile({"../out/",`TEST_NAME_STRING,`VCD_SUFFIX});
502
 `ifndef VCD_DEPTH
503
  `define VCD_DEPTH 0
504
 `endif
505
        $dumpvars(`VCD_DEPTH);
506
 
507
     end
508
`endif //  `ifdef VCD
509
 
510
   initial
511
     begin
512
`ifndef SIM_QUIET
513
        $display("\n* Starting simulation of design RTL.\n* Test: %s\n",
514
                 `TEST_NAME_STRING );
515
`endif
516
 
517
`ifdef VCD
518
        vcd_go = 1;
519
`endif
520
 
521
     end // initial begin
522
 
523
`ifdef END_TIME
524
   initial begin
525
      #(`END_TIME);
526
`ifndef SIM_QUIET
527
      $display("* Finish simulation due to END_TIME being set at %t", $time);
528
`endif
529
      $finish;
530
   end
531
`endif
532
 
533
`ifdef END_INSNS
534
   initial begin
535
      #10
536
        while (monitor.insns < `END_INSNS)
537
          @(posedge clk);
538
 `ifndef SIM_QUIET
539
      $display("* Finish simulation due to END_INSNS count (%d) reached at %t",
540
               `END_INSNS, $time);
541
 `endif
542
      $finish;
543
   end
544
`endif
545
 
546
`ifdef UART0
547
   //   
548
   // UART0 decoder
549
   //   
550
   uart_decoder
551
     #(
552
        .uart_baudrate_period_ns(8680) // 115200 baud = period 8.68uS
553
        )
554
   uart0_decoder
555
     (
556
      .clk(clk),
557
      .uart_tx(uart0_stx_pad_o)
558
      );
559
 
560
   // Loopback UART lines
561
   assign uart0_srx_pad_i = uart0_stx_pad_o;
562
 
563
`endif //  `ifdef UART0
564
 
565
endmodule // orpsoc_testbench
566
 
567
// Local Variables:
568
// verilog-library-directories:("." "../../rtl/verilog/orpsoc_top")
569
// verilog-library-files:()
570
// verilog-library-extensions:(".v" ".h")
571
// End:
572
 

powered by: WebSVN 2.1.0

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