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 10

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 10 rudi
//  $Id: test_lib.v,v 1.2 2001-09-02 02:29:43 rudi Exp $
42 4 rudi
//
43 10 rudi
//  $Date: 2001-09-02 02:29:43 $
44
//  $Revision: 1.2 $
45 4 rudi
//  $Author: rudi $
46
//  $Locker:  $
47
//  $State: Exp $
48
//
49
// Change History:
50
//               $Log: not supported by cvs2svn $
51 10 rudi
//               Revision 1.1  2001/07/29 07:34:40  rudi
52
//
53
//
54
//               1) Changed Directory Structure
55
//               2) Fixed several minor bugs
56
//
57 4 rudi
//               Revision 1.1.1.1  2001/05/13 09:36:38  rudi
58
//               Created Directory Structure
59
//
60
//
61
//
62
//                        
63
 
64
 
65
/////////////////////////////////////////////////////////////////////
66
//
67
// Bandwidth Monitor
68
//
69
 
70
always @(posedge clk)
71
        if(wb_cyc_i)    cyc_cnt = cyc_cnt + 1;
72
 
73
always @(posedge clk)
74
        if(wb_ack_o)    ack_cnt = ack_cnt + 1;
75
 
76
task bw_report;
77
 
78
integer bytes;
79
 
80
begin
81
 
82
bytes = ack_cnt * 4;
83
$display("Last WB Bandwidth: %0d Mbytes/sec", bytes * 1000/(cyc_cnt * 10));
84
end
85
endtask
86
 
87
task bw_clear;
88
 
89
begin
90
cyc_cnt = 0;
91
ack_cnt = 0;
92
end
93
endtask
94
 
95
/////////////////////////////////////////////////////////////////////
96
//
97
// Suspend Resume Task
98
//
99
 
100
task susp_res;
101
begin
102
 
103 10 rudi
        #1;
104 4 rudi
        susp_req = 1;
105
        while(!suspended)       @(posedge clk);
106 10 rudi
        #1;
107 4 rudi
        susp_req = 0;
108
        repeat(20)      @(posedge clk);
109 10 rudi
        #1;
110 4 rudi
        resume_req = 1;
111
        while(suspended)        @(posedge clk);
112 10 rudi
        #1;
113 4 rudi
        resume_req = 0;
114
        repeat(1)       @(posedge clk);
115
 
116
end
117
endtask
118
 
119
 
120
/////////////////////////////////////////////////////////////////////
121
//
122
// Bus Request/Grant Task
123
//
124
task bus_req;
125
begin
126
        mc_br = 1;
127
        while(!mc_bg)   @(posedge clk);
128
        repeat(40)      @(posedge clk);
129
        mc_br = 0;
130
        repeat(2)       @(posedge clk);
131
end
132
endtask
133
 
134
/////////////////////////////////////////////////////////////////////
135
//
136
// Monitor CKE
137
//
138
time    cke_low;
139
 
140
always @(negedge mc_cke_)
141
        cke_low = $time;
142
 
143
always @(posedge mc_cke_)
144
        if(($time-cke_low) < 10)
145
        $display("WARNING: Cke low period was %t. (%t, %t)",($time-cke_low), cke_low, $time);
146
 
147
/////////////////////////////////////////////////////////////////////
148
//
149
// Monitor wb_err_o
150
//
151
always @(posedge clk)
152
        if(wb_err_o & !wb_err_check_dis)
153
                $display("WARNING: WB_ERR_O was asserted at time %0t",$time);
154
 
155
/////////////////////////////////////////////////////////////////////
156
//
157
// Watchdog Counter
158
//
159
 
160
always @(wb_ack_o or wb_stb_i)
161
        wd_cnt = 0;
162
 
163
always @(posedge clk)
164
        wd_cnt = wd_cnt + 1;
165
 
166
/*
167
always @(posedge clk)
168
        if(wb_cyc_i | wb_ack_o )        wd_cnt <= #1 0;
169
        else                            wd_cnt <= #1 wd_cnt + 1;
170
*/
171
 
172
always @(wd_cnt)
173 10 rudi
        if(wd_cnt>6000)
174 4 rudi
           begin
175
                $display("\n\n*************************************\n");
176
                $display("ERROR: Watch Dog Counter Expired\n");
177
                $display("*************************************\n\n\n");
178
                $finish;
179
           end
180
 
181
 
182
 
183
 
184
 
185
 
186
task show_errors;
187
 
188
begin
189
 
190
$display("\n");
191
$display("     +--------------------+");
192
$display("     |  Total ERRORS: %0d   |", error_cnt);
193
$display("     +--------------------+");
194
 
195
end
196
endtask
197
 
198
 
199
task mc_reset;
200
 
201
begin
202 10 rudi
repeat(10)      @(posedge clk);
203 4 rudi
rst = 0;
204
repeat(10)      @(posedge clk);
205
rst = 1;
206 10 rudi
repeat(20)      @(posedge clk);
207 4 rudi
end
208
endtask
209
 

powered by: WebSVN 2.1.0

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