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

Subversion Repositories neural_net_perceptron

[/] [neural_net_perceptron/] [trunk/] [tb/] [vhdl/] [tb_avm_instruction_gen_v05_public.vhd] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 fpga_is_fu
-- COPYRIGHT (C) 2022 by Jens Gutschmidt / VIVARE GmbH Switzerland
2
-- (email: opencores@vivare-services.com)
3
-- 
4
-- This program is free software: you can redistribute it and/or modify it
5
-- under the terms of the GNU General Public License as published by
6
-- the Free Software Foundation, either version 3 of the License, or any
7
-- later version.
8
-- 
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY; without even the implied warranty of
11
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
-- See the GNU General Public License for more details.
13
-- 
14
-- You should have received a copy of the GNU General Public License
15
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
-- 
17
-- 
18
-- **************************************
19
--
20
-- File: tb_avm_instruction_gen_v05.vhd
21
-- 
22
-- Version: 5.0
23
-- Date: 22.Jul.2022
24
-- Author: Jens Gutschmidt / opencores@vivare-services.com
25
-- Cause: Wrong value for Threshold (0x25 -> 0x20)
26
--        Will not cover the values described in specification
27
--        Appendix B. Initiate a new specification's version.
28
-- 
29
-- Version: 4.0
30
-- Date: 20.Jul.2022
31
-- Author: Jens Gutschmidt / opencores@vivare-services.com
32
-- Cause: Adoptions for public
33
-- 
34
-- THIS TEST BENCH IS ONLY FOR INFORMATION.
35
-- IT CONTAINS TESTS FOR SYMANTIC EXPERIMENTS AND OTHER NON-PROJECT
36
-- RELATED STUFF.
37
-- USE IT ON OWN RISC !!!
38
-- **************************************
39
 
40
USE std.textio.all;
41
 
42
LIBRARY work;
43
USE work.memory_vhd_v03_pkg.ALL;
44
 
45
LIBRARY IEEE;
46
USE IEEE.std_logic_1164.all;
47
USE ieee.std_logic_arith.all;
48
USE ieee.std_logic_textio.all;
49
 
50
LIBRARY modelsim_lib;
51
USE modelsim_lib.transactions.all;
52
 
53
ENTITY tb_avm_instruction_gen_v05_public IS
54
END ENTITY tb_avm_instruction_gen_v05_public;
55
 
56
--
57
ARCHITECTURE testbench OF tb_avm_instruction_gen_v05_public IS
58
 
59
   -- Component Declarations
60
   COMPONENT p0300_m00000_s_v03_top_level_blk
61
   PORT (
62
      wb_clk_i    : IN     std_logic ;
63
      wb_rst_i    : IN     std_logic ;
64
      wb_adr_i    : IN     WB_ADDR_WIDTH_T ;
65
      wb_dat_i    : IN     WB_DATA_WIDTH_T ;
66
      wb_stb_i    : IN     std_logic ;
67
      wb_cyc_i    : IN     std_logic ;
68
      wb_we_i     : IN     std_logic ;
69
 
70
      wb_ack_o    : OUT    std_logic ;
71
      wb_dat_o    : OUT    WB_DATA_WIDTH_T
72
   );
73
   END COMPONENT;
74
 
75
   -- Optional embedded configurations
76
   -- pragma synthesis_off
77
   FOR ALL : p0300_m00000_s_v03_top_level_blk USE ENTITY work.p0300_m00000_s_v03_top_level_blk;
78
   -- pragma synthesis_on
79
 
80
 
81
   signal clk_gen_o      : std_ulogic := '0';
82
   signal rst_proc_o     : std_ulogic := '0';
83
--   signal res_proc_o_i   : std_ulogic := '0';
84
   signal rst_run_proc_o : std_logic;
85
 
86
   -- WN internal signals
87
   signal tb_wb_adri_oi  : WB_ADDR_WIDTH_T ;
88
   signal tb_wb_adro_oi  : WB_ADDR_WIDTH_T := (others => '0') ;
89
--   signal tb_wb_adro_oi  : WB_ADDR_WIDTH_T ;
90
   signal tb_wb_dout_oi  : WB_DATA_WIDTH_T ;
91
   signal tb_wb_stb_oi   : std_logic := '0' ;
92
   signal tb_wb_cyc_oi   : std_logic := '0' ;
93
   signal tb_wb_we_oi    : std_logic := '0' ;
94
 
95
   signal tb_wb_ack_oi   : std_logic ;
96
   signal tb_wb_din_oi   : WB_DATA_WIDTH_T ;
97
   signal tb_wb_clear_epoch_oi   : WB_DATA_WIDTH_T ;
98
   signal tb_wb_thres_oi   : WB_DATA_WIDTH_T ;
99
   -- ////////////////////////////////////////////////////////
100
 
101
   signal done           : boolean   := FALSE;
102
 
103
   constant PERIOD       : Time := 20 ns;
104
   constant PD           : Time := 0 ns;
105
 
106
   constant PLUS_ONE     : integer := 1;
107
   constant MINUS_ONE    : integer := -1;
108
 
109
BEGIN
110
    tb_avm_test: process
111
    variable count_pattern     : integer;
112
    variable count_loop        : integer;
113
    variable count_data        : integer;
114
 
115
    variable hStream02         : TrStream := create_transaction_stream("stream02", "transaction");
116
    variable hStream01         : TrStream := create_transaction_stream("stream01", "transaction2");
117
 
118
    variable hTrans01          : TrTransaction := 0;
119
    variable hTrans02          : TrTransaction := 0;
120
    variable hTrans03          : TrTransaction := 0;
121
    variable hTrans04          : TrTransaction := 0;
122
 
123
    variable loop_finished     : boolean   := FALSE;
124
    variable loop_finished_a   : boolean   := FALSE;
125
    variable wb_adr_oi         : WB_ADDR_WIDTH_T ;
126
 
127
    variable mem_matrix_i_len  : integer   := 6;
128
    variable mem_matrix_j_len  : integer   := 3;
129
    type tb_s_mem_t is array ( 0 to ( mem_matrix_i_len - 1 ) ) of integer; -- 
130
    type tb_t_mem_t is array ( 0 to ( mem_matrix_j_len - 1 ) ) of integer; --
131
    type tb_w_mem_t is array ( 0 to ( mem_matrix_i_len * mem_matrix_j_len ) - 1 ) of integer; -- matrix 3 x 2
132
 
133
    variable tb_s_mem            : tb_s_mem_t;
134
    variable tb_t_mem            : tb_t_mem_t;
135
    variable tb_w_mem            : tb_w_mem_t;
136
 
137
    file outfile : text is out "outimgvhdl.txt";
138
    file outfile_w : text is out "w_memory_up_down.txt";
139
    file outfile_bias : text is out "bias_memory_up_down.txt";
140
    file outfile_test : text is out "test.txt";
141
    file outfile_answer : text is out "answer.txt";
142
    variable buff_out : line; --line number declaration
143
    variable buff_out_answer : line; --line number declaration
144
    variable component_lv : std_logic_vector ( mem_matrix_i_len - 1 downto 0 );
145
 
146
 
147
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
148
-- ///////////////////////////////////  WB READ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
149
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
150
    procedure wb_read_proc_bfm
151
    (
152
      signal   clk_i     : IN     std_logic ;
153
      signal   wb_ack_i  : IN     std_logic ;
154
      constant wb_adr_i  : IN     WB_ADDR_WIDTH_T ;
155
      constant wb_dat_o  : IN     WB_DATA_WIDTH_T ;
156
 
157
      signal   wb_adr_o  : OUT    WB_ADDR_WIDTH_T ;
158
      signal   wb_stb_o  : OUT    std_logic ;
159
      signal   wb_cyc_o  : OUT    std_logic ;
160
      signal   wb_we_o   : OUT    std_logic
161
    ) is
162
    begin
163
        hTrans02 := begin_transaction(hStream02, "WB-READ");
164
        add_color(hTrans02, "green yellow");
165
        add_attribute(hTrans02, wb_adr_i, "wb_adr");
166
 
167
        wb_adr_o    <= wb_adr_i  after PD;
168
        wb_we_o     <= '0'  after PD;
169
        wb_stb_o    <= '1'  after PD;
170
        wb_cyc_o    <= '1'  after PD;
171
        wait until clk_i'event and clk_i = '1' and wb_ack_i = '1';
172
--        wb_stb_o    <= '0'  after PD;
173
--        wb_cyc_o    <= '0'  after PD;
174
        wb_stb_o    <= '0';
175
        wb_cyc_o    <= '0';
176
--        wait until clk_i'event and clk_i = '1';
177
        add_attribute(hTrans02, wb_dat_o, "wb_dat_o");
178
--        wait until clk_i'event and clk_i = '1';
179
 
180
        end_transaction(hTrans02);
181
        free_transaction(hTrans02);
182
    end wb_read_proc_bfm;
183
-- *********************************************************************************
184
 
185
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
186
-- /////////////////////////////////// WB WRITE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
187
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
188
    procedure wb_write_proc_bfm
189
    (
190
      signal   clk_i     : IN     std_logic ;
191
      signal   wb_ack_i  : IN     std_logic ;
192
      constant wb_adr_i  : IN     WB_ADDR_WIDTH_T ;
193
      constant wb_dat_i  : IN     WB_DATA_WIDTH_T ;
194
 
195
      signal   wb_adr_o  : OUT    WB_ADDR_WIDTH_T ;
196
      signal   wb_dat_o  : OUT    WB_DATA_WIDTH_T ;
197
      signal   wb_stb_o  : OUT    std_logic ;
198
      signal   wb_cyc_o  : OUT    std_logic ;
199
      signal   wb_we_o   : OUT    std_logic
200
    ) is
201
    begin
202
        hTrans02 := begin_transaction(hStream02, "WB-WRITE");
203
        add_color(hTrans02, "thistle");
204
        add_attribute(hTrans02, wb_adr_i, "wb_adr");
205
        add_attribute(hTrans02, wb_dat_i, "wb_dat_i");
206
 
207
        wb_adr_o    <= wb_adr_i  after PD;
208
        wb_dat_o    <= wb_dat_i  after PD;
209
        wb_we_o     <= '1'  after PD;
210
        wb_stb_o    <= '1'  after PD;
211
        wb_cyc_o    <= '1'  after PD;
212
        wait until clk_i'event and clk_i = '1' and wb_ack_i = '1';
213
--        wb_we_o     <= '0'  after PD;
214
--        wb_stb_o    <= '0'  after PD;
215
--        wb_cyc_o    <= '0'  after PD;
216
        wb_we_o     <= '0';
217
        wb_stb_o    <= '0';
218
        wb_cyc_o    <= '0';
219
--        wait until clk_i'event and clk_i = '1';
220
--        wait until clk_i'event and clk_i = '1';
221
 
222
        end_transaction(hTrans02);
223
        free_transaction(hTrans02);
224
    end wb_write_proc_bfm;
225
-- *********************************************************************************
226
 
227
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
228
-- ////////////////////////////////  WB READ READY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
229
-- ////////////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
230
    procedure wb_read_ready_proc_bfm
231
    (
232
      signal   clk_i     : IN     std_logic ;
233
      signal   wb_ack_i  : IN     std_logic ;
234
      constant wb_adr_i  : IN     WB_ADDR_WIDTH_T ;
235
      constant wb_dat_o  : IN     WB_DATA_WIDTH_T ;
236
 
237
      signal   wb_adr_o  : OUT    WB_ADDR_WIDTH_T ;
238
      signal   wb_stb_o  : OUT    std_logic ;
239
      signal   wb_cyc_o  : OUT    std_logic ;
240
      signal   wb_we_o   : OUT    std_logic
241
    ) is
242
    begin
243
 
244
        hTrans02 := begin_transaction(hStream02, "WB-READ-READY");
245
        add_color(hTrans02, "yellow");
246
        add_attribute(hTrans02, wb_adr_i, "wb_adr");
247
 
248
        wb_adr_o    <= wb_adr_i  after PD;
249
        wb_we_o     <= '0'  after PD;
250
        wb_stb_o    <= '1'  after PD;
251
        wb_cyc_o    <= '1'  after PD;
252
        wait until clk_i'event and clk_i = '1' and wb_ack_i = '1';
253
--        wb_stb_o    <= '0'  after PD;
254
--        wb_cyc_o    <= '0'  after PD;
255
        wb_stb_o    <= '0';
256
        wb_cyc_o    <= '0';
257
--        wait until clk_i'event and clk_i = '1';
258
        add_attribute(hTrans02, wb_dat_o, "wb_dat_o");
259
--        wait until clk_i'event and clk_i = '1';
260
 
261
        end_transaction(hTrans02);
262
        free_transaction(hTrans02);
263
    end wb_read_ready_proc_bfm;
264
-- *********************************************************************************
265
 
266
    begin
267
      count_loop    := 0 ;
268
      tb_wb_adri_oi <= (others => '0') ;
269
      tb_wb_din_oi <= (others => '0') ;
270
      tb_wb_thres_oi <= X"00000020" ;
271
 
272
      hTrans01 := begin_transaction(hStream01, "RESET");
273
      add_color(hTrans01, "blue");
274
 
275
      wait until clk_gen_o'event and clk_gen_o = '0';
276
      rst_proc_o <= '1' after PD;
277
      wait until clk_gen_o'event and clk_gen_o = '1';
278
      wait until clk_gen_o'event and clk_gen_o = '1';
279
      wait until clk_gen_o'event and clk_gen_o = '1';   -- delay for 3 clks to init.
280
      rst_proc_o <= '0' after PD;
281
 
282
      end_transaction(hTrans01);
283
      free_transaction(hTrans01);
284
 
285
--    *************************************************************************
286
 
287
      hTrans01 := begin_transaction ( hStream01, "First_WB_Test" );
288
      add_color ( hTrans01, "green" );
289
 
290
      wb_read_proc_bfm
291
      (
292
        clk_gen_o ,
293
        tb_wb_ack_oi ,
294
        std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
295
        tb_wb_dout_oi ,
296
        tb_wb_adro_oi ,
297
        tb_wb_stb_oi ,
298
        tb_wb_cyc_oi ,
299
        tb_wb_we_oi
300
      );
301
 
302
--      READ All Latency Register, tb_wb_adri_oi <= "01110", d14, 0x0E
303
      wb_read_proc_bfm
304
      (
305
        clk_gen_o ,
306
        tb_wb_ack_oi ,
307
        std_logic_vector ( conv_unsigned ( WB_ALLLAT, WB_ADDR_WIDTH ) ) ,
308
        tb_wb_dout_oi ,
309
        tb_wb_adro_oi ,
310
        tb_wb_stb_oi ,
311
        tb_wb_cyc_oi ,
312
        tb_wb_we_oi
313
      );
314
 
315
--      WRITE Threshold Register, tb_wb_adri_oi <= "00001", d01, 0x01
316
      wb_write_proc_bfm
317
      (
318
        clk_gen_o ,
319
        tb_wb_ack_oi ,
320
        std_logic_vector ( conv_unsigned ( WB_THRES, WB_ADDR_WIDTH ) ) ,
321
        tb_wb_thres_oi ,
322
        tb_wb_adro_oi ,
323
        tb_wb_din_oi ,
324
        tb_wb_stb_oi ,
325
        tb_wb_cyc_oi ,
326
        tb_wb_we_oi
327
      );
328
 
329
--      READ Threshold Register, tb_wb_adri_oi <= "00001", d01, 0x01
330
      wb_read_proc_bfm
331
      (
332
        clk_gen_o ,
333
        tb_wb_ack_oi ,
334
        std_logic_vector ( conv_unsigned ( WB_THRES, WB_ADDR_WIDTH ) ) ,
335
        tb_wb_dout_oi ,
336
        tb_wb_adro_oi ,
337
        tb_wb_stb_oi ,
338
        tb_wb_cyc_oi ,
339
        tb_wb_we_oi
340
      );
341
 
342
--      WRITE Bias Register
343
      wb_write_proc_bfm
344
      (
345
        clk_gen_o ,
346
        tb_wb_ack_oi ,
347
        std_logic_vector ( conv_unsigned ( WB_BIAS, WB_ADDR_WIDTH ) ) ,
348
        X"00000001" ,
349
        tb_wb_adro_oi ,
350
        tb_wb_din_oi ,
351
        tb_wb_stb_oi ,
352
        tb_wb_cyc_oi ,
353
        tb_wb_we_oi
354
      );
355
 
356
--      READ Bias Register
357
      wb_read_proc_bfm
358
      (
359
        clk_gen_o ,
360
        tb_wb_ack_oi ,
361
        std_logic_vector ( conv_unsigned ( WB_BIAS, WB_ADDR_WIDTH ) ) ,
362
        tb_wb_dout_oi ,
363
        tb_wb_adro_oi ,
364
        tb_wb_stb_oi ,
365
        tb_wb_cyc_oi ,
366
        tb_wb_we_oi
367
      );
368
 
369
      end_transaction(hTrans01);
370
      free_transaction(hTrans01);
371
 
372
      hTrans01 := begin_transaction ( hStream01, "Wait_for_core_is_ready" );
373
      add_color ( hTrans01, "yellow" );
374
 
375
--      READ Status Register, tb_wb_adri_oi <= "00000"
376
        wb_read_ready_proc_bfm
377
        (
378
          clk_gen_o ,
379
          tb_wb_ack_oi ,
380
          std_logic_vector ( conv_unsigned ( WB_STARTI, WB_ADDR_WIDTH ) ) ,
381
          tb_wb_dout_oi ,
382
          tb_wb_adro_oi ,
383
          tb_wb_stb_oi ,
384
          tb_wb_cyc_oi ,
385
          tb_wb_we_oi
386
        );
387
 
388
      end_transaction ( hTrans01 );
389
      free_transaction ( hTrans01 );
390
 
391
      hTrans01 := begin_transaction ( hStream01, "Start_Stop_values" );
392
      add_color ( hTrans01, "cyan" );
393
 
394
--      WRITE STARTI Register, tb_wb_adri_oi <= "00111"
395
      wb_write_proc_bfm
396
      (
397
        clk_gen_o ,
398
        tb_wb_ack_oi ,
399
        std_logic_vector ( conv_unsigned ( WB_STARTI, WB_ADDR_WIDTH ) ) ,
400
        X"00000000" ,
401
        tb_wb_adro_oi ,
402
        tb_wb_din_oi ,
403
        tb_wb_stb_oi ,
404
        tb_wb_cyc_oi ,
405
        tb_wb_we_oi
406
      );
407
 
408
--      WRITE STARTJ Register, tb_wb_adri_oi <= "01001"
409
      wb_write_proc_bfm
410
      (
411
        clk_gen_o ,
412
        tb_wb_ack_oi ,
413
        std_logic_vector ( conv_unsigned ( WB_STARTJ, WB_ADDR_WIDTH ) ) ,
414
        X"00000000" ,
415
        tb_wb_adro_oi ,
416
        tb_wb_din_oi ,
417
        tb_wb_stb_oi ,
418
        tb_wb_cyc_oi ,
419
        tb_wb_we_oi
420
      );
421
 
422
--      WRITE STOPI Register, tb_wb_adri_oi <= "01000"
423
      wb_write_proc_bfm
424
      (
425
        clk_gen_o ,
426
        tb_wb_ack_oi ,
427
        std_logic_vector ( conv_unsigned ( WB_STOPI, WB_ADDR_WIDTH ) ) ,
428
        std_logic_vector ( conv_unsigned ( mem_matrix_i_len-1, WB_DATA_WIDTH ) ) ,
429
        tb_wb_adro_oi ,
430
        tb_wb_din_oi ,
431
        tb_wb_stb_oi ,
432
        tb_wb_cyc_oi ,
433
        tb_wb_we_oi
434
      );
435
 
436
--      WRITE STOPJ Register, tb_wb_adri_oi <= "01010"
437
      wb_write_proc_bfm
438
      (
439
        clk_gen_o ,
440
        tb_wb_ack_oi ,
441
        std_logic_vector ( conv_unsigned ( WB_STOPJ, WB_ADDR_WIDTH ) ) ,
442
        std_logic_vector ( conv_unsigned ( mem_matrix_j_len-1, WB_DATA_WIDTH ) ) ,
443
        tb_wb_adro_oi ,
444
        tb_wb_din_oi ,
445
        tb_wb_stb_oi ,
446
        tb_wb_cyc_oi ,
447
        tb_wb_we_oi
448
      );
449
 
450
      end_transaction ( hTrans01 );
451
      free_transaction ( hTrans01 );
452
 
453
      hTrans01 := begin_transaction ( hStream01, "Wait_for_READY" );
454
      add_color ( hTrans01, "white" );
455
 
456
      wb_adr_oi   := "00000";
457
      loop_finished := FALSE;
458
      while ( NOT loop_finished ) loop
459
 
460
        wb_read_proc_bfm
461
        (
462
          clk_gen_o ,
463
          tb_wb_ack_oi ,
464
          wb_adr_oi ,
465
          tb_wb_dout_oi ,
466
          tb_wb_adro_oi ,
467
          tb_wb_stb_oi ,
468
          tb_wb_cyc_oi ,
469
          tb_wb_we_oi
470
        );
471
 
472
        if ( (tb_wb_dout_oi (STAT_RDY) = '1') ) then
473
          loop_finished := TRUE;
474
        end if;
475
 
476
      end loop;
477
 
478
      end_transaction ( hTrans01 );
479
      free_transaction ( hTrans01 );
480
 
481
 
482
      hTrans01 := begin_transaction ( hStream01, "WRITE-W-Memory_until_end" );
483
      add_color ( hTrans01, "orange" );
484
 
485
--      READ W-MEM, tb_wb_adri_oi <= "10011"
486
      count_data := 0;
487
      count_loop := 0;
488
      loop_finished_a := FALSE;
489
 
490
      while ( NOT loop_finished_a ) loop
491
 
492
        tb_w_mem (count_loop) := count_data;
493
 
494
--      WRITE W-MEM
495
        wb_write_proc_bfm
496
        (
497
          clk_gen_o ,
498
          tb_wb_ack_oi ,
499
          std_logic_vector ( conv_unsigned ( WB_START5_W, WB_ADDR_WIDTH ) ) ,
500
          std_logic_vector ( conv_unsigned ( count_data, WB_DATA_WIDTH ) ) ,
501
          tb_wb_adro_oi ,
502
          tb_wb_din_oi ,
503
          tb_wb_stb_oi ,
504
          tb_wb_cyc_oi ,
505
          tb_wb_we_oi
506
        );
507
 
508
        wb_read_proc_bfm
509
        (
510
          clk_gen_o ,
511
          tb_wb_ack_oi ,
512
          std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
513
          tb_wb_dout_oi ,
514
          tb_wb_adro_oi ,
515
          tb_wb_stb_oi ,
516
          tb_wb_cyc_oi ,
517
          tb_wb_we_oi
518
        );
519
 
520
        count_data := count_data + 1 ;
521
        count_loop := count_loop + 1 ;
522
        if ( (tb_wb_dout_oi (STAT_RD_WR_COMPLETE) = '1') ) then
523
          loop_finished_a := TRUE;
524
        end if;
525
 
526
      end loop;
527
 
528
      end_transaction ( hTrans01 );
529
      free_transaction ( hTrans01 );
530
 
531
      hTrans01 := begin_transaction ( hStream01, "READ-W-Memory_until_end" );
532
      add_color ( hTrans01, "yellow" );
533
 
534
--      READ W-MEM, tb_wb_adri_oi <= "10011"
535
      count_loop := 0;
536
      loop_finished_a := FALSE;
537
      while ( NOT loop_finished_a ) loop
538
 
539
        wb_read_proc_bfm
540
        (
541
          clk_gen_o ,
542
          tb_wb_ack_oi ,
543
          std_logic_vector ( conv_unsigned ( WB_START5_W, WB_ADDR_WIDTH ) ) ,
544
          tb_wb_dout_oi ,
545
          tb_wb_adro_oi ,
546
          tb_wb_stb_oi ,
547
          tb_wb_cyc_oi ,
548
          tb_wb_we_oi
549
        );
550
 
551
        if ( NOT (tb_wb_dout_oi = std_logic_vector ( conv_unsigned ( tb_w_mem (count_loop), WB_DATA_WIDTH ) )) ) then
552
          loop_finished_a := TRUE;
553
          hTrans04 := begin_transaction ( hStream02, "READ-W-Memory_MISMATCH" );
554
          add_color ( hTrans04, "red" );
555
          add_attribute ( hTrans04, tb_wb_dout_oi, "exp_tb_wb_dout_oi" );
556
          add_attribute ( hTrans04, std_logic_vector ( conv_unsigned ( tb_w_mem (count_loop), WB_DATA_WIDTH ) ), "rd_tb_wb_dout_oi" );
557
 
558
          wait for 100ns;
559
          end_transaction ( hTrans04 );
560
          free_transaction ( hTrans04 );
561
 
562
        end if;
563
 
564
        wb_read_proc_bfm
565
        (
566
          clk_gen_o ,
567
          tb_wb_ack_oi ,
568
          std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
569
          tb_wb_dout_oi ,
570
          tb_wb_adro_oi ,
571
          tb_wb_stb_oi ,
572
          tb_wb_cyc_oi ,
573
          tb_wb_we_oi
574
        );
575
 
576
        count_loop := count_loop + 1 ;
577
        if ( (tb_wb_dout_oi ( STAT_RD_WR_COMPLETE) = '1' ) ) then
578
          loop_finished_a := TRUE;
579
        end if;
580
 
581
      end loop;
582
 
583
      end_transaction ( hTrans01 );
584
      free_transaction ( hTrans01 );
585
 
586
      hTrans01 := begin_transaction ( hStream01, "Start_INIT_Process" );
587
      add_color ( hTrans01, "medium sea green" );
588
 
589
      loop_finished_a := FALSE;
590
 
591
--      INIT
592
        wb_write_proc_bfm
593
        (
594
          clk_gen_o ,
595
          tb_wb_ack_oi ,
596
          std_logic_vector ( conv_unsigned ( WB_START3, WB_ADDR_WIDTH ) ) ,
597
          X"00000000" ,
598
          tb_wb_adro_oi ,
599
          tb_wb_din_oi ,
600
          tb_wb_stb_oi ,
601
          tb_wb_cyc_oi ,
602
          tb_wb_we_oi
603
        );
604
 
605
      while ( NOT loop_finished_a ) loop
606
 
607
        wb_read_proc_bfm
608
        (
609
          clk_gen_o ,
610
          tb_wb_ack_oi ,
611
          std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
612
          tb_wb_dout_oi ,
613
          tb_wb_adro_oi ,
614
          tb_wb_stb_oi ,
615
          tb_wb_cyc_oi ,
616
          tb_wb_we_oi
617
        );
618
 
619
        if ( (tb_wb_dout_oi ( STAT_RDY) = '1' ) ) then
620
          loop_finished_a := TRUE;
621
        end if;
622
 
623
      end loop;
624
 
625
      end_transaction ( hTrans01 );
626
      free_transaction ( hTrans01 );
627
 
628
      hTrans01 := begin_transaction ( hStream01, "Enable_Interrupt" );
629
      add_color ( hTrans01, "Magenta" );
630
 
631
--      Enable Interrupt, tb_wb_adri_oi <= "00000"
632
      wb_write_proc_bfm
633
      (
634
        clk_gen_o ,
635
        tb_wb_ack_oi ,
636
        std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
637
        X"00000008" ,
638
        tb_wb_adro_oi ,
639
        tb_wb_din_oi ,
640
        tb_wb_stb_oi ,
641
        tb_wb_cyc_oi ,
642
        tb_wb_we_oi
643
      );
644
 
645
      end_transaction ( hTrans01 );
646
      free_transaction ( hTrans01 );
647
 
648
 
649
      hTrans01 := begin_transaction ( hStream01, "Training" );
650
      add_color ( hTrans01, "violett" );
651
      tb_wb_clear_epoch_oi <= (others => '1') ;
652
 
653
      for count_pattern in 0 to 63 loop
654
        component_lv := std_logic_vector ( conv_signed ( count_pattern, mem_matrix_i_len ) );
655
        write ( buff_out, string'("-- Pattern Number: ") );
656
        write ( buff_out, count_pattern );
657
        write ( buff_out, string'("  ") );
658
        write ( buff_out, component_lv );
659
 
660
        tb_s_mem (0) := MINUS_ONE;
661
        tb_s_mem (1) := MINUS_ONE;
662
        tb_s_mem (2) := MINUS_ONE;
663
        tb_s_mem (3) := MINUS_ONE;
664
        tb_s_mem (4) := MINUS_ONE;
665
        tb_s_mem (5) := MINUS_ONE;
666
 
667
        if ( ( component_lv (0) = '1' ) ) then
668
          tb_s_mem (0) := PLUS_ONE;
669
        end if;
670
        if ( ( component_lv (1) = '1' ) ) then
671
          tb_s_mem (1) := PLUS_ONE;
672
        end if;
673
        if ( ( component_lv (2) = '1' ) ) then
674
          tb_s_mem (2) := PLUS_ONE;
675
        end if;
676
        if ( ( component_lv (3) = '1' ) ) then
677
          tb_s_mem (3) := PLUS_ONE;
678
        end if;
679
        if ( ( component_lv (4) = '1' ) ) then
680
          tb_s_mem (4) := PLUS_ONE;
681
        end if;
682
        if ( ( component_lv (5) = '1' ) ) then
683
          tb_s_mem (5) := PLUS_ONE;
684
        end if;
685
 
686
        tb_t_mem (0) := MINUS_ONE;  -- UP
687
        tb_t_mem (1) := MINUS_ONE; -- DOWN
688
        tb_t_mem (2) := MINUS_ONE; -- STOP
689
 
690
        if ( (component_lv = "010101" ) ) then
691
          tb_t_mem (0) := PLUS_ONE;  -- UP
692
          tb_t_mem (1) := MINUS_ONE; -- DOWN
693
          tb_t_mem (2) := MINUS_ONE; -- STOP
694
          write ( buff_out, string'("      UP") );
695
        end if;
696
        if ( (component_lv = "101010" ) ) then
697
          tb_t_mem (0) := MINUS_ONE;  -- UP
698
          tb_t_mem (1) := PLUS_ONE; -- DOWN
699
          tb_t_mem (2) := MINUS_ONE; -- STOP
700
          write ( buff_out, string'("      DOWN") );
701
        end if;
702
        if ( (component_lv = "111011" ) ) then
703
          tb_t_mem (0) := MINUS_ONE;  -- UP
704
          tb_t_mem (1) := MINUS_ONE; -- DOWN
705
          tb_t_mem (2) := PLUS_ONE; -- STOP
706
          write ( buff_out, string'("      STOP") );
707
        end if;
708
 
709
        writeline ( outfile, buff_out );
710
        write ( buff_out, string'("-- Components") );
711
        writeline ( outfile, buff_out );
712
 
713
        hTrans04 := begin_transaction ( hStream02, "WRITE-S-Memory" );
714
        add_color ( hTrans04, "light blue" );
715
 
716
        count_data := 0;
717
        count_loop := 0;
718
        loop_finished_a := FALSE;
719
        while ( NOT loop_finished_a ) loop
720
 
721
  --      WRITE S-MEM
722
          wb_write_proc_bfm
723
          (
724
            clk_gen_o ,
725
            tb_wb_ack_oi ,
726
            std_logic_vector ( conv_unsigned ( WB_START5_S, WB_ADDR_WIDTH ) ) ,
727
            std_logic_vector ( conv_signed ( tb_s_mem (count_loop), WB_DATA_WIDTH ) ) ,
728
            tb_wb_adro_oi ,
729
            tb_wb_din_oi ,
730
            tb_wb_stb_oi ,
731
            tb_wb_cyc_oi ,
732
            tb_wb_we_oi
733
          );
734
          write ( buff_out, std_logic_vector ( conv_signed ( tb_s_mem (count_loop), WB_DATA_WIDTH ) ) );
735
          writeline ( outfile, buff_out );
736
 
737
          wb_read_proc_bfm
738
          (
739
            clk_gen_o ,
740
            tb_wb_ack_oi ,
741
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
742
            tb_wb_dout_oi ,
743
            tb_wb_adro_oi ,
744
            tb_wb_stb_oi ,
745
            tb_wb_cyc_oi ,
746
            tb_wb_we_oi
747
          );
748
 
749
          count_data := count_data + 1 ;
750
          count_loop := count_loop + 1 ;
751
          if ( (tb_wb_dout_oi (STAT_RD_WR_COMPLETE) = '1') ) then
752
            loop_finished_a := TRUE;
753
          end if;
754
        end loop;
755
 
756
        end_transaction ( hTrans04 );
757
        free_transaction ( hTrans04 );
758
 
759
        hTrans04 := begin_transaction ( hStream02, "WRITE-T-Memory" );
760
        add_color ( hTrans04, "light yellow" );
761
        write ( buff_out, string'("-- Answer") );
762
        writeline ( outfile, buff_out );
763
 
764
        count_data := 0;
765
        count_loop := 0;
766
        loop_finished_a := FALSE;
767
        while ( NOT loop_finished_a ) loop
768
 
769
  --      WRITE T-MEM
770
          wb_write_proc_bfm
771
          (
772
            clk_gen_o ,
773
            tb_wb_ack_oi ,
774
            std_logic_vector ( conv_unsigned ( WB_START5_T, WB_ADDR_WIDTH ) ) ,
775
            std_logic_vector ( conv_signed ( tb_t_mem (count_loop), WB_DATA_WIDTH ) ) ,
776
            tb_wb_adro_oi ,
777
            tb_wb_din_oi ,
778
            tb_wb_stb_oi ,
779
            tb_wb_cyc_oi ,
780
            tb_wb_we_oi
781
          );
782
          write ( buff_out, std_logic_vector ( conv_signed ( tb_t_mem (count_loop), WB_DATA_WIDTH ) ) );
783
          writeline ( outfile, buff_out );
784
 
785
          wb_read_proc_bfm
786
          (
787
            clk_gen_o ,
788
            tb_wb_ack_oi ,
789
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
790
            tb_wb_dout_oi ,
791
            tb_wb_adro_oi ,
792
            tb_wb_stb_oi ,
793
            tb_wb_cyc_oi ,
794
            tb_wb_we_oi
795
          );
796
 
797
          count_data := count_data + 1 ;
798
          count_loop := count_loop + 1 ;
799
          if ( (tb_wb_dout_oi (STAT_RD_WR_COMPLETE) = '1') ) then
800
            loop_finished_a := TRUE;
801
          end if;
802
        end loop;
803
 
804
        end_transaction ( hTrans04 );
805
        free_transaction ( hTrans04 );
806
 
807
        hTrans04 := begin_transaction ( hStream02, "Start_Training_Process" );
808
        add_color ( hTrans04, "light blue" );
809
 
810
        loop_finished_a := FALSE;
811
 
812
  --      Training
813
          wb_write_proc_bfm
814
          (
815
            clk_gen_o ,
816
            tb_wb_ack_oi ,
817
            std_logic_vector ( conv_unsigned ( WB_START6, WB_ADDR_WIDTH ) ) ,
818
            tb_wb_clear_epoch_oi ,
819
            tb_wb_adro_oi ,
820
            tb_wb_din_oi ,
821
            tb_wb_stb_oi ,
822
            tb_wb_cyc_oi ,
823
            tb_wb_we_oi
824
          );
825
        tb_wb_clear_epoch_oi <= (others => '0') ;
826
 
827
        while ( NOT loop_finished_a ) loop
828
 
829
          wb_read_proc_bfm
830
          (
831
            clk_gen_o ,
832
            tb_wb_ack_oi ,
833
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
834
            tb_wb_dout_oi ,
835
            tb_wb_adro_oi ,
836
            tb_wb_stb_oi ,
837
            tb_wb_cyc_oi ,
838
            tb_wb_we_oi
839
          );
840
 
841
          count_loop := count_loop + 1 ;
842
          if ( (tb_wb_dout_oi ( STAT_INT_TRAIN) = '1' ) ) then
843
            loop_finished_a := TRUE;
844
          end if;
845
        end loop;
846
 
847
        end_transaction ( hTrans04 );
848
        free_transaction ( hTrans04 );
849
      end loop;
850
 
851
      end_transaction ( hTrans01 );
852
      free_transaction ( hTrans01 );
853
 
854
      hTrans01 := begin_transaction ( hStream01, "READ-W-Memory_to_file" );
855
      add_color ( hTrans01, "violet red" );
856
      write ( buff_out, string'("-- W-Memory content for UP/DOWN/STOP pattern") );
857
      writeline ( outfile_w, buff_out );
858
 
859
--      READ W-MEM, tb_wb_adri_oi <= "10011"
860
      count_loop := 0;
861
      loop_finished_a := FALSE;
862
      while ( NOT loop_finished_a ) loop
863
 
864
        wb_read_proc_bfm
865
        (
866
          clk_gen_o ,
867
          tb_wb_ack_oi ,
868
          std_logic_vector ( conv_unsigned ( WB_START5_W, WB_ADDR_WIDTH ) ) ,
869
          tb_wb_dout_oi ,
870
          tb_wb_adro_oi ,
871
          tb_wb_stb_oi ,
872
          tb_wb_cyc_oi ,
873
          tb_wb_we_oi
874
        );
875
 
876
        write ( buff_out, tb_wb_dout_oi );
877
        writeline ( outfile_w, buff_out );
878
 
879
        wb_read_proc_bfm
880
        (
881
          clk_gen_o ,
882
          tb_wb_ack_oi ,
883
          std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
884
          tb_wb_dout_oi ,
885
          tb_wb_adro_oi ,
886
          tb_wb_stb_oi ,
887
          tb_wb_cyc_oi ,
888
          tb_wb_we_oi
889
        );
890
 
891
        count_loop := count_loop + 1 ;
892
        if ( (tb_wb_dout_oi ( STAT_RD_WR_COMPLETE) = '1' ) ) then
893
          loop_finished_a := TRUE;
894
        end if;
895
      end loop;
896
 
897
      end_transaction ( hTrans01 );
898
      free_transaction ( hTrans01 );
899
 
900
      hTrans01 := begin_transaction ( hStream01, "READ-BIAS-Memory_to_file" );
901
      add_color ( hTrans01, "violet red" );
902
      write ( buff_out, string'("-- BIAS-Memory content for UP/DOWN/STOP pattern") );
903
      writeline ( outfile_bias, buff_out );
904
 
905
      count_loop := 0;
906
      loop_finished_a := FALSE;
907
      while ( NOT loop_finished_a ) loop
908
 
909
        wb_read_proc_bfm
910
        (
911
          clk_gen_o ,
912
          tb_wb_ack_oi ,
913
          std_logic_vector ( conv_unsigned ( WB_START5_BIAS, WB_ADDR_WIDTH ) ) ,
914
          tb_wb_dout_oi ,
915
          tb_wb_adro_oi ,
916
          tb_wb_stb_oi ,
917
          tb_wb_cyc_oi ,
918
          tb_wb_we_oi
919
        );
920
 
921
        write ( buff_out, tb_wb_dout_oi );
922
        writeline ( outfile_bias, buff_out );
923
 
924
        wb_read_proc_bfm
925
        (
926
          clk_gen_o ,
927
          tb_wb_ack_oi ,
928
          std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
929
          tb_wb_dout_oi ,
930
          tb_wb_adro_oi ,
931
          tb_wb_stb_oi ,
932
          tb_wb_cyc_oi ,
933
          tb_wb_we_oi
934
        );
935
 
936
        count_loop := count_loop + 1 ;
937
        if ( (tb_wb_dout_oi ( STAT_RD_WR_COMPLETE) = '1' ) ) then
938
          loop_finished_a := TRUE;
939
        end if;
940
      end loop;
941
 
942
      end_transaction ( hTrans01 );
943
      free_transaction ( hTrans01 );
944
 
945
      hTrans01 := begin_transaction ( hStream01, "Test" );
946
      add_color ( hTrans01, "maroon" );
947
 
948
      for count_pattern in 0 to 63 loop
949
        component_lv := std_logic_vector ( conv_signed ( count_pattern, mem_matrix_i_len ) );
950
        write ( buff_out, string'("-- Pattern Number: ") );
951
        write ( buff_out, count_pattern );
952
        writeline ( outfile_test, buff_out );
953
 
954
        tb_s_mem (0) := MINUS_ONE;
955
        tb_s_mem (1) := MINUS_ONE;
956
        tb_s_mem (2) := MINUS_ONE;
957
        tb_s_mem (3) := MINUS_ONE;
958
        tb_s_mem (4) := MINUS_ONE;
959
        tb_s_mem (5) := MINUS_ONE;
960
 
961
        if ( ( component_lv (0) = '1' ) ) then
962
          tb_s_mem (0) := PLUS_ONE;
963
        end if;
964
        if ( ( component_lv (1) = '1' ) ) then
965
          tb_s_mem (1) := PLUS_ONE;
966
        end if;
967
        if ( ( component_lv (2) = '1' ) ) then
968
          tb_s_mem (2) := PLUS_ONE;
969
        end if;
970
        if ( ( component_lv (3) = '1' ) ) then
971
          tb_s_mem (3) := PLUS_ONE;
972
        end if;
973
        if ( ( component_lv (4) = '1' ) ) then
974
          tb_s_mem (4) := PLUS_ONE;
975
        end if;
976
        if ( ( component_lv (5) = '1' ) ) then
977
          tb_s_mem (5) := PLUS_ONE;
978
        end if;
979
 
980
        write ( buff_out, string'("-- Components") );
981
        writeline ( outfile_test, buff_out );
982
 
983
        hTrans04 := begin_transaction ( hStream02, "WRITE-S-Memory" );
984
        add_color ( hTrans04, "light blue" );
985
 
986
        count_data := 0;
987
        count_loop := 0;
988
        loop_finished_a := FALSE;
989
 
990
        while ( NOT loop_finished_a ) loop
991
 
992
  --      WRITE S-MEM
993
          wb_write_proc_bfm
994
          (
995
            clk_gen_o ,
996
            tb_wb_ack_oi ,
997
            std_logic_vector ( conv_unsigned ( WB_START5_S, WB_ADDR_WIDTH ) ) ,
998
            std_logic_vector ( conv_signed ( tb_s_mem (count_loop), WB_DATA_WIDTH ) ) ,
999
            tb_wb_adro_oi ,
1000
            tb_wb_din_oi ,
1001
            tb_wb_stb_oi ,
1002
            tb_wb_cyc_oi ,
1003
            tb_wb_we_oi
1004
          );
1005
          write ( buff_out, std_logic_vector ( conv_signed ( tb_s_mem (count_loop), WB_DATA_WIDTH ) ) );
1006
          writeline ( outfile_test, buff_out );
1007
 
1008
          wb_read_proc_bfm
1009
          (
1010
            clk_gen_o ,
1011
            tb_wb_ack_oi ,
1012
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
1013
            tb_wb_dout_oi ,
1014
            tb_wb_adro_oi ,
1015
            tb_wb_stb_oi ,
1016
            tb_wb_cyc_oi ,
1017
            tb_wb_we_oi
1018
          );
1019
 
1020
          count_data := count_data + 1 ;
1021
          count_loop := count_loop + 1 ;
1022
          if ( (tb_wb_dout_oi (STAT_RD_WR_COMPLETE) = '1') ) then
1023
            loop_finished_a := TRUE;
1024
          end if;
1025
        end loop;
1026
 
1027
        end_transaction ( hTrans04 );
1028
        free_transaction ( hTrans04 );
1029
 
1030
 
1031
        hTrans04 := begin_transaction ( hStream02, "Start_Test_Process" );
1032
        add_color ( hTrans04, "light blue" );
1033
 
1034
        loop_finished_a := FALSE;
1035
 
1036
  --      Training
1037
          wb_write_proc_bfm
1038
          (
1039
            clk_gen_o ,
1040
            tb_wb_ack_oi ,
1041
            std_logic_vector ( conv_unsigned ( WB_START4, WB_ADDR_WIDTH ) ) ,
1042
            X"00000000" ,
1043
            tb_wb_adro_oi ,
1044
            tb_wb_din_oi ,
1045
            tb_wb_stb_oi ,
1046
            tb_wb_cyc_oi ,
1047
            tb_wb_we_oi
1048
          );
1049
 
1050
        while ( NOT loop_finished_a ) loop
1051
 
1052
          wb_read_proc_bfm
1053
          (
1054
            clk_gen_o ,
1055
            tb_wb_ack_oi ,
1056
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
1057
            tb_wb_dout_oi ,
1058
            tb_wb_adro_oi ,
1059
            tb_wb_stb_oi ,
1060
            tb_wb_cyc_oi ,
1061
            tb_wb_we_oi
1062
          );
1063
 
1064
          count_loop := count_loop + 1 ;
1065
          if ( (tb_wb_dout_oi ( STAT_INT_TEST) = '1' ) ) then
1066
            loop_finished_a := TRUE;
1067
          end if;
1068
        end loop;
1069
 
1070
        end_transaction ( hTrans04 );
1071
        free_transaction ( hTrans04 );
1072
 
1073
        hTrans04 := begin_transaction ( hStream02, "READ-T-Memory" );
1074
        add_color ( hTrans04, "sate blue" );
1075
        write ( buff_out, string'("-- Answer") );
1076
        writeline ( outfile_test, buff_out );
1077
 
1078
        count_data := 0;
1079
        count_loop := 0;
1080
        loop_finished_a := FALSE;
1081
        write ( buff_out_answer, count_pattern );
1082
 
1083
        while ( NOT loop_finished_a ) loop
1084
 
1085
  --      READ T-MEM
1086
          wb_read_proc_bfm
1087
          (
1088
            clk_gen_o ,
1089
            tb_wb_ack_oi ,
1090
            std_logic_vector ( conv_unsigned ( WB_START5_T, WB_ADDR_WIDTH ) ) ,
1091
            tb_wb_dout_oi ,
1092
            tb_wb_adro_oi ,
1093
            tb_wb_stb_oi ,
1094
            tb_wb_cyc_oi ,
1095
            tb_wb_we_oi
1096
          );
1097
            write ( buff_out, tb_wb_dout_oi );
1098
            write ( buff_out, string'("  ") );
1099
 
1100
            write ( buff_out_answer, string'(",") );
1101
            if ( signed ( tb_wb_dout_oi ) < 0 ) then
1102
              hwrite ( buff_out_answer, std_logic_vector ( conv_unsigned ( (unsigned ( not std_logic_vector (tb_wb_dout_oi) ) + 1), WB_DATA_WIDTH )) );
1103
              write ( buff_out_answer, string'(",-1") );
1104
            else
1105
              hwrite ( buff_out_answer, (  ( tb_wb_dout_oi ) ) );
1106
              write ( buff_out_answer, string'(",1") );
1107
            end if;
1108
 
1109
          wb_read_proc_bfm
1110
          (
1111
            clk_gen_o ,
1112
            tb_wb_ack_oi ,
1113
            std_logic_vector ( conv_unsigned ( WB_STAT_A, WB_ADDR_WIDTH ) ) ,
1114
            tb_wb_dout_oi ,
1115
            tb_wb_adro_oi ,
1116
            tb_wb_stb_oi ,
1117
            tb_wb_cyc_oi ,
1118
            tb_wb_we_oi
1119
          );
1120
 
1121
          count_loop := count_loop + 1 ;
1122
          if ( (tb_wb_dout_oi ( STAT_RD_WR_COMPLETE ) = '1' ) ) then
1123
            loop_finished_a := TRUE;
1124
          end if;
1125
        end loop;
1126
        writeline ( outfile_test, buff_out );
1127
        writeline ( outfile_answer, buff_out_answer );
1128
 
1129
        end_transaction ( hTrans04 );
1130
        free_transaction ( hTrans04 );
1131
      end loop;
1132
      end_transaction ( hTrans01 );
1133
      free_transaction ( hTrans01 );
1134
 
1135
 
1136
      done <= TRUE;
1137
   end process tb_avm_test;
1138
 
1139
   clk_gen : process
1140
   begin
1141
       while (not done) loop
1142
           clk_gen_o <= '0','1' after PERIOD/2;
1143
           wait for PERIOD;
1144
       end loop;
1145
       wait;
1146
   end process clk_gen;
1147
 
1148
-- Instance port mappings.
1149
U_0 : p0300_m00000_s_v03_top_level_blk
1150
   PORT MAP (
1151
     wb_clk_i    => clk_gen_o ,
1152
     wb_rst_i    => rst_proc_o ,
1153
     wb_adr_i    => tb_wb_adro_oi ,
1154
     wb_dat_i    => tb_wb_din_oi ,
1155
     wb_stb_i    => tb_wb_stb_oi ,
1156
     wb_cyc_i    => tb_wb_cyc_oi ,
1157
     wb_we_i     => tb_wb_we_oi ,
1158
 
1159
     wb_ack_o    => tb_wb_ack_oi ,
1160
     wb_dat_o    => tb_wb_dout_oi
1161
   );
1162
 
1163
END ARCHITECTURE testbench;
1164
 

powered by: WebSVN 2.1.0

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