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 19

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
 
14
  initial
15
    begin
16
      clk = 0;
17
      forever #5 clk = ~clk;
18
    end
19
 
20
  /*AUTOWIRE*/
21
  // Beginning of automatic wires (for undeclared instantiated-module outputs)
22 19 ghutchis
  wire [width-1:0]       c_data;                 // From driver of sb_driver.v
23
  wire                  c_drdy;                 // From sboard of sd_scoreboard.v
24
  wire [asz-1:0] c_itemid;               // From driver of sb_driver.v
25
  wire [width-1:0]       c_mask;                 // From driver of sb_driver.v
26
  wire                  c_req_type;             // From driver of sb_driver.v
27
  wire                  c_srdy;                 // From driver of sb_driver.v
28
  wire [txid_sz-1:0]     c_txid;                 // From driver of sb_driver.v
29
  wire [width-1:0]       p_data;                 // From sboard of sd_scoreboard.v
30
  wire                  p_drdy;                 // From monitor of sb_monitor.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 18 ghutchis
  // End of automatics
34
 
35
/* sb_driver AUTO_TEMPLATE
36
 (
37
 .p_\(.*\)   (c_\1[]),
38
 );
39
 */
40
  sb_driver #(/*AUTOINSTPARAM*/
41 19 ghutchis
              // 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 18 ghutchis
    (/*AUTOINST*/
49
     // Outputs
50 19 ghutchis
     .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 18 ghutchis
     // Inputs
57 19 ghutchis
     .clk                               (clk),
58
     .reset                             (reset),
59
     .p_drdy                            (c_drdy));               // Templated
60 18 ghutchis
 
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 19 ghutchis
     .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 18 ghutchis
     // Inputs
79 19 ghutchis
     .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 18 ghutchis
 
89
  sb_monitor #(/*AUTOINSTPARAM*/
90 19 ghutchis
               // 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 18 ghutchis
    (/*AUTOINST*/
98
     // Outputs
99 19 ghutchis
     .p_drdy                            (p_drdy),
100 18 ghutchis
     // Inputs
101 19 ghutchis
     .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 18 ghutchis
 
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 19 ghutchis
      for (i=0; i<4096; i=i+1)
155 18 ghutchis
        begin
156 19 ghutchis
          // choose random entry but space requests apart
157
          //entry = {$random} % items;
158
          case (i%2)
159
 
160
            1 : entry = {$random} % (items/2) + items/2;
161
            //2 : entry = {$random} % (items/4) + 2*(items/4);
162
            //3 : entry = {$random} % (items/4) + 3*(items/4);
163
          endcase
164 18 ghutchis
 
165
          op = {$random} % 8;
166
 
167 19 ghutchis
          case (i)
168
            512  : monitor.drdy_pat = 8'h55;
169
            1024 : monitor.drdy_pat = 8'h0F;
170
            1500 : monitor.drdy_pat = 8'h82;
171
            2000 : monitor.drdy_pat = 8'hFE;
172
          endcase
173
 
174 18 ghutchis
          if (op == 0)
175
            driver.send (1, {width{1'b1}}, $random, entry);
176
          else if (op == 1)
177 19 ghutchis
            driver.send (1, 32'h0000FFFF, $random, entry);
178
          else if (op == 2)
179 18 ghutchis
            driver.send (1, $random, $random, entry);
180
          else
181
            driver.send (0, 0, 0, entry);
182
        end
183
 
184
 
185
      #500;
186
      $finish;
187
    end
188
 
189
 
190
 
191
endmodule // sb_bench
192
// Local Variables:
193
// verilog-library-directories:("." "../../../rtl/verilog/utility")
194
// End:  
195
 

powered by: WebSVN 2.1.0

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