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

Subversion Repositories vhld_tb

[/] [vhld_tb/] [trunk/] [source/] [template_tb_bhv.vhd] - Blame information for rev 13

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

Line No. Rev Author Line
1 2 sckoarn
-------------------------------------------------------------------------------
2
--             Copyright 2007  Ken Campbell
3
-------------------------------------------------------------------------------
4
-- $Author: sckoarn $
5
--
6 13 sckoarn
-- $Date: 2008-02-24 01:34:11 $
7 2 sckoarn
--
8
-- $Name: not supported by cvs2svn $
9
--
10 13 sckoarn
-- $Id: template_tb_bhv.vhd,v 1.4 2008-02-24 01:34:11 sckoarn Exp $
11 2 sckoarn
--
12
-- $Source: /home/marcus/revision_ctrl_test/oc_cvs/cvs/vhld_tb/source/template_tb_bhv.vhd,v $
13
--
14
-- Description :  The the testbench package template behave file.
15
--                Initial GNU release.
16
--
17
------------------------------------------------------------------------------
18
--This file is part of The VHDL Test Bench.
19
--
20
--    The VHDL Test Bench is free software; you can redistribute it and/or modify
21
--    it under the terms of the GNU General Public License as published by
22
--    the Free Software Foundation; either version 2 of the License, or
23
--    (at your option) any later version.
24
--
25 10 sckoarn
--    The VHDL Test Bench  is distributed in the hope that it will be useful,
26 2 sckoarn
--    but WITHOUT ANY WARRANTY; without even the implied warranty of
27
--    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28
--    GNU General Public License for more details.
29
--
30
--    You should have received a copy of the GNU General Public License
31
--    along with The VHDL Test Bench; if not, write to the Free Software
32
--    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
33
-------------------------------------------------------------------------------
34
-- Revision History:
35
-- $Log: not supported by cvs2svn $
36 13 sckoarn
-- Revision 1.3  2007/11/14 02:35:56  sckoarn
37
-- Fix to WHILE instruction: Change if_state typo to wh_state
38
--
39 11 sckoarn
-- Revision 1.2  2007/09/02 04:04:04  sckoarn
40
-- Update of version 1.2 tb_pkg
41
-- See documentation for details
42
--
43 10 sckoarn
-- Revision 1.1.1.1  2007/04/06 04:06:48  sckoarn
44
-- Import of the vhld_tb
45 2 sckoarn
--
46 10 sckoarn
--
47 2 sckoarn
-------------------------------------------------------------------------------
48
 
49
architecture bhv of tb_Top is
50
 
51
 
52
  signal tb_clk            : std_logic;
53
 
54
-------------------------------------------------------------------------
55
-- Component defintion
56
 
57
-------------------------------------------------------------------------------
58
-- USER Component instantiations
59
--for all: Arbitor      use entity tb_objects.arbitor(bhv);
60
 
61
 
62
  begin
63
 
64
-------------------------------------------------------------------------------
65
-- clock driver process
66
-- the main clock generator
67
clock_driver:
68
  process
69
  begin
70
    tb_clk <=  '0';
71
    wait for 5 ns;
72
    tb_clk <=  '1';
73
    wait for 5 ns;
74
  end process clock_driver;
75
 
76
  --------------------------------------------------------------------------
77
  -- Read_file Process:
78
  --
79
  -- This process is the main process of the testbench.  This process reads
80
  -- the stumulus file, parses it, creates lists of records, then uses these
81
  -- lists to exicute user instructions.  There are two passes through the
82
  -- script.  Pass one reads in the stimulus text file, checks it, creates
83
  -- lists of valid instructions, valid list of variables and finialy a list
84
  -- of user instructions(the sequence).  The second pass through the file,
85
  -- records are drawn from the user instruction list, variables are converted
86
  -- to integers and put through the elsif structure for exicution.
87
  --------------------------------------------------------------------------
88
  Read_file: process
89
    variable current_line : text_line;  -- The current input line
90
    variable inst_list    : inst_def_ptr;  -- the instruction list
91
    variable defined_vars : var_field_ptr; -- defined variables
92
    variable inst_sequ    : stim_line_ptr; -- the instruction sequence
93 10 sckoarn
    variable file_list    : file_def_ptr;  -- pointer to the list of file names
94 13 sckoarn
    variable last_sequ_num: integer;
95
    variable last_sequ_ptr: stim_line_ptr;
96 2 sckoarn
 
97
    variable instruction  : text_field;   -- instruction field
98
    variable par1         : integer;      -- paramiter 1
99
    variable par2         : integer;      -- paramiter 2
100
    variable par3         : integer;      -- paramiter 3
101
    variable par4         : integer;      -- paramiter 4
102
    variable par5         : integer;      -- paramiter 5
103
    variable par6         : integer;      -- paramiter 6
104
    variable txt          : stm_text_ptr;
105
    variable nbase        : base;         -- the number base to use
106
    variable len          : integer;      -- length of the instruction field
107
    variable file_line    : integer;      -- Line number in the stimulus file
108
    variable file_name    : text_line;    -- the file name the line came from
109
    variable v_line       : integer := 0; -- sequence number
110
    variable stack        : stack_register; -- Call stack
111
    variable stack_ptr    : integer  := 0;  -- call stack pointer
112
    variable wh_stack     : stack_register; -- while stack
113
    variable wh_dpth      : integer := 0;   -- while depth
114
    variable wh_ptr       : integer  := 0;  -- while pointer
115
    variable loop_num         : integer := 0;
116
    variable curr_loop_count  : int_array := (others => 0);
117
    variable term_loop_count  : int_array := (others => 0);
118
    variable loop_line        : int_array := (others => 0);
119
 
120
    variable messages     : boolean  := TRUE;
121
    variable if_state     : boolean  := FALSE;
122
    variable wh_state     : boolean  := FALSE;
123
    variable wh_end       : boolean  := FALSE;
124
    variable rand         : std_logic_vector(31 downto 0);
125
    variable rand_back    : std_logic_vector(31 downto 0);
126 10 sckoarn
    variable valid        : integer;
127 2 sckoarn
 
128 10 sckoarn
    --  scratchpad variables
129 2 sckoarn
    variable temp_int     : integer;
130
    variable temp_index   : integer;
131
    variable temp_str     : text_field;
132
    variable v_temp_vec1  : std_logic_vector(31 downto 0);
133
    variable v_temp_vec2  : std_logic_vector(31 downto 0);
134
 
135
    --------------------------------------------------------------------------
136
    --  Area for Procedures which may be usefull to more than one instruction.
137
    --    By coding here commonly used  code sections ...
138
    --    you know the benifits.
139
    ---------------------------------------------------------------------
140
    -----------------------------------------------------------------
141
    -- This procedure writes to the arbitor model access port
142
--    procedure arb_write(add: in integer; .....
143
--    end arb_write;
144
 
145
 
146
  begin  -- process Read_file
147
-- parse_tb1 start input initialization
148
    -----------------------------------------------------------------------
149
    --           Stimulus file instruction definition
150
    --  This is where the instructions used in the stimulus file are defined.
151
    --  Syntax is
152
    --     define_instruction(inst_def_ptr, instruction, paramiters)
153
    --           inst_def_ptr: is a record pointer defined in tb_pkg_header
154
    --           instruction:  the text instruction name  ie. "DEFINE_VAR"
155
    --           paramiters:   the number of fields or paramiters passed
156
    --
157
    --  Some basic instruction are created here, the user should create new
158
    --  instructions below the standard ones.
159
    ------------------------------------------------------------------------
160
    define_instruction(inst_list, "DEFINE_VAR", 2);  -- Define a Variable
161
    define_instruction(inst_list, "EQU_VAR", 2);
162
    define_instruction(inst_list, "ADD_VAR", 2);
163
    define_instruction(inst_list, "SUB_VAR", 2);
164
    define_instruction(inst_list, "CALL", 1);
165
    define_instruction(inst_list, "RETURN_CALL", 0);
166
    define_instruction(inst_list, "JUMP", 1);
167
    define_instruction(inst_list, "LOOP", 1);
168
    define_instruction(inst_list, "END_LOOP", 0);
169
    define_instruction(inst_list, "IF", 3);
170 10 sckoarn
    define_instruction(inst_list, "ELSEIF", 3);
171 2 sckoarn
    define_instruction(inst_list, "ELSE", 0);
172
    define_instruction(inst_list, "END_IF", 0);
173
    define_instruction(inst_list, "WHILE", 3);
174
    define_instruction(inst_list, "END_WHILE", 0);
175
    define_instruction(inst_list, "MESSAGES_OFF", 0);
176
    define_instruction(inst_list, "MESSAGES_ON", 0);
177
    define_instruction(inst_list, "ABORT", 0);       -- Error exit from sim
178
    define_instruction(inst_list, "FINISH", 0);      -- Normal exit from sim
179
    define_instruction(inst_list, "INCLUDE", 1);  -- Define a Variable
180
 
181
    --  User defined instructions
182
 
183
    ------------------------------------------------------------------------
184
    -- Read, test, and load the stimulus file
185 10 sckoarn
    read_instruction_file(stimulus_file, inst_list, defined_vars, inst_sequ,
186
                          file_list);
187 2 sckoarn
 
188 13 sckoarn
    -- initialize last info
189
    last_sequ_num  := 0;
190
    last_sequ_ptr  := inst_sequ;
191 2 sckoarn
------------------------------------------------------------------------
192
-- Using the Instruction record list, get the instruction and implement
193
-- it as per the statements in the elsif tree.
194
  while(v_line < inst_sequ.num_of_lines) loop
195
    v_line := v_line + 1;
196 10 sckoarn
    access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
197 13 sckoarn
         par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
198
         last_sequ_num, last_sequ_ptr);
199 2 sckoarn
 
200
--------------------------------------------------------------------------
201 10 sckoarn
    --if(instruction(1 to len) = "DEFINE_VAR") then
202
    --  null;  -- This instruction was implemented while reading the file
203 2 sckoarn
 
204
--------------------------------------------------------------------------
205 10 sckoarn
    if(instruction(1 to len) = "INCLUDE") then
206 2 sckoarn
      null;  -- This instruction was implemented while reading the file
207
 
208
--------------------------------------------------------------------------
209
    elsif(instruction(1 to len) = "ABORT") then
210
      assert (false)
211
        report "The test has aborted due to an error!!"
212
      severity failure;
213
 
214
--------------------------------------------------------------------------
215
    elsif(instruction(1 to len) = "FINISH") then
216
      assert (false)
217
        report "Test Finished with NO errors!!"
218
      severity failure;
219
 
220
--------------------------------------------------------------------------
221
    elsif(instruction(1 to len) = "EQU_VAR") then
222
      update_variable(defined_vars, par1, par2, valid);
223
 
224
--------------------------------------------------------------------------
225
    elsif(instruction(1 to len) = "ADD_VAR") then
226
      index_variable(defined_vars, par1, temp_int, valid);
227
      if(valid /= 0) then
228
        temp_int  :=  temp_int + par2;
229
        update_variable(defined_vars, par1, temp_int, valid);
230
      else
231
        assert (false)
232
          report "ADD_VAR Error: Not a valid Variable??"
233
        severity failure;
234
      end if;
235
 
236
--------------------------------------------------------------------------
237
    elsif(instruction(1 to len) = "SUB_VAR") then
238
      index_variable(defined_vars, par1, temp_int, valid);
239
      if(valid /= 0) then
240
        temp_int  :=  temp_int - par2;
241
        update_variable(defined_vars, par1, temp_int, valid);
242
      else
243
        assert (false)
244
          report "SUB_VAR Error: Not a valid Variable??"
245
        severity failure;
246
      end if;
247
 
248
--------------------------------------------------------------------------
249
    elsif(instruction(1 to len) = "CALL") then
250
      if(stack_ptr >= 7) then
251
        assert (false)
252
          report "Call Error: Stack over run, calls to deeply nested!!"
253
        severity failure;
254
      end if;
255
      stack(stack_ptr)  :=  v_line;
256
      stack_ptr  :=  stack_ptr + 1;
257
      v_line       :=  par1 - 1;
258
 
259
--------------------------------------------------------------------------
260
    elsif(instruction(1 to len) = "RETURN_CALL") then
261
      if(stack_ptr <= 0) then
262
        assert (false)
263
          report "Call Error: Stack under run??"
264
        severity failure;
265
      end if;
266
      stack_ptr  :=  stack_ptr - 1;
267
      v_line  :=  stack(stack_ptr);
268
 
269
--------------------------------------------------------------------------
270
    elsif(instruction(1 to len) = "JUMP") then
271
      v_line    :=  par1 - 1;
272
      wh_state  :=  false;
273
      wh_stack  := (others => 0);
274
      wh_dpth   := 0;
275
      wh_ptr    := 0;
276
      stack     := (others => 0);
277
      stack_ptr := 0;
278
 
279
--------------------------------------------------------------------------------
280
     elsif (instruction(1 to len) = "LOOP") then
281 13 sckoarn
    loop_num := loop_num + 1;
282 2 sckoarn
        loop_line(loop_num) := v_line;
283
        curr_loop_count(loop_num) := 0;
284
        term_loop_count(loop_num) := par1;
285 13 sckoarn
    assert (messages)
286 2 sckoarn
          report LF & "Executing LOOP Command" &
287
                 LF & "  Nested Loop:" & HT & integer'image(loop_num) &
288
                 LF & "  Loop Length:" & HT & integer'image(par1)
289
          severity note;
290
 
291
--------------------------------------------------------------------------------
292
     elsif (instruction(1 to len) = "END_LOOP") then
293
        curr_loop_count(loop_num) := curr_loop_count(loop_num) + 1;
294
        if (curr_loop_count(loop_num) = term_loop_count(loop_num)) then
295
          loop_num := loop_num - 1;
296
        else
297
          v_line := loop_line(loop_num);
298
        end if;
299
 
300
--------------------------------------------------------------------------------
301
     elsif (instruction(1 to len) = "IF") then
302
       if_state  :=  false;
303
       case par2 is
304
         when 0 => if(par1 = par3) then if_state  :=  true; end if;
305
         when 1 => if(par1 > par3) then if_state  :=  true; end if;
306
         when 2 => if(par1 < par3) then if_state  :=  true; end if;
307
         when 3 => if(par1 /= par3) then if_state :=  true; end if;
308
         when 4 => if(par1 >= par3) then if_state :=  true; end if;
309
         when 5 => if(par1 <= par3) then if_state :=  true; end if;
310
         when others =>
311
           assert (false)
312
             report LF & "ERROR:  IF instruction got an unexpected value" &
313
                 LF & "  in parameter 2!" & LF &
314
                  "Found on line " & (ew_to_str(file_line,dec)) & " in file " & file_name
315
             severity failure;
316
       end case;
317
 
318
       if(if_state = false) then
319
         v_line := v_line + 1;
320 10 sckoarn
         access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
321 13 sckoarn
            par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
322
            last_sequ_num, last_sequ_ptr);
323 2 sckoarn
         while(instruction(1 to len) /= "ELSE" and
324
               instruction(1 to len) /= "ELSEIF" and
325
               instruction(1 to len) /= "END_IF") loop
326
           if(v_line < inst_sequ.num_of_lines) then
327
             v_line := v_line + 1;
328 10 sckoarn
             access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
329 13 sckoarn
                 par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
330
                 last_sequ_num, last_sequ_ptr);
331 2 sckoarn
           else
332
             assert (false)
333
              report LF & "ERROR:  IF instruction unable to find terminating" &
334
                     LF & "    ELSE, ELSEIF or END_IF statement."
335
              severity failure;
336
           end if;
337
         end loop;
338
         v_line := v_line - 1;  -- re-align so it will be operated on.
339
       end if;
340
 
341
--------------------------------------------------------------------------------
342
     elsif (instruction(1 to len) = "ELSEIF") then
343
       if(if_state = true) then  -- if the if_state is true then skip to the end
344
         v_line := v_line + 1;
345 10 sckoarn
         access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
346 13 sckoarn
             par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
347
             last_sequ_num, last_sequ_ptr);
348 2 sckoarn
         while(instruction(1 to len) /= "END_IF") loop
349
           if(v_line < inst_sequ.num_of_lines) then
350
             v_line := v_line + 1;
351 10 sckoarn
             access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
352 13 sckoarn
                 par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
353
                 last_sequ_num, last_sequ_ptr);
354 2 sckoarn
           else
355
             assert (false)
356
              report LF & "ERROR:  IF instruction unable to find terminating" &
357
                     LF & "    ELSE, ELSEIF or END_IF statement."
358
              severity failure;
359
           end if;
360
         end loop;
361
         v_line := v_line - 1;  -- re-align so it will be operated on.
362
 
363
       else
364
         case par2 is
365
           when 0 => if(par1 = par3) then if_state  :=  true; end if;
366
           when 1 => if(par1 > par3) then if_state  :=  true; end if;
367
           when 2 => if(par1 < par3) then if_state  :=  true; end if;
368
           when 3 => if(par1 /= par3) then if_state :=  true; end if;
369
           when 4 => if(par1 >= par3) then if_state :=  true; end if;
370
           when 5 => if(par1 <= par3) then if_state :=  true; end if;
371
           when others =>
372
             assert (false)
373
               report LF & "ERROR:  ELSEIF instruction got an unexpected value" &
374
                   LF & "  in parameter 2!" & LF &
375
                    "Found on line " & (ew_to_str(file_line,dec)) & " in file " & file_name
376
               severity failure;
377
         end case;
378
 
379
         if(if_state = false) then
380
           v_line := v_line + 1;
381 10 sckoarn
           access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
382 13 sckoarn
               par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
383
               last_sequ_num, last_sequ_ptr);
384 2 sckoarn
           while(instruction(1 to len) /= "ELSE" and
385
                 instruction(1 to len) /= "ELSEIF" and
386
                 instruction(1 to len) /= "END_IF") loop
387
             if(v_line < inst_sequ.num_of_lines) then
388
               v_line := v_line + 1;
389 10 sckoarn
               access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
390 13 sckoarn
                   par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
391
                   last_sequ_num, last_sequ_ptr);
392 2 sckoarn
             else
393
               assert (false)
394
                report LF & "ERROR:  ELSEIF instruction unable to find terminating" &
395
                       LF & "    ELSE, ELSEIF or END_IF statement."
396
                severity failure;
397
             end if;
398
           end loop;
399
           v_line := v_line - 1;  -- re-align so it will be operated on.
400
         end if;
401
       end if;
402
 
403
--------------------------------------------------------------------------------
404
     elsif (instruction(1 to len) = "ELSE") then
405
       if(if_state = true) then  -- if the if_state is true then skip the else
406
         v_line := v_line + 1;
407 10 sckoarn
         access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
408 13 sckoarn
             par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
409
             last_sequ_num, last_sequ_ptr);
410 2 sckoarn
         while(instruction(1 to len) /= "END_IF") loop
411
           if(v_line < inst_sequ.num_of_lines) then
412
             v_line := v_line + 1;
413 10 sckoarn
             access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
414 13 sckoarn
                 par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
415
                 last_sequ_num, last_sequ_ptr);
416 2 sckoarn
           else
417
             assert (false)
418
              report LF & "ERROR:  IF instruction unable to find terminating" &
419
                     LF & "    ELSE, ELSEIF or END_IF statement."
420
              severity failure;
421
           end if;
422
         end loop;
423
         v_line := v_line - 1;  -- re-align so it will be operated on.
424
       end if;
425
 
426
--------------------------------------------------------------------------------
427
     elsif (instruction(1 to len) = "END_IF") then
428
       null;  -- instruction is a place holder for finding the end of IF.
429
 
430
--------------------------------------------------------------------------------
431
     elsif (instruction(1 to len) = "WHILE") then
432
       wh_state  :=  false;
433
       case par2 is
434 11 sckoarn
         when 0 => if(par1 =  par3) then wh_state :=  true; end if;
435
         when 1 => if(par1 >  par3) then wh_state :=  true; end if;
436
         when 2 => if(par1 <  par3) then wh_state :=  true; end if;
437
         when 3 => if(par1 /= par3) then wh_state :=  true; end if;
438
         when 4 => if(par1 >= par3) then wh_state :=  true; end if;
439
         when 5 => if(par1 <= par3) then wh_state :=  true; end if;
440 2 sckoarn
         when others =>
441
           assert (false)
442
             report LF & "ERROR:  WHILE instruction got an unexpected value" &
443
                 LF & "  in parameter 2!" & LF &
444
                  "Found on line " & (ew_to_str(file_line,dec)) & " in file " & file_name
445
             severity failure;
446
       end case;
447
 
448
       if(wh_state = true) then
449
         wh_stack(wh_ptr) :=  v_line;
450
         wh_ptr  := wh_ptr + 1;
451
       else
452
         wh_end := false;
453
         while(wh_end /= true) loop
454
           if(v_line < inst_sequ.num_of_lines) then
455
             v_line := v_line + 1;
456 10 sckoarn
             access_inst_sequ(inst_sequ, defined_vars, file_list, v_line, instruction,
457 13 sckoarn
                 par1, par2, par3, par4, par5, par6, txt, len, file_name, file_line,
458
                 last_sequ_num, last_sequ_ptr);
459 2 sckoarn
           else
460
             assert (false)
461
               report LF & "ERROR:  WHILE instruction unable to find terminating" &
462
                      LF & "    END_WHILE statement."
463
             severity failure;
464
           end if;
465
 
466
           -- if is a while need to escape it
467
           if(instruction(1 to len) = "WHILE") then
468
             wh_dpth := wh_dpth + 1;
469
           -- if is the end_while we are looking for
470
           elsif(instruction(1 to len) = "END_WHILE") then
471
             if(wh_dpth = 0) then
472
               wh_end := true;
473
             else
474
               wh_dpth := wh_dpth - 1;
475
             end if;
476
           end if;
477
         end loop;
478
       end if;
479
 
480
--------------------------------------------------------------------------------
481
     elsif (instruction(1 to len) = "END_WHILE") then
482
       if(wh_ptr > 0) then
483
         v_line  :=  wh_stack(wh_ptr - 1) - 1;
484
         wh_ptr  := wh_ptr - 1;
485
       end if;
486
 
487
--------------------------------------------------------------------------------
488
     elsif (instruction(1 to len) = "MESSAGES_OFF") then
489
       messages  := TRUE;
490
--------------------------------------------------------------------------------
491
     elsif (instruction(1 to len) = "MESSAGES_ON") then
492
       messages  := FALSE;
493
 
494
 
495
--------------------------------------------------------------------------------
496
--------------------------------------------------------------------------------
497
--  USER Istruction area.  Add all user instructions below this
498
--------------------------------------------------------------------------------
499
--------------------------------------------------------------------------------
500
--    elsif (instruction(1 to len) = "RESET_SYS") then
501
 
502
 
503
--------------------------------------------------------------------------------
504
--  USER Istruction area.  Add all user instructions above this
505
--------------------------------------------------------------------------------
506
    --------------------------------------------------------------------------
507
    -- catch those little mistakes
508
    else
509 10 sckoarn
      assert (false)
510
        report LF & "ERROR:  Seems the command  " & instruction(1 to len) & " was defined but" & LF &
511
                    "was not found in the elsif chain, please check spelling."
512 2 sckoarn
        severity failure;
513
    end if;  -- else if structure end
514 10 sckoarn
    -- after the instruction is finished print out any txt and sub vars
515
    txt_print_wvar(defined_vars, txt, hex);
516 2 sckoarn
  end loop;  -- Main Loop end
517
 
518
  assert (false)
519
    report LF & "The end of the simulation! It was not terminated as expected." & LF
520
  severity failure;
521
 
522
  end process Read_file;
523
 
524
 
525
end bhv;

powered by: WebSVN 2.1.0

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