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

Subversion Repositories xmatchpro

[/] [xmatchpro/] [trunk/] [xmw4-comdec/] [src/] [tb_level1cr.vhd.bak] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 eejlny
--This library is free software; you can redistribute it and/or
2
--modify it under the terms of the GNU Lesser General Public
3
--License as published by the Free Software Foundation; either
4
--version 2.1 of the License, or (at your option) any later version.
5
 
6
--This library is distributed in the hope that it will be useful,
7
--but WITHOUT ANY WARRANTY; without even the implied warranty of
8
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9
--Lesser General Public License for more details.
10
 
11
--You should have received a copy of the GNU Lesser General Public
12
--License along with this library; if not, write to the Free Software
13
--Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
14
 
15
-- e_mail : j.l.nunez-yanez@byacom.co.uk
16
 
17
---------------------------------
18
--  ENTITY       = TB_LEVEL1CR  --
19
--  version      = 3.0         --
20
--  last update  = 17/10/01     --
21
--  author       = Jose Nunez  --
22
---------------------------------
23
 
24
 
25
-- FUNCTION
26
-- test bench for level 1 using a register file in compression mode.
27
 
28
 
29
library ieee,std;
30
use ieee.std_logic_1164.all;
31
 
32
use ieee.std_logic_textio.all;
33
use std.textio.all;
34
 
35
entity TB_LEVEL1cr is
36
end TB_LEVEL1cr;
37
 
38
 
39
architecture TB1cr of TB_LEVEL1cr is
40
 
41
signal CS: bit;
42
 
43
signal RW : bit;
44
 
45
signal ADDRESS: bit_vector(3 downto 0);
46
 
47
signal CONTROL: std_logic_vector(31 downto 0);
48
 
49
signal CLK : bit ;
50
signal CLEAR : bit;
51
signal U_DATAIN : bit_vector(31 downto 0) ;
52
signal C_DATAIN : bit_vector(31 downto 0) ;
53
signal U_DATAOUT : std_logic_vector(31 downto 0) ;
54
signal C_DATAOUT : std_logic_vector(31 downto 0) ;
55
 
56
signal FINISHED_C: bit;
57
signal FINISHED_D: bit;
58
 
59
signal COMPRESSING: bit;
60
 
61
signal BUS_ACKNOWLEDGE_CC: bit;
62
signal BUS_ACKNOWLEDGE_CU: bit;
63
signal BUS_ACKNOWLEDGE_DC: bit;
64
signal BUS_ACKNOWLEDGE_DU: bit;
65
 
66
signal WAIT_CU: bit;
67
signal WAIT_CC: bit;
68
signal WAIT_DC: bit;
69
signal WAIT_DU: bit;
70
 
71
signal BUS_REQUEST_CC : bit;
72
signal BUS_REQUEST_CU : bit;
73
signal BUS_REQUEST_DC : bit;
74
signal BUS_REQUEST_DU : bit;
75
 
76
 
77
signal FLUSHING_C: bit;
78
signal FLUSHING_D: bit;
79
 
80
signal DECOMPRESSING: bit;
81
 
82
signal DECODING_OVERFLOW : bit;
83
signal CODING_OVERFLOW : bit;
84
signal C_DATA_VALID : bit;
85
signal U_DATA_VALID : bit;
86
signal CRC_ERROR: bit;
87
signal INTERRUPT_REQUEST : bit;
88
signal INTERRUPT_ACKNOWLEDGE : bit;
89
signal ONE: bit;
90
 
91
 
92
 
93
-- this is the component to be tested
94
 
95
component level1r
96
port
97
(
98
        CS : in bit ;
99
        RW : in bit;
100
        ADDRESS: in bit_vector(3 downto 0);
101
        CONTROL : inout std_logic_vector(31 downto 0);
102
        CLK : in bit ;
103
        CLEAR: in bit;
104
        BUS_ACKNOWLEDGE_CC : in bit;
105
        BUS_ACKNOWLEDGE_CU : in bit;
106
        BUS_ACKNOWLEDGE_DC : in bit;
107
        BUS_ACKNOWLEDGE_DU : in bit;
108
        WAIT_CU : in bit;
109
        WAIT_CC : in bit;
110
  WAIT_DC : in bit;
111
  WAIT_DU : in bit;
112
        U_DATAIN : in bit_vector(31 downto 0);
113
        C_DATAIN : in bit_vector(31 downto 0);
114
        U_DATAOUT : out std_logic_vector(31 downto 0);
115
        C_DATAOUT : out std_logic_vector(31 downto 0);
116
        FINISHED_C : out bit;
117
        FINISHED_D : out bit;
118
        COMPRESSING : out bit;
119
        FLUSHING_C : out bit;
120
        FLUSHING_D : out bit;
121
        DECOMPRESSING : out bit;
122
        U_DATA_VALID : out bit;
123
        C_DATA_VALID : out bit;
124
        DECODING_OVERFLOW : out bit;
125
        CODING_OVERFLOW : out bit;
126
        CRC_ERROR : out bit;
127
  INTERRUPT_REQUEST : out bit;
128
        INTERRUPT_ACKNOWLEDGE : in bit;
129
        BUS_REQUEST_CC : out bit;
130
        BUS_REQUEST_CU : out bit;
131
        BUS_REQUEST_DC : out bit;
132
        BUS_REQUEST_DU : out bit
133
);
134
end component;
135
 
136
--  set up constants for test vector application & monitoring
137
 
138
constant CLOCK_PERIOD : time := 200 ns;
139
constant HALF_PERIOD : time := CLOCK_PERIOD / 2;
140
constant STROBE_TIME : time := 0.9 * HALF_PERIOD;
141
 
142
begin
143
 
144
-- instantiate the device under test
145
DUT : level1r  port map(
146
        CS => CS,
147
        RW => RW,
148
        ADDRESS => ADDRESS,
149
        CONTROL => CONTROL,
150
        CLK     => CLK,
151
        CLEAR => CLEAR,
152
        BUS_ACKNOWLEDGE_CC => BUS_ACKNOWLEDGE_CC,
153
        BUS_ACKNOWLEDGE_CU => BUS_ACKNOWLEDGE_CU,
154
        BUS_ACKNOWLEDGE_DC => BUS_ACKNOWLEDGE_DC,
155
        BUS_ACKNOWLEDGE_DU => BUS_ACKNOWLEDGE_DU,
156
        WAIT_CU => WAIT_CU,
157
   WAIT_CC => WAIT_CC,
158
   WAIT_DC => WAIT_DC,
159
  WAIT_DU => WAIT_DU,
160
        U_DATAIN => U_DATAIN,
161
        C_DATAIN => C_DATAIN,
162
        U_DATAOUT => U_DATAOUT,
163
        C_DATAOUT => C_DATAOUT,
164
        FINISHED_C => FINISHED_C,
165
        FINISHED_D => FINISHED_D,
166
        COMPRESSING => COMPRESSING,
167
        FLUSHING_C => FLUSHING_C,
168
        FLUSHING_D => FLUSHING_D,
169
        DECOMPRESSING => DECOMPRESSING,
170
        U_DATA_VALID => U_DATA_VALID,
171
        C_DATA_VALID => C_DATA_VALID,
172
        DECODING_OVERFLOW => DECODING_OVERFLOW,
173
        CODING_OVERFLOW => CODING_OVERFLOW,
174
        CRC_ERROR => CRC_ERROR,
175
  INTERRUPT_REQUEST => INTERRUPT_REQUEST,
176
        INTERRUPT_ACKNOWLEDGE => INTERRUPT_ACKNOWLEDGE,
177
        BUS_REQUEST_CC => BUS_REQUEST_CC,
178
        BUS_REQUEST_CU => BUS_REQUEST_CU,
179
        BUS_REQUEST_DC => BUS_REQUEST_DC,
180
        BUS_REQUEST_DU => BUS_REQUEST_DU
181
);
182
 
183
 
184
 
185
TEST_VECTORS : process
186
                -- input t
187
-- file TV_IN : TEXT open read_mode is "..\test\Cvectors_alic_1024.txt";
188
--file TV_IN : TEXT open read_mode is "..\test\Cvectors_kenn_3422.txt";
189
--file TV_IN : TEXT open read_mode is "..\test\Cvectors_plra_2712.txt";
190
file TV_IN : TEXT open read_mode is "..\test\Cvectors_fiel_1024.txt";
191
 
192
 
193
variable LIN : line;
194
variable LOUT : line;
195
                                                    -- input test vectors from input test file
196
variable I_CLEAR : bit ;
197
 
198
variable I_CS: bit;
199
 
200
variable I_RW: bit;
201
 
202
variable I_ADDRESS : bit_vector(1 downto 0);
203
 
204
variable I_CONTROL : std_logic_vector(15 downto 0);
205
 
206
variable I_U_DATAIN : bit_vector(31 downto 0) ;
207
variable I_C_DATAIN : bit_vector(31 downto 0) ;
208
 
209
variable OLD_I_C_DATAIN: bit_vector(31 downto 0);
210
                                                        -- expected response vectors
211
variable I_COMPRESSING: bit;
212
 
213
variable I_DECOMPRESSING: bit;
214
 
215
variable I_BUS_ACKNOWLEDGE_C : bit;
216
 
217
variable I_BUS_ACKNOWLEDGE_U : bit;
218
 
219
variable I_WAIT_CU : bit;
220
 
221
variable I_WAIT_CC : bit;
222
 
223
variable I_WAIT_DC : bit;
224
 
225
variable I_WAIT_DU : bit;
226
 
227
variable I_BUS_REQUEST_C : bit;
228
 
229
variable I_BUS_REQUEST_U : bit;
230
 
231
variable I_FINISHED: bit;
232
 
233
variable I_FLUSHING: bit;
234
 
235
variable I_U_DATAOUT : std_logic_vector(31 downto 0) ;
236
variable I_C_DATAOUT : std_logic_vector(31 downto 0) ;
237
 
238
variable I_U_DATA_VALID : bit;
239
 
240
variable I_C_DATA_VALID : bit;
241
variable O_FINISHED: bit;
242
 
243
variable O_COMPRESSING: bit;
244
 
245
variable O_FLUSHING: bit;
246
 
247
variable O_DECOMPRESSING: bit;
248
 
249
variable O_DISALIGNED : bit;
250
 
251
variable O_BUS_REQUEST_C : bit;
252
 
253
variable O_BUS_REQUEST_U : bit;
254
 
255
variable O_U_DATAOUT : std_logic_vector(31 downto 0) ;
256
variable O_C_DATAOUT : std_logic_vector(31 downto 0) ;
257
variable O_DECODING_OVERFLOW : bit;
258
variable O_U_DATA_VALID : bit;
259
variable O_C_DATA_VALID : bit;
260
 
261
variable SPACE : character;
262
 
263
 
264
begin
265
while not(endfile(TV_IN)) loop                          -- check for end of file
266
 
267
        readline(TV_IN , LIN);
268
      read(LIN , I_CLEAR);
269
        read(LIN , SPACE);
270
        read(LIN , I_CS);                               -- read in input test vectors
271
        read(LIN , SPACE);
272
        read(LIN , I_RW);
273
        read(LIN , SPACE);
274
        read(LIN , I_ADDRESS);
275
        read(LIN , SPACE);
276
        read(LIN , I_CONTROL);
277
        read(LIN , SPACE);
278
        read(LIN , I_BUS_ACKNOWLEDGE_C);
279
        read(LIN , SPACE);
280
        read(LIN , I_BUS_ACKNOWLEDGE_U);
281
        read(LIN , SPACE);
282
        read(LIN , I_U_DATAIN);
283
        read(LIN , SPACE);
284
        read(LIN , I_C_DATAIN);
285
        read(LIN , SPACE);
286
        read(LIN , I_COMPRESSING);                      -- read in expected response vectors
287
        read(LIN , SPACE);
288
   read(LIN , I_DECOMPRESSING);
289
        read(LIN , SPACE);
290
        read(LIN, I_BUS_REQUEST_C);
291
        read(LIN, SPACE);
292
        read(LIN, I_BUS_REQUEST_U);
293
        read(LIN, SPACE);
294
        read(LIN, I_C_DATA_VALID);
295
        read(LIN, SPACE);
296
      read(LIN , I_FINISHED);
297
        read(LIN , SPACE);
298
      read(LIN , I_FLUSHING);
299
        read(LIN , SPACE);
300
      read(LIN , I_U_DATA_VALID);
301
        read(LIN , SPACE);
302
        read(LIN , I_U_DATAOUT);
303
        read(LIN , SPACE);
304
        read(LIN , I_C_DATAOUT);
305
 
306
 
307
--      read(LIN , SPACE);
308
 
309
        CLK <= '1';                                     -- rising clock edge
310
 
311
        wait for 10 ns;
312
        CS <= I_CS;
313
 
314
    RW <= I_RW;
315
 
316
-- compress
317
 
318
ADDRESS <= "11" & I_ADDRESS;
319
 
320
-- decompress
321
 
322
--  ADDRESS <= "10" & I_ADDRESS;
323
 
324
        CONTROL <= x"0000" & I_CONTROL;
325
 
326
-- compress
327
 
328
  BUS_ACKNOWLEDGE_DC <= '1';
329
  BUS_ACKNOWLEDGE_DU <= '1';
330
  BUS_ACKNOWLEDGE_CC <= I_BUS_ACKNOWLEDGE_C;
331
  BUS_ACKNOWLEDGE_CU <= I_BUS_ACKNOWLEDGE_U;
332
  WAIT_CU <= '1';--I_WAIT_CU;
333
  WAIT_CC <= '1';--I_WAIT_CC;
334
  WAIT_DC <= '1';--I_WAIT_DC;
335
  WAIT_DU <= '1';--I_WAIT_DU;
336
  INTERRUPT_ACKNOWLEDGE <= '1';
337
 
338
-- decompress
339
 
340
--  BUS_ACKNOWLEDGE_DC <= I_BUS_ACKNOWLEDGE_C;
341
--  BUS_ACKNOWLEDGE_DU <= I_BUS_ACKNOWLEDGE_U;
342
--  BUS_ACKNOWLEDGE_CC <= '1';
343
--  BUS_ACKNOWLEDGE_CU <= '1';
344
--  WAIT_CU <= I_WAIT_CU;
345
--  WAIT_CC <= I_WAIT_CC;
346
--  WAIT_DC <= I_WAIT_DC;
347
--  WAIT_DU <= I_WAIT_DU;
348
 
349
   CLEAR <= I_CLEAR;                            -- apply control inputs on rising clock edge + 2ns
350
    U_DATAIN <= I_U_DATAIN;                                     -- (these will be generated by a synchronous state machine,
351
 
352
                                                    -- and so this is perfectly valid).
353
 
354
    C_DATAIN<=I_C_DATAIN;                       -- this changes on a rising clock edge (follows RAM address)
355
 
356
        wait for (HALF_PERIOD - 10 ns);
357
 
358
        CLK <= '0';
359
                                    -- RESET <= I_RESET;
360
 
361
                                    -- apply external inputs on falling clock edge
362
 
363
 
364
 
365
        wait for STROBE_TIME;                           -- wait for strobe time
366
 
367
    O_FINISHED := FINISHED_C;
368
 
369
    O_COMPRESSING := COMPRESSING;
370
 
371
    O_DECOMPRESSING := DECOMPRESSING;
372
 
373
    O_BUS_REQUEST_C := BUS_REQUEST_CC;
374
 
375
        O_BUS_REQUEST_U := BUS_REQUEST_CU;
376
 
377
    O_C_DATA_VALID := C_DATA_VALID;
378
 
379
    O_FLUSHING := FLUSHING_C;
380
 
381
        O_U_DATA_VALID := U_DATA_VALID;
382
 
383
    O_U_DATAOUT := U_DATAOUT;
384
    O_C_DATAOUT := C_DATAOUT;
385
 
386
                                        -- write input vectors to results file
387
 
388
        -- compare actual circuit response with expected response vectors
389
        assert CRC_ERROR = ONE
390
 
391
                report "Unexpected value on output CRC_ERROR." severity error;
392
 
393
        wait for (HALF_PERIOD - STROBE_TIME);           -- resynchronise with tester period
394
 
395
end loop;
396
wait;
397
 
398
end process TEST_VECTORS;
399
 
400
 
401
ONE <= '1';
402
 
403
 
404
end TB1cr; --end of architecture

powered by: WebSVN 2.1.0

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