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

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [basal/] [sim/] [src/] [fifo_agent_pkg.sv] - Blame information for rev 34

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 34 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
//// Copyright (C) 2015 Authors and OPENCORES.ORG                 ////
4
////                                                              ////
5
//// This source file may be used and distributed without         ////
6
//// restriction provided that this copyright statement is not    ////
7
//// removed from the file and that any derivative work contains  ////
8
//// the original copyright notice and the associated disclaimer. ////
9
////                                                              ////
10
//// This source file is free software; you can redistribute it   ////
11
//// and/or modify it under the terms of the GNU Lesser General   ////
12
//// Public License as published by the Free Software Foundation; ////
13
//// either version 2.1 of the License, or (at your option) any   ////
14
//// later version.                                               ////
15
////                                                              ////
16
//// This source is distributed in the hope that it will be       ////
17
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
18
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
19
//// PURPOSE.  See the GNU Lesser General Public License for more ////
20
//// details.                                                     ////
21
////                                                              ////
22
//// You should have received a copy of the GNU Lesser General    ////
23
//// Public License along with this source; if not, download it   ////
24
//// from http://www.opencores.org/lgpl.shtml                     ////
25
////                                                              ////
26
//////////////////////////////////////////////////////////////////////
27
 
28
 
29
package fifo_agent_pkg;
30
 
31
  // --------------------------------------------------------------------
32
  //
33
  import fifo_bfm_pkg::*;
34
 
35
  class fifo_agent_class #(W = 8);
36
 
37
    fifo_bfm_class source_fifo;
38
    fifo_bfm_class sink_fifo;
39
    fifo_transaction_class tr_h;
40
    fifo_transaction_class clone_h;
41
 
42
    //--------------------------------------------------------------------
43
    function
44
      new
45
      (
46
        virtual fifo_write_if #(.W(W)) source,
47
        virtual fifo_read_if  #(.W(W)) sink
48
      );
49
 
50
      this.source_fifo = new(.source(source));
51
      this.sink_fifo = new(.sink(sink));
52
      this.tr_h = new();
53
 
54
    endfunction: new
55
 
56
 
57
    // --------------------------------------------------------------------
58
    //
59
    function void init;
60
 
61
      source_fifo.init("source", SOURCE);
62
      sink_fifo.init("sink", SINK);
63
 
64
    endfunction: init
65
 
66
 
67
    // --------------------------------------------------------------------
68
    //
69
    task automatic
70
      start_q;
71
 
72
      source_fifo.fifo_write_q();
73
      sink_fifo.fifo_read_q();
74
 
75
    endtask: start_q
76
 
77
 
78
    // --------------------------------------------------------------------
79
    //
80
    task automatic
81
      queue_random;
82
 
83
        if (!tr_h.randomize())
84
        begin
85
          $display("^^^ %16.t | %m | ERROR! randomize error", $time);
86
          $stop;
87
        end
88
 
89
        clone_h = tr_h.clone();
90
        source_fifo.fifo_tr_q.put(clone_h);
91
        sink_fifo.fifo_tr_q.put(clone_h);
92
 
93
    endtask: queue_random
94
 
95
 
96
    // --------------------------------------------------------------------
97
    //
98
 
99
  endclass: fifo_agent_class
100
 
101
endpackage: fifo_agent_pkg
102
 

powered by: WebSVN 2.1.0

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