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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [experiments/] [memctrl/] [sim/] [memctrl-2/] [memtest.v] - Blame information for rev 314

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 314 hellwig
//
2
// memtest.v -- test bench for memory controller
3
//
4
 
5
 
6
`include "ramtest/ramtest.v"
7
`include "ramctrl/ramctrl.v"
8
 
9
 
10
`timescale 1ns/10ps
11
`default_nettype none
12
 
13
 
14
module memtest;
15
 
16
  reg clk2;                     // system clock, 100 MHz
17
  reg clk;                      // system clock, 50 MHz
18
  reg clk_ok_in;                // clocks are stable, input
19
  reg clk_ok;                   // system clocks are stable
20
  reg rst_in;                   // reset, input
21
  reg rst;                      // system reset
22
 
23
  wire inst_stb;
24
  wire [25:0] inst_addr;
25
  wire [63:0] inst_to_cache;
26
  wire inst_ack;
27
  wire inst_timeout;
28
 
29
  wire data_stb;
30
  wire data_we;
31
  wire [25:0] data_addr;
32
  wire [63:0] data_to_mctrl;
33
  wire [63:0] data_to_cache;
34
  wire data_ack;
35
  wire data_timeout;
36
 
37
  wire test_ended;
38
  wire test_error;
39
 
40
  // simulation control
41
  initial begin
42
    #0          $timeformat(-9, 1, " ns", 12);
43
                $dumpfile("dump.vcd");
44
                $dumpvars(0, memtest);
45
                clk2 = 1;
46
                clk = 0;
47
                clk_ok_in = 0;
48
                rst_in = 1;
49
    #43         clk_ok_in = 1;
50
    #200360     rst_in = 0;
51
    #488900     $finish;
52
  end
53
 
54
  // clock generator, 100 MHz
55
  always begin
56
    #5 clk2 = ~clk2;            // 10 nsec cycle time
57
  end
58
 
59
  // clock generator, 50 MHz
60
  always begin
61
    #10 clk = ~clk;             // 20 nsec cycle time
62
  end
63
 
64
  // clk_ok synchronizer
65
  always @(posedge clk) begin
66
    clk_ok <= clk_ok_in;
67
  end
68
 
69
  // reset synchronizer
70
  always @(posedge clk) begin
71
    rst <= rst_in;
72
  end
73
 
74
  ramctrl ramctrl_1(
75
    .clk_ok(clk_ok),
76
    .clk(clk2),
77
    .inst_stb(inst_stb),
78
    .inst_addr(inst_addr[25:0]),
79
    .inst_dout(inst_to_cache[63:0]),
80
    .inst_ack(inst_ack),
81
    .inst_timeout(inst_timeout),
82
    .data_stb(data_stb),
83
    .data_we(data_we),
84
    .data_addr(data_addr[25:0]),
85
    .data_din(data_to_mctrl[63:0]),
86
    .data_dout(data_to_cache[63:0]),
87
    .data_ack(data_ack),
88
    .data_timeout(data_timeout)
89
  );
90
 
91
  ramtest ramtest_1(
92
    .clk(clk),
93
    .rst(rst),
94
    .inst_stb(inst_stb),
95
    .inst_addr(inst_addr[25:0]),
96
    .inst_din(inst_to_cache[63:0]),
97
    .inst_ack(inst_ack | inst_timeout),
98
    .data_stb(data_stb),
99
    .data_we(data_we),
100
    .data_addr(data_addr[25:0]),
101
    .data_dout(data_to_mctrl[63:0]),
102
    .data_din(data_to_cache[63:0]),
103
    .data_ack(data_ack | data_timeout),
104
    .test_ended(test_ended),
105
    .test_error(test_error)
106
  );
107
 
108
endmodule

powered by: WebSVN 2.1.0

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