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

Subversion Repositories mem_ctrl

[/] [mem_ctrl/] [trunk/] [bench/] [verilog/] [test_lib.v] - Blame information for rev 4

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

Line No. Rev Author Line
1 4 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  Top Level Test Bench                                       ////
4
////  Task Library                                               ////
5
////                                                             ////
6
////                                                             ////
7
////  Author: Rudolf Usselmann                                   ////
8
////          rudi@asics.ws                                      ////
9
////                                                             ////
10
////                                                             ////
11
////  Downloaded from: http://www.opencores.org/cores/mem_ctrl/  ////
12
////                                                             ////
13
/////////////////////////////////////////////////////////////////////
14
////                                                             ////
15
//// Copyright (C) 2000 Rudolf Usselmann                         ////
16
////                    rudi@asics.ws                            ////
17
////                                                             ////
18
//// This source file may be used and distributed without        ////
19
//// restriction provided that this copyright statement is not   ////
20
//// removed from the file and that any derivative work contains ////
21
//// the original copyright notice and the associated disclaimer.////
22
////                                                             ////
23
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
24
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
25
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
26
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
27
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
28
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
29
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
30
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
31
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
32
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
33
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
34
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
35
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
36
////                                                             ////
37
/////////////////////////////////////////////////////////////////////
38
 
39
//  CVS Log
40
//
41
//  $Id: test_lib.v,v 1.1 2001-07-29 07:34:40 rudi Exp $
42
//
43
//  $Date: 2001-07-29 07:34:40 $
44
//  $Revision: 1.1 $
45
//  $Author: rudi $
46
//  $Locker:  $
47
//  $State: Exp $
48
//
49
// Change History:
50
//               $Log: not supported by cvs2svn $
51
//               Revision 1.1.1.1  2001/05/13 09:36:38  rudi
52
//               Created Directory Structure
53
//
54
//
55
//
56
//                        
57
 
58
 
59
/////////////////////////////////////////////////////////////////////
60
//
61
// Bandwidth Monitor
62
//
63
 
64
always @(posedge clk)
65
        if(wb_cyc_i)    cyc_cnt = cyc_cnt + 1;
66
 
67
always @(posedge clk)
68
        if(wb_ack_o)    ack_cnt = ack_cnt + 1;
69
 
70
task bw_report;
71
 
72
integer bytes;
73
 
74
begin
75
 
76
bytes = ack_cnt * 4;
77
$display("Last WB Bandwidth: %0d Mbytes/sec", bytes * 1000/(cyc_cnt * 10));
78
end
79
endtask
80
 
81
task bw_clear;
82
 
83
begin
84
cyc_cnt = 0;
85
ack_cnt = 0;
86
end
87
endtask
88
 
89
/////////////////////////////////////////////////////////////////////
90
//
91
// Suspend Resume Task
92
//
93
 
94
task susp_res;
95
begin
96
 
97
        susp_req = 1;
98
        while(!suspended)       @(posedge clk);
99
        susp_req = 0;
100
        repeat(20)      @(posedge clk);
101
        resume_req = 1;
102
        while(suspended)        @(posedge clk);
103
        resume_req = 0;
104
        repeat(1)       @(posedge clk);
105
 
106
end
107
endtask
108
 
109
 
110
/////////////////////////////////////////////////////////////////////
111
//
112
// Bus Request/Grant Task
113
//
114
task bus_req;
115
begin
116
        mc_br = 1;
117
        while(!mc_bg)   @(posedge clk);
118
        repeat(40)      @(posedge clk);
119
        mc_br = 0;
120
        repeat(2)       @(posedge clk);
121
end
122
endtask
123
 
124
/////////////////////////////////////////////////////////////////////
125
//
126
// Monitor CKE
127
//
128
time    cke_low;
129
 
130
always @(negedge mc_cke_)
131
        cke_low = $time;
132
 
133
always @(posedge mc_cke_)
134
        if(($time-cke_low) < 10)
135
        $display("WARNING: Cke low period was %t. (%t, %t)",($time-cke_low), cke_low, $time);
136
 
137
/////////////////////////////////////////////////////////////////////
138
//
139
// Monitor wb_err_o
140
//
141
always @(posedge clk)
142
        if(wb_err_o & !wb_err_check_dis)
143
                $display("WARNING: WB_ERR_O was asserted at time %0t",$time);
144
 
145
/////////////////////////////////////////////////////////////////////
146
//
147
// Watchdog Counter
148
//
149
 
150
always @(wb_ack_o or wb_stb_i)
151
        wd_cnt = 0;
152
 
153
always @(posedge clk)
154
        wd_cnt = wd_cnt + 1;
155
 
156
/*
157
always @(posedge clk)
158
        if(wb_cyc_i | wb_ack_o )        wd_cnt <= #1 0;
159
        else                            wd_cnt <= #1 wd_cnt + 1;
160
*/
161
 
162
always @(wd_cnt)
163
        if(wd_cnt>5000)
164
           begin
165
                $display("\n\n*************************************\n");
166
                $display("ERROR: Watch Dog Counter Expired\n");
167
                $display("*************************************\n\n\n");
168
                $finish;
169
           end
170
 
171
 
172
 
173
 
174
 
175
 
176
task show_errors;
177
 
178
begin
179
 
180
$display("\n");
181
$display("     +--------------------+");
182
$display("     |  Total ERRORS: %0d   |", error_cnt);
183
$display("     +--------------------+");
184
 
185
end
186
endtask
187
 
188
 
189
task mc_reset;
190
 
191
begin
192
rst = 0;
193
repeat(10)      @(posedge clk);
194
rst = 1;
195
repeat(10)      @(posedge clk);
196
end
197
endtask
198
 

powered by: WebSVN 2.1.0

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