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

Subversion Repositories srdydrdy_lib

[/] [srdydrdy_lib/] [trunk/] [env/] [verilog/] [scoreboard/] [sb_bench.v] - Blame information for rev 18

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

Line No. Rev Author Line
1 18 ghutchis
`timescale 1ns/1ns
2
 
3
module sb_bench;
4
 
5
  localparam width = 32;
6
  localparam items = 32;
7
  localparam use_txid = 1;
8
  localparam use_mask = 1;
9
  localparam asz=$clog2(items);
10
  localparam txid_sz = asz;
11
 
12
  reg clk, reset;
13
  wire p_drdy = 1'b1;
14
 
15
  initial
16
    begin
17
      clk = 0;
18
      forever #5 clk = ~clk;
19
    end
20
 
21
  /*AUTOWIRE*/
22
  // Beginning of automatic wires (for undeclared instantiated-module outputs)
23
  wire [width-1:0]      c_data;                 // From driver of sb_driver.v
24
  wire                  c_drdy;                 // From sboard of sd_scoreboard.v
25
  wire [asz-1:0]        c_itemid;               // From driver of sb_driver.v
26
  wire [width-1:0]      c_mask;                 // From driver of sb_driver.v
27
  wire                  c_req_type;             // From driver of sb_driver.v
28
  wire                  c_srdy;                 // From driver of sb_driver.v
29
  wire [txid_sz-1:0]    c_txid;                 // From driver of sb_driver.v
30
  wire [width-1:0]      p_data;                 // From sboard of sd_scoreboard.v
31
  wire                  p_srdy;                 // From sboard of sd_scoreboard.v
32
  wire [txid_sz-1:0]    p_txid;                 // From sboard of sd_scoreboard.v
33
  // End of automatics
34
 
35
/* sb_driver AUTO_TEMPLATE
36
 (
37
 .p_\(.*\)   (c_\1[]),
38
 );
39
 */
40
  sb_driver #(/*AUTOINSTPARAM*/
41
              // Parameters
42
              .width                    (width),
43
              .items                    (items),
44
              .use_txid                 (use_txid),
45
              .use_mask                 (use_mask),
46
              .txid_sz                  (txid_sz),
47
              .asz                      (asz)) driver
48
    (/*AUTOINST*/
49
     // Outputs
50
     .p_srdy                            (c_srdy),                // Templated
51
     .p_req_type                        (c_req_type),            // Templated
52
     .p_txid                            (c_txid[txid_sz-1:0]),   // Templated
53
     .p_mask                            (c_mask[width-1:0]),     // Templated
54
     .p_itemid                          (c_itemid[asz-1:0]),     // Templated
55
     .p_data                            (c_data[width-1:0]),     // Templated
56
     // Inputs
57
     .clk                               (clk),
58
     .reset                             (reset),
59
     .p_drdy                            (c_drdy));                // Templated
60
 
61
/* sd_scoreboard AUTO_TEMPLATE
62
 (
63
 );
64
 */
65
  sd_scoreboard #(
66
                  // Parameters
67
                  .width                (width),
68
                  .items                (items),
69
                  .use_txid             (use_txid),
70
                  .use_mask             (use_mask),
71
                  .txid_sz              (txid_sz)) sboard
72
    (/*AUTOINST*/
73
     // Outputs
74
     .c_drdy                            (c_drdy),
75
     .p_srdy                            (p_srdy),
76
     .p_txid                            (p_txid[txid_sz-1:0]),
77
     .p_data                            (p_data[width-1:0]),
78
     // Inputs
79
     .clk                               (clk),
80
     .reset                             (reset),
81
     .c_srdy                            (c_srdy),
82
     .c_req_type                        (c_req_type),
83
     .c_txid                            (c_txid[txid_sz-1:0]),
84
     .c_mask                            (c_mask[width-1:0]),
85
     .c_data                            (c_data[width-1:0]),
86
     .c_itemid                          (c_itemid[asz-1:0]),
87
     .p_drdy                            (p_drdy));
88
 
89
  sb_monitor #(/*AUTOINSTPARAM*/
90
               // Parameters
91
               .width                   (width),
92
               .items                   (items),
93
               .use_txid                (use_txid),
94
               .use_mask                (use_mask),
95
               .txid_sz                 (txid_sz),
96
               .asz                     (asz)) monitor
97
    (/*AUTOINST*/
98
     // Outputs
99
     .p_drdy                            (p_drdy),
100
     // Inputs
101
     .clk                               (clk),
102
     .reset                             (reset),
103
     .c_srdy                            (c_srdy),
104
     .c_drdy                            (c_drdy),
105
     .c_req_type                        (c_req_type),
106
     .c_txid                            (c_txid[txid_sz-1:0]),
107
     .c_mask                            (c_mask[width-1:0]),
108
     .c_data                            (c_data[width-1:0]),
109
     .c_itemid                          (c_itemid[asz-1:0]),
110
     .p_srdy                            (p_srdy),
111
     .p_txid                            (p_txid[txid_sz-1:0]),
112
     .p_data                            (p_data[width-1:0]));
113
 
114
/* -----\/----- EXCLUDED -----\/-----
115
  task send;
116
    input req_type;
117
    input [txid_sz-1:0] txid;
118
    input [width-1:0]   mask;
119
    input [width-1:0]   data;
120
    input [asz-1:0]     itemid;
121
 -----/\----- EXCLUDED -----/\----- */
122
  integer               i, entry;
123
  integer               op;
124
 
125
  initial
126
    begin
127
`ifdef VCS
128
      $vcdpluson;
129
`else
130
      $dumpfile ("sb.lxt");
131
      $dumpvars;
132
`endif
133
      reset = 1;
134
      #200;
135
      reset = 0;
136
 
137
      repeat (5) @(posedge clk);
138
 
139
      // fill up scoreboard with random data
140
      for (i=0; i<items; i=i+1)
141
        begin
142
          driver.send (1, {width{1'b1}}, $random, i);
143
        end
144
 
145
      // request random entries from scoreboard
146
      for (i=0; i<64; i=i+1)
147
        begin
148
          entry = {$random} % items;
149
 
150
          driver.send (0, 0, 0, entry);
151
        end
152
 
153
      // mix updates with requests
154
      for (i=0; i<1024; i=i+1)
155
        begin
156
          entry = {$random} % items;
157
 
158
          op = {$random} % 8;
159
 
160
          if (op == 0)
161
            driver.send (1, {width{1'b1}}, $random, entry);
162
          else if (op == 1)
163
            driver.send (1, $random, $random, entry);
164
          else
165
            driver.send (0, 0, 0, entry);
166
        end
167
 
168
 
169
      #500;
170
      $finish;
171
    end
172
 
173
 
174
 
175
endmodule // sb_bench
176
// Local Variables:
177
// verilog-library-directories:("." "../../../rtl/verilog/utility")
178
// End:  
179
 

powered by: WebSVN 2.1.0

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