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

Subversion Repositories eco32

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 313 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 clk;                      // system clock
17
  reg clk_ok_in;                // clock is stable, input
18
  reg clk_ok;                   // system clock is stable
19
  reg rst_in;                   // reset, input
20
  reg rst;                      // system reset
21
 
22
  wire inst_stb;
23
  wire [25:0] inst_addr;
24
  wire [63:0] inst_to_cache;
25
  wire inst_ack;
26
  wire inst_timeout;
27
 
28
  wire data_stb;
29
  wire data_we;
30
  wire [25:0] data_addr;
31
  wire [63:0] data_to_mctrl;
32
  wire [63:0] data_to_cache;
33
  wire data_ack;
34
  wire data_timeout;
35
 
36
  wire test_ended;
37
  wire test_error;
38
 
39
  // simulation control
40
  initial begin
41
    #0          $timeformat(-9, 1, " ns", 12);
42
                $dumpfile("dump.vcd");
43
                $dumpvars(0, memtest);
44
                clk = 1;
45
                clk_ok_in = 0;
46
                rst_in = 1;
47
    #43         clk_ok_in = 1;
48
    #200360     rst_in = 0;
49
    #284900     $finish;
50
  end
51
 
52
  // clock generator
53
  always begin
54
    #5 clk = ~clk;              // 10 nsec cycle time
55
  end
56
 
57
  // clk_ok synchronizer
58
  always @(posedge clk) begin
59
    clk_ok <= clk_ok_in;
60
  end
61
 
62
  // reset synchronizer
63
  always @(posedge clk) begin
64
    rst <= rst_in;
65
  end
66
 
67
  ramctrl ramctrl_1(
68
    .clk_ok(clk_ok),
69
    .clk(clk),
70
    .inst_stb(inst_stb),
71
    .inst_addr(inst_addr[25:0]),
72
    .inst_dout(inst_to_cache[63:0]),
73
    .inst_ack(inst_ack),
74
    .inst_timeout(inst_timeout),
75
    .data_stb(data_stb),
76
    .data_we(data_we),
77
    .data_addr(data_addr[25:0]),
78
    .data_din(data_to_mctrl[63:0]),
79
    .data_dout(data_to_cache[63:0]),
80
    .data_ack(data_ack),
81
    .data_timeout(data_timeout)
82
  );
83
 
84
  ramtest ramtest_1(
85
    .clk(clk),
86
    .rst(rst),
87
    .inst_stb(inst_stb),
88
    .inst_addr(inst_addr[25:0]),
89
    .inst_din(inst_to_cache[63:0]),
90
    .inst_ack(inst_ack | inst_timeout),
91
    .data_stb(data_stb),
92
    .data_we(data_we),
93
    .data_addr(data_addr[25:0]),
94
    .data_dout(data_to_mctrl[63:0]),
95
    .data_din(data_to_cache[63:0]),
96
    .data_ack(data_ack | data_timeout),
97
    .test_ended(test_ended),
98
    .test_error(test_error)
99
  );
100
 
101
endmodule

powered by: WebSVN 2.1.0

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