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

Subversion Repositories ahb_arbiter

[/] [ahb_arbiter/] [trunk/] [bench/] [bench_generic_ahb_arbiter.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 toomuch
//****************************************************************************************************** 
2
// Copyright (c) 2007 TooMuch Semiconductor Solutions Pvt Ltd. 
3
//File name : bench_generic_ahb_arbiter.v 
4
//Designer :Ankur Rawat 
5
//Date : 20 Sep, 2007 
6
//Test Bench description : Test bench for the Generic AMB AHBA complain Arbiter:-  . 
7
//Revision : 1.0 
8
//****************************************************************************************************** 
9
module  bench_generic_arbiter_full();
10
reg  [2:0]k1;
11
 
12
        integer i1;
13
        integer i2;
14
        integer i;
15
 
16
        parameter size=9;
17
        parameter size_out=4;
18
 
19
 
20
        reg [8*size-1:0]data_in;
21
        reg [8*size-1:0]addr_in;
22
        reg [3*size-1:0]hburst;
23
        reg [2*size-1:0]htrans;
24
        reg clock;
25
        reg reset;
26
        reg hready;
27
        reg [size-1:0]busreq;
28
        reg [size-1:0]hlock_main;
29
 
30
        wire [2:0]hburst_out;
31
        wire [1:0]htrans_out;
32
        wire hmaster_lock;
33
        wire [size_out-1:0]hgrant;
34
        wire [size_out-1:0]hmaster;
35
        wire [7:0]data_out;
36
        wire [7:0]addr_out;
37
 
38
always
39
        begin
40
#5              clock=~clock;
41
        end
42
 
43
 
44
initial
45
        begin
46
#2000           $finish;
47
        end
48
 
49
 
50
always@(posedge clock)
51
        begin
52
 
53
 
54
                #10             $display("data_out = %d addr_out = %d ",data_out,addr_out);
55
 
56
        end
57
 
58
 
59
initial
60
        begin
61
                data_in[7:0]=8'b0000_0001;
62
                data_in[15:8]=8'b0000_0010;
63
                data_in[23:16]=8'b0000_0011;
64
                data_in[31:24]=8'b0000_0100;
65
                data_in[39:32]=8'b0000_0101;
66
                data_in[47:40]=8'b0000_0110;
67
                data_in[55:48]=8'b0000_0111;
68
                data_in[63:56]=8'b0000_1000;
69
                data_in[71:64]=8'b0000_1001;
70
                addr_in[7:0]=8'b0000_0001;
71
                addr_in[15:8]=8'b0000_0010;
72
                addr_in[23:16]=8'b0000_0011;
73
                addr_in[31:24]=8'b0000_0100;
74
                addr_in[39:32]=8'b0000_0101;
75
                addr_in[47:40]=8'b0000_0110;
76
                addr_in[55:48]=8'b0000_0111;
77
                addr_in[63:56]=8'b0000_1000;
78
                addr_in[71:64]=8'b0000_1001;
79
                reset=0;
80
                busreq=0;
81
                hburst=0;
82
                htrans=0;
83
                hready=1;
84
                clock=0;
85
#25             reset=1;
86
#1              busreq[0]=0;
87
                hlock_main=9'b0_0000_0000;
88
 
89
        fork
90
                wrap_8_m0;
91
                wrap_16_m1;
92
        join
93
 
94
#10     wrap_4_m0;
95
        $display("time1 ******************");
96
 
97
#10     wrap_16_m0;
98
$display("time2 ************************ %5d" ,$time);
99
 
100
 
101
#10     wrap_16_m1;
102
        $display("time3 ************************ %5d" ,$time);
103
 
104
#10     wrap_8_m1;
105
$display("time4 ************************ %5d" ,$time);
106
 
107
 
108
#10  wrap_8_m2;
109
$display("time5 ************************ %5d" ,$time);
110
 
111
#10  wrap_8_m3;
112
$display("time6 ************************ %5d" ,$time);
113
 
114
#10  wrap_8_m4;
115
$display("time7 ************************ %5d" ,$time);
116
        end
117
 
118
 
119
 
120
task wrap_8_m4;
121
        begin
122
                $display("wrap_8_m4");
123
#50             htrans=0;
124
                htrans[7:6]=2'b00;hburst[11:9]=3'b100;hlock_main[3]=1;busreq[3]=1'b1;data_in[39:32]=data_in[39:32]+2'b11;
125
        wait(hgrant==4'b0011);
126
 
127
        for(i=0;i<=4;i=i+1)
128
                begin
129
#10                     htrans[7:6]=2'b01;hburst[11:9]=3'b100;hlock_main[3]=0;busreq[3]=1'b1;data_in[39:32]=data_in[39:32]+1;
130
                end
131
 
132
 
133
#10             htrans[7:6]=2'b01;hburst[11:9]=3'b000;hlock_main[3]=0;busreq[3]=1'b0;data_in[39:32]=data_in[39:32]+1;
134
#10             htrans[7:6]=2'b01;hburst[11:9]=3'b000;hlock_main[3]=0;busreq[3]=1'b0;data_in[39:32]=data_in[39:32]+1;
135
 
136
        end
137
endtask
138
 
139
 
140
 
141
task wrap_8_m3;
142
        begin
143
                htrans=0;
144
                $display("wrap_8_m4");
145
                htrans[7:6]=2'b00;hburst[11:9]=3'b100;hlock_main[3]=1;busreq[3]=1'b1;data_in[31:24]=data_in[31:24]+2'b11;
146
 
147
        wait(hgrant==4'b0011);
148
 
149
        for(i=0;i<=4;i=i+1)
150
                begin
151
#10                     htrans[7:6]=2'b01;hburst[11:9]=3'b100;hlock_main[3]=0;busreq[3]=1'b1;data_in[31:24]=data_in[31:24]+1;
152
 
153
 
154
                end
155
 
156
#10             htrans[7:6]=2'b01;hburst[11:9]=3'b000;hlock_main[3]=0;busreq[3]=1'b0;data_in[31:24]=data_in[31:24]+1;
157
#10             htrans[7:6]=2'b01;hburst[11:9]=3'b000;hlock_main[3]=0;busreq[3]=1'b0;data_in[31:24]=data_in[31:24]+1;
158
 
159
        end
160
endtask
161
 
162
 
163
task wrap_8_m2;
164
        begin
165
                htrans=0;
166
                htrans[5:4]=2'b00;hburst[8:6]=3'b100;hlock_main[2]=1;busreq[2]=1'b1;data_in[23:16]=data_in[23:16]+2'b11;
167
 
168
        wait(hgrant==4'b0010);
169
 
170
        for(i=0;i<=4;i=i+1)
171
                begin
172
#10                     htrans[5:4]=2'b01;hburst[8:6]=3'b100;hlock_main[2]=0;busreq[2]=1'b1;data_in[23:16]=data_in[23:16]+1;
173
 
174
 
175
                end
176
#10             htrans[5:4]=2'b01;hburst[8:6]=3'b000;hlock_main[2]=0;busreq[2]=1'b0;data_in[23:16]=data_in[23:16]+1;
177
#10             htrans[5:4]=2'b01;hburst[8:6]=3'b000;hlock_main[2]=0;busreq[2]=1'b0;data_in[23:16]=data_in[23:16]+1;
178
        end
179
endtask
180
 
181
 
182
task wrap_8_m0;
183
        begin
184
                htrans=0;
185
                htrans[1:0]=2'b00;hburst[2:0]=3'b100;hlock_main[0]=1;busreq[0]=1'b1;data_in=data_in;addr_in=addr_in+2'b11;
186
 
187
        wait(hgrant==4'b0000);
188
 
189
        for(i=0;i<=4;i=i+1)
190
                begin
191
#10                     htrans[1:0]=2'b01;hburst[2:0]=3'b100;hlock_main[0]=0;busreq[0]=1'b1;data_in=data_in+1'b1 ;addr_in=addr_in+2'b01;
192
 
193
 
194
                end
195
#10             htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;addr_in=addr_in+2'b01;
196
#10             htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;addr_in=addr_in+2'b01;
197
 
198
 
199
        end
200
endtask
201
 
202
task wrap_4_m0;
203
        begin
204
                htrans=0;
205
                $display("wrap_4_mo");
206
                htrans[1:0]=2'b00;hburst[2:0]=3'b010;hlock_main[0]=1;busreq[0]=1'b1;data_in=data_in+2'b11;
207
        wait(hgrant==4'b0000);
208
#10     htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;
209
#10     htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;
210
#10     htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;
211
        end
212
endtask
213
 
214
task wrap_16_m0;
215
        begin
216
                htrans=0;
217
                $display("wrap_16_mo");
218
                htrans[2:0]=2'b00;hburst[2:0]=3'b111;hlock_main[0]=1;busreq[0]=1'b1;data_in=data_in+2'b11;
219
 
220
                 wait(hgrant==4'b0000);
221
                        for(i=0;i<13;i=i+1)
222
                                begin
223
#10                                     htrans[1:0]=2'b01;hburst[2:0]=3'b111;hlock_main[0]=1;busreq[0]=1'b0;data_in=data_in+1;
224
                                end
225
 
226
#10     htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;
227
#10     htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[0]=0;busreq[0]=1'b0;data_in=data_in+1;
228
        end
229
endtask
230
 
231
task wrap_16_m1;
232
        begin
233
                htrans=0;
234
                $display("wrap_16_m1");
235
                busreq[1]=1'b1;htrans[3:2]=2'b00;hburst[5:3]=3'b111;hlock_main[1]=1;data_in[15:8]=data_in[15:8]+2'b11;addr_in[15:8]=addr_in[15:8]+2'b11;
236
 
237
                 wait(hgrant==4'b0001);
238
#10                     busreq[1]=1'b1;htrans[3:2]=2'b01;hburst[5:3]=3'b111;hlock_main[1]=1;data_in[15:8]=data_in[15:8]+1;addr_in[15:8]=addr_in[15:8]+1'b1 ;
239
                        for(i=0;i<12;i=i+1)
240
                                begin
241
#10                                     busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8]+1;addr_in[15:8]=addr_in[15:8]+1'b1 ;
242
                                end
243
 
244
#10             busreq[1]=1'b0;htrans[3:2]=2'b11;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8];addr_in[15:8]=addr_in[15:8];
245
#10             busreq[1]=1'b0;htrans[3:2]=2'b11;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8];addr_in[15:8]=addr_in[15:8];
246
#10             busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8]+1;addr_in[15:8]=addr_in[15:8]+1'b1 ;
247
#10             busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8]+1;addr_in[15:8]=addr_in[15:8]+1'b1 ;
248
 
249
 
250
 
251
 
252
        end
253
 
254
endtask
255
 
256
task wrap_8_m1;
257
        begin
258
                htrans=0;
259
                $display("wrap_16_m1");
260
 
261
                busreq[1]=1'b1;htrans[3:2]=2'b00;hburst[5:3]=3'b100;hlock_main[1]=1;data_in[15:8]=data_in[15:8]+2'b11;
262
                         wait(hgrant==4'b0001);
263
                                for(i=0;i<4;i=i+1)
264
                                        begin
265
#10                                             busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b100;hlock_main[1]=1;data_in[15:8]=data_in[15:8]+1;
266
                                        end
267
 
268
#10             busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8]+1;
269
#10             busreq[1]=1'b0;htrans[3:2]=2'b01;hburst[5:3]=3'b000;hlock_main[1]=0;data_in[15:8]=data_in[15:8]+1;
270
        end
271
 
272
endtask
273
 
274
 
275
 
276
task wrap_4_m1;
277
        begin
278
                htrans=0;
279
                $display("wrap_4_m1");
280
                htrans[1:0]=2'b00;hburst[2:0]=3'b100;hlock_main[1]=1;busreq[1]=1'b1;data_in[15:8]=data_in[15:8]+2'b11;
281
                         wait(hgrant ==4'b0000);
282
                                for(i=0;i<=1;i=i+1)
283
                                        begin
284
#10                                             htrans[1:0]=2'b01;hburst[2:0]=3'b010;hlock_main[1]=1;busreq[1]=1'b1;data_in[15:8]=data_in[15:8]+1;
285
                                        end
286
 
287
#10             htrans[1:0]=2'b01;hburst[2:0]=3'b000;hlock_main[1]=0;busreq[1]=1'b0;data_in[15:8]=data_in[15:8]+1;
288
 
289
        end
290
endtask
291
 
292
 
293
 
294
generic_arbiter_full g1(.busreq(busreq),.hlock(hlock_main),.hclk(clock),.hreset(reset),.hmaster_lock(hmaster_lock),.hgrant(hgrant),.hready(hready),.hwdata(data_in),.data_out(data_out),.haddr(addr_in),.addr_out(addr_out),.htrans(htrans),.hburst(hburst),.htrans_out(htrans_out),.hburst_out(hburst_out),.hmaster(hmaster) );
295
 
296
endmodule

powered by: WebSVN 2.1.0

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