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

Subversion Repositories usb_fpga_2_14

[/] [usb_fpga_2_14/] [trunk/] [examples/] [memfifo/] [fpga-2.04b/] [ipcore_dir/] [mem0/] [user_design/] [sim/] [v6_data_gen.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
//*****************************************************************************
2
// (c) Copyright 2008-2009 Xilinx, Inc. All rights reserved.
3
//
4
// This file contains confidential and proprietary information
5
// of Xilinx, Inc. and is protected under U.S. and
6
// international copyright and other intellectual property
7
// laws.
8
//
9
// DISCLAIMER
10
// This disclaimer is not a license and does not grant any
11
// rights to the materials distributed herewith. Except as
12
// otherwise provided in a valid license issued to you by
13
// Xilinx, and to the maximum extent permitted by applicable
14
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
15
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
16
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
17
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
18
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
19
// (2) Xilinx shall not be liable (whether in contract or tort,
20
// including negligence, or under any other theory of
21
// liability) for any loss or damage of any kind or nature
22
// related to, arising under or in connection with these
23
// materials, including for any direct, or any indirect,
24
// special, incidental, or consequential loss or damage
25
// (including loss of data, profits, goodwill, or any type of
26
// loss or damage suffered as a result of any action brought
27
// by a third party) even if such damage or loss was
28
// reasonably foreseeable or Xilinx had been advised of the
29
// possibility of the same.
30
//
31
// CRITICAL APPLICATIONS
32
// Xilinx products are not designed or intended to be fail-
33
// safe, or for use in any application requiring fail-safe
34
// performance, such as life-support or safety devices or
35
// systems, Class III medical devices, nuclear facilities,
36
// applications related to the deployment of airbags, or any
37
// other applications that could lead to death, personal
38
// injury, or severe property or environmental damage
39
// (individually and collectively, "Critical
40
// Applications"). Customer assumes the sole risk and
41
// liability of any use of Xilinx products in Critical
42
// Applications, subject only to applicable laws and
43
// regulations governing limitations on product liability.
44
//
45
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
46
// PART OF THIS FILE AT ALL TIMES.
47
//
48
//*****************************************************************************
49
//   ____  ____
50
//  /   /\/   /
51
// /___/  \  /    Vendor: Xilinx
52
// \   \   \/     Version: %version
53
//  \   \         Application: MIG
54
//  /   /         Filename: data_gen.v
55
// /___/   /\     Date Last Modified: 
56
// \   \  /  \    Date Created: 
57
//  \___\/\___\
58
//
59
//Device: Virtex6
60
//Design Name: DDR2/DDR3/QDDR 
61
//Purpose: This module generates different data pattern as described in 
62
//         parameter DATA_PATTERN and is set up for Virtex 6 family.
63
//Reference:            
64
//Revision History:  18/7/2011  Fixed DGEN_NEIGHBOR in generate statement .
65
//*****************************************************************************
66
 
67
`timescale 1ps/1ps
68
`ifndef TCQ
69
 `define TCQ 100
70
`endif
71
 
72
module v6_data_gen #
73
 
74
(  parameter TCQ        = 100,
75
   parameter EYE_TEST   = "FALSE",
76
   parameter ADDR_WIDTH = 32,
77
   parameter MEM_BURST_LEN = 8,
78
   parameter BL_WIDTH = 6,
79
   parameter DWIDTH = 32,
80
   parameter DATA_PATTERN = "DGEN_ALL", //"DGEN__HAMMER", "DGEN_WALING1","DGEN_WALING0","DGEN_ADDR","DGEN_NEIGHBOR","DGEN_PRBS","DGEN_ALL"  
81
   parameter NUM_DQ_PINS   = 8,
82
   parameter COLUMN_WIDTH = 10,
83
   parameter SEL_VICTIM_LINE = 3  // VICTIM LINE is one of the DQ pins is selected to be different than hammer pattern
84
//   parameter [287:0] ALL_1 = {288{1'b1}},
85
//   parameter [287:0] ALL_0 = {288{1'b0}}
86
 
87
 
88
 )
89
 (
90
   input   clk_i,                 //
91
   input   rst_i,
92
   input [31:0] prbs_fseed_i,
93
 
94
   input [3:0]  data_mode_i,   // "00" = bram; 
95
   input        data_rdy_i,
96
   input   cmd_startA,
97
   input   cmd_startB,
98
   input   cmd_startC,
99
   input   cmd_startD,
100
   input   cmd_startE,
101
 
102
   input [ADDR_WIDTH-1:0]  m_addr_i,          // generated address used to determine data pattern.
103
   input [DWIDTH-1:0]     fixed_data_i,
104
 
105
   input [ADDR_WIDTH-1:0]  addr_i,          // generated address used to determine data pattern.
106
   input [6:0]    user_burst_cnt,   // generated burst length for control the burst data
107
 
108
   input   fifo_rdy_i,           // connect from mcb_wr_full when used as wr_data_gen
109
                                 // connect from mcb_rd_empty when used as rd_data_gen
110
                                 // When both data_rdy and data_valid is asserted, the ouput data is valid.
111
   output  [NUM_DQ_PINS*4-1:0] data_o   // generated data pattern   
112
);
113
// 
114
wire [31:0]       prbs_data;
115
reg [35:0] acounts;
116
 
117
wire [NUM_DQ_PINS*4-1:0]        adata;
118
reg [NUM_DQ_PINS*4-1:0]        hdata;
119
reg [NUM_DQ_PINS*4-1:0]        hdata_c;
120
 
121
reg [NUM_DQ_PINS*4-1:0]        ndata;
122
reg [NUM_DQ_PINS*4-1:0]  w1data;
123
reg [NUM_DQ_PINS*4-1:0]  w1trash;
124
 
125
reg [NUM_DQ_PINS*4-1:0]        w0data;
126
reg [NUM_DQ_PINS*4-1:0] data;
127
 
128
 
129
reg burst_count_reached2;
130
 
131
reg               data_valid;
132
reg [2:0] walk_cnt;
133
reg [ADDR_WIDTH-1:0] user_address;
134
reg sel_w1gen_logic;
135
wire [4*NUM_DQ_PINS -1 :0] ZEROS;
136
wire [4*NUM_DQ_PINS -1 :0] ONES;
137
reg [7:0] BLANK;
138
 
139
reg [7:0] SHIFT_0;
140
reg [7:0] SHIFT_1;
141
reg [7:0] SHIFT_2;
142
reg [7:0] SHIFT_3;
143
reg [7:0] SHIFT_4;
144
reg [7:0] SHIFT_5;
145
reg [7:0] SHIFT_6;
146
reg [7:0] SHIFT_7;
147
reg [4*NUM_DQ_PINS -1 :0] sel_victimline_r;
148
wire data_clk_en;
149
wire [NUM_DQ_PINS*4-1:0] full_prbs_data;
150
reg [NUM_DQ_PINS*4-1:0] h_prbsdata;
151
//wire [4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] ALL_1 = 
152
 
153
assign ZEROS = 'b0;
154
assign ONES = 'b1;
155
 
156
 
157
integer i,j,k;
158
reg [BL_WIDTH-1:0] user_bl;
159
 
160
 
161
//*********************************************************************************************
162
localparam BRAM_DATAL_MODE       =    4'b0000;
163
localparam FIXED_DATA_MODE       =    4'b0001;
164
localparam ADDR_DATA_MODE        =    4'b0010;
165
localparam HAMMER_DATA_MODE      =    4'b0011;
166
localparam NEIGHBOR_DATA_MODE    =    4'b0100;
167
localparam WALKING1_DATA_MODE    =    4'b0101;
168
localparam WALKING0_DATA_MODE    =    4'b0110;
169
localparam PRBS_DATA_MODE        =    4'b0111;
170
 
171
assign data_o = data;
172
 
173
//assign full_prbs_data = {prbs_data,prbs_data,prbs_data,prbs_data,prbs_data,prbs_data,prbs_data,prbs_data,prbs_data};
174
assign full_prbs_data = {DWIDTH/32{prbs_data}};
175
 
176
reg [3:0] data_mode_rr_a;
177
reg [3:0] data_mode_rr_b;
178
reg [3:0] data_mode_rr_c;
179
 
180
always @ (posedge clk_i)
181
begin
182
  data_mode_rr_a <= #TCQ data_mode_i;
183
  data_mode_rr_b <= #TCQ data_mode_i;
184
  data_mode_rr_c <= #TCQ data_mode_i;
185
 
186
end
187
 
188
 
189
always @ (data_mode_i,rst_i) begin
190
  if (data_mode_i == 3'b101 || data_mode_i == 3'b100  || rst_i) begin // WALKING ONE
191
    BLANK   = 8'h00;
192
    SHIFT_0 = 8'h01;
193
    SHIFT_1 = 8'h02;
194
    SHIFT_2 = 8'h04;
195
    SHIFT_3 = 8'h08;
196
    SHIFT_4 = 8'h10;
197
    SHIFT_5 = 8'h20;
198
    SHIFT_6 = 8'h40;
199
    SHIFT_7 = 8'h80;
200
 
201
    end
202
    else  begin  // WALKING ZERO
203
    BLANK   = 8'hff;
204
    SHIFT_0 = 8'hfe;
205
    SHIFT_1 = 8'hfd;
206
    SHIFT_2 = 8'hfb;
207
    SHIFT_3 = 8'hf7;
208
    SHIFT_4 = 8'hef;
209
    SHIFT_5 = 8'hdf;
210
    SHIFT_6 = 8'hbf;
211
    SHIFT_7 = 8'h7f;
212
    end
213
 
214
end
215
 
216
 
217
always @ (data_mode_rr_a,fixed_data_i,h_prbsdata,adata,hdata,ndata,w1data,full_prbs_data)
218
begin
219
   case(data_mode_rr_a)
220
         4'b0000: data = h_prbsdata;
221
         4'b0001: data = fixed_data_i;   //  "000" = address as data    
222
         4'b0010: data = adata;   //  "000" = address as data 
223
         4'b0011: data = hdata;   //  "001" = hammer
224
         4'b0100: data = ndata;   //  "010" = neighbour
225
         4'b0101: data = w1data;    //  "100" = walking 0's 
226
         4'b0110: data = w1data;  // /"101" = walking 1's
227
         4'b0111: data = full_prbs_data;//{prbs_data,prbs_data,prbs_data,prbs_data};   //  "011" = prbs         
228
         default : data = 'b0;
229
   endcase
230
end
231
//always @ (data_mode_rr_a,fixed_data_i,h_prbsdata,adata,hdata,ndata,w1data,full_prbs_data)
232
//begin
233
//
234
// data = w1data;
235
//end
236
function [4*NUM_DQ_PINS-1:0] Data_Gen (input integer i );
237
 integer j;
238
  begin
239
    j = i/2;
240
    Data_Gen = {4*NUM_DQ_PINS{1'b0}};
241
        if(i %2) begin
242
             Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b00010000;
243
             Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b00100000;
244
             Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b01000000;
245
             Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b10000000;
246
 
247
        end else begin
248
            Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b00000001;
249
            Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b00000010;
250
            Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b00000100;
251
            Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b00001000;
252
 
253
        end
254
 
255
 
256
  end
257
endfunction
258
 
259
 
260
/*
261
 
262
 
263
function [4*NUM_DQ_PINS-1:0] Data_Gen (input integer i,
264
                                       input [3:0] data_mode);
265
 integer j;
266
  begin
267
    j = i/2;
268
    Data_Gen = {4*NUM_DQ_PINS{1'b0}};
269
      if(data_mode == 4'b0101) begin // Walking 1 pattern
270
        if(i %2) begin
271
             Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b00010000;
272
             Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b00100000;
273
             Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b01000000;
274
             Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b10000000;
275
        end else begin
276
            Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b00000001;
277
            Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b00000010;
278
            Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b00000100;
279
            Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b00001000;
280
        end
281
      end else begin // Walking 0 pattern
282
        if(i %2) begin
283
             Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b11101111;
284
             Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b11011111;
285
             Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b10111111;
286
             Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b01111111;
287
        end else begin
288
            Data_Gen[(0*NUM_DQ_PINS+j*8)+:8] = 8'b11111110;
289
            Data_Gen[(1*NUM_DQ_PINS+j*8)+:8] = 8'b11111101;
290
            Data_Gen[(2*NUM_DQ_PINS+j*8)+:8] = 8'b11111011;
291
            Data_Gen[(3*NUM_DQ_PINS+j*8)+:8] = 8'b11110111;
292
        end
293
      end
294
   end
295
endfunction
296
*/
297
function [4*NUM_DQ_PINS-1:0] Data_GenW0 (input integer i);
298
 integer j;
299
  begin
300
    j = i/2;
301
    Data_GenW0 = {4*NUM_DQ_PINS{1'b1}};
302
 
303
        if(i %2) begin
304
             Data_GenW0[(0*NUM_DQ_PINS+j*8)+:8] = 8'b11101111;
305
             Data_GenW0[(1*NUM_DQ_PINS+j*8)+:8] = 8'b11011111;
306
             Data_GenW0[(2*NUM_DQ_PINS+j*8)+:8] = 8'b10111111;
307
             Data_GenW0[(3*NUM_DQ_PINS+j*8)+:8] = 8'b01111111;
308
 
309
        end else begin
310
            Data_GenW0[(0*NUM_DQ_PINS+j*8)+:8] = 8'b11111110;
311
            Data_GenW0[(1*NUM_DQ_PINS+j*8)+:8] = 8'b11111101;
312
            Data_GenW0[(2*NUM_DQ_PINS+j*8)+:8] = 8'b11111011;
313
            Data_GenW0[(3*NUM_DQ_PINS+j*8)+:8] = 8'b11110111;
314
 
315
        end
316
 
317
 
318
  end
319
endfunction
320
always @ (posedge clk_i) begin
321
 if (data_mode_rr_c[2:0] == 3'b101  || data_mode_rr_c[2:0] == 3'b100 || data_mode_rr_c[2:0] == 3'b110)   // WALKING ONES
322
     sel_w1gen_logic <= #TCQ 1'b1;
323
 else
324
     sel_w1gen_logic <= #TCQ 1'b0;
325
end
326
 
327
// WALKING ONES, WALKING ZEROS; HAMMER GENERATION
328
generate
329
if (NUM_DQ_PINS == 8 && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0"  || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_8_PATTERN
330
 
331
always @ (posedge clk_i)
332
begin
333
if( (fifo_rdy_i ) || cmd_startC )
334
 
335
 
336
 if (cmd_startC )
337
    begin
338
    if (sel_w1gen_logic) begin  // 1b WALKING ONES
339
 
340
 //******************  (NUM_DQ_PINS == 8)
341
 
342
            // first 8 pins
343
             case (addr_i[3])
344
 
345
                 0: begin
346
                    if (data_mode_i == 4'b0101)
347
                    w1data <= #TCQ Data_Gen(0);
348
                    else
349
                    w1data <= #TCQ Data_GenW0(0);
350
 
351
                    end
352
                 1:  begin
353
                    if (data_mode_i == 4'b0101)
354
                    w1data <= #TCQ Data_Gen(1);
355
                    else
356
                    w1data <= #TCQ Data_GenW0(1);
357
                    end
358
                 default :begin
359
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
360
                    end
361
 
362
             endcase
363
 
364
     end //  1b data_mode WALKING ONE
365
 
366
   end // 1c 
367
   else if( MEM_BURST_LEN == 8)  begin
368
 
369
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
370
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
371
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
372
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
373
 
374
 
375
               end
376
 
377
  end  // always
378
end //  endgenerate
379
endgenerate  // NUM_DQ_PINS == 8
380
 
381
 
382
 
383
generate
384
if (NUM_DQ_PINS == 16 && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_16_PATTERN
385
 
386
always @ (posedge clk_i)
387
begin
388
if( (fifo_rdy_i ) || cmd_startC )
389
 
390
 
391
 if (cmd_startC )
392
    begin
393
    if (sel_w1gen_logic) begin  // 1a  WALKING ONES
394
             case (addr_i[4:3])
395
 
396
                 0: begin // 8 pins
397
 
398
                    if (data_mode_i == 4'b0101)
399
                    w1data <= #TCQ Data_Gen(0);
400
                    else
401
                    w1data <= #TCQ Data_GenW0(0);
402
 
403
 
404
                    end
405
                 1:  begin
406
                    if (data_mode_i == 4'b0101)
407
                    w1data <= #TCQ Data_Gen(1);
408
                    else
409
                    w1data <= #TCQ Data_GenW0(1);
410
 
411
 
412
                    end
413
                  2: begin // 16 pins 
414
                    if (data_mode_i == 4'b0101)
415
                    w1data <= #TCQ Data_Gen(2);
416
                    else
417
                    w1data <= #TCQ Data_GenW0(2);
418
 
419
 
420
                    end
421
 
422
                 3:  begin
423
                    if (data_mode_i == 4'b0101)
424
                    w1data <= #TCQ Data_Gen(3);
425
                    else
426
                    w1data <= #TCQ Data_GenW0(3);
427
 
428
 
429
                    end
430
 
431
 
432
                   default :begin
433
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
434
                    end
435
 
436
             endcase
437
 
438
     end // 1a data_mode WALKING ONE
439
 
440
   end // 1b StartC   
441
   else if( MEM_BURST_LEN == 8) begin
442
 
443
 
444
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
445
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
446
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
447
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
448
 
449
 
450
 
451
               end
452
 
453
  end
454
end   //1d
455
endgenerate // NUM_DQ_PINS == 16
456
 
457
 
458
 
459
 
460
 
461
  generate
462
    if ((NUM_DQ_PINS == 24 ) && (DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_NEIGHBOR"
463
                                || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_24_PATTERN
464
      always @ (posedge clk_i) begin
465
 
466
 
467
        if( (fifo_rdy_i ) || cmd_startC )
468
          if (cmd_startC ) begin
469
            if (sel_w1gen_logic) begin
470
               case (addr_i[7:3])
471
 
472
 
473
                 0, 6, 12,
474
                 18, 24, 30 :
475
                              if (data_mode_i == 4'b0101)
476
                                  w1data <= #TCQ Data_Gen(0);
477
                              else
478
                                  w1data <= #TCQ Data_GenW0(0);
479
 
480
                 1, 7, 13,
481
                 19, 25, 31 :
482
                              if (data_mode_i == 4'b0101)
483
                                  w1data <= #TCQ Data_Gen(1);
484
                              else
485
                                  w1data <= #TCQ Data_GenW0(1);
486
 
487
                 2,8,14,20,26         :
488
 
489
                              if (data_mode_i == 4'b0101)
490
                                  w1data <= #TCQ Data_Gen(2);
491
                              else
492
                                  w1data <= #TCQ Data_GenW0(2);
493
 
494
 
495
 
496
                 3,9,15,21,27         :
497
                                 if (data_mode_i == 4'b0101)
498
                                  w1data <= #TCQ Data_Gen(3);
499
                                 else
500
                                  w1data <=#TCQ  Data_GenW0(3);
501
 
502
                4, 10,
503
                16, 22, 28 :
504
                           if (data_mode_i == 4'b0101)
505
                               w1data <= #TCQ  Data_Gen(4);
506
                           else
507
                               w1data <= #TCQ Data_GenW0(4);
508
                 5, 11,
509
                 17, 23, 29 :
510
                              if (data_mode_i == 4'b0101)
511
                                  w1data <= #TCQ Data_Gen(5);
512
                              else
513
                                  w1data <= #TCQ Data_GenW0(5);
514
 
515
                 default :
516
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
517
 
518
            endcase
519
       end
520
     end
521
   else if ( MEM_BURST_LEN == 8)  begin
522
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
523
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
524
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
525
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
526
        end
527
      end
528
    end
529
  endgenerate
530
 
531
  generate
532
    if (NUM_DQ_PINS == 32 && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_32_PATTERN
533
      always @ (posedge clk_i) begin
534
         if( (fifo_rdy_i ) || cmd_startC )
535
           if (cmd_startC ) begin
536
             if (sel_w1gen_logic) begin
537
               case (addr_i[6:4])
538
                 0:
539
                              if (data_mode_i == 4'b0101)
540
                                  w1data <= #TCQ Data_Gen(0);
541
                              else
542
                                  w1data <= #TCQ Data_GenW0(0);
543
 
544
                 1:
545
                              if (data_mode_i == 4'b0101)
546
                                  w1data <= #TCQ Data_Gen(1);
547
                              else
548
                                  w1data <= #TCQ Data_GenW0(1);
549
 
550
                 2:
551
                              if (data_mode_i == 4'b0101)
552
                                  w1data <= #TCQ Data_Gen(2);
553
                              else
554
                                  w1data <= #TCQ Data_GenW0(2);
555
 
556
                 3:
557
                              if (data_mode_i == 4'b0101)
558
                                  w1data <= #TCQ Data_Gen(3);
559
                              else
560
                                  w1data <= #TCQ Data_GenW0(3);
561
 
562
                 4:
563
                              if (data_mode_i == 4'b0101)
564
                                  w1data <= #TCQ Data_Gen(4);
565
                              else
566
                                  w1data <= #TCQ Data_GenW0(4);
567
 
568
                 5:
569
                              if (data_mode_i == 4'b0101)
570
                                  w1data <= #TCQ Data_Gen(5);
571
                              else
572
                                  w1data <= #TCQ Data_GenW0(5);
573
 
574
                 6:
575
                              if (data_mode_i == 4'b0101)
576
                                  w1data <= #TCQ Data_Gen(6);
577
                              else
578
                                  w1data <= #TCQ Data_GenW0(6);
579
 
580
                 7:
581
                              if (data_mode_i == 4'b0101)
582
                                  w1data <= #TCQ Data_Gen(7);
583
                              else
584
                                  w1data <= #TCQ Data_GenW0(7);
585
 
586
           endcase
587
       end
588
     end
589
   else if ( MEM_BURST_LEN == 8)  begin
590
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
591
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
592
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
593
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
594
        end
595
      end
596
    end
597
  endgenerate
598
 
599
 
600
  generate
601
    if ((NUM_DQ_PINS == 40 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_40_PATTERN
602
      always @ (posedge clk_i) begin
603
 
604
 
605
        if( (fifo_rdy_i ) || cmd_startC )
606
          if (cmd_startC ) begin
607
            if (sel_w1gen_logic) begin
608
               case (addr_i[7:4])
609
 
610
                 0, 10:
611
                              if (data_mode_i == 4'b0101)
612
                                  w1data <= #TCQ Data_Gen(0);
613
                              else
614
                                  w1data <= #TCQ Data_GenW0(0);
615
 
616
                 1, 11:
617
                              if (data_mode_i == 4'b0101)
618
                                  w1data <= #TCQ Data_Gen(1);
619
                              else
620
                                  w1data <= #TCQ Data_GenW0(1);
621
 
622
                 2, 12:
623
                              if (data_mode_i == 4'b0101)
624
                                  w1data <= #TCQ Data_Gen(2);
625
                              else
626
                                  w1data <= #TCQ Data_GenW0(2);
627
 
628
                 3, 13:
629
                              if (data_mode_i == 4'b0101)
630
                                  w1data <= #TCQ Data_Gen(3);
631
                              else
632
                                  w1data <= #TCQ Data_GenW0(3);
633
 
634
                 4, 14:
635
                              if (data_mode_i == 4'b0101)
636
                                  w1data <= #TCQ Data_Gen(4);
637
                              else
638
                                  w1data <= #TCQ Data_GenW0(4);
639
 
640
                 5, 15:
641
                              if (data_mode_i == 4'b0101)
642
                                  w1data <= #TCQ Data_Gen(5);
643
                              else
644
                                  w1data <= #TCQ Data_GenW0(5);
645
 
646
                 6:
647
                              if (data_mode_i == 4'b0101)
648
                                  w1data <= #TCQ Data_Gen(6);
649
                              else
650
                                  w1data <= #TCQ Data_GenW0(6);
651
 
652
                 7:
653
                              if (data_mode_i == 4'b0101)
654
                                  w1data <= #TCQ Data_Gen(7);
655
                              else
656
                                  w1data <= #TCQ Data_GenW0(7);
657
 
658
                 8:
659
                              if (data_mode_i == 4'b0101)
660
                                  w1data <= #TCQ Data_Gen(8);
661
                              else
662
                                  w1data <= #TCQ Data_GenW0(8);
663
 
664
                 9:
665
                              if (data_mode_i == 4'b0101)
666
                                  w1data <= #TCQ Data_Gen(9);
667
                              else
668
                                  w1data <= #TCQ Data_GenW0(9);
669
                 default :
670
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
671
 
672
            endcase
673
       end
674
     end
675
   else if ( MEM_BURST_LEN == 8)  begin
676
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
677
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
678
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
679
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
680
        end
681
      end
682
    end
683
  endgenerate
684
 
685
  generate
686
    if ((NUM_DQ_PINS == 48 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_48_PATTERN
687
      always @ (posedge clk_i) begin
688
 
689
 
690
        if( (fifo_rdy_i ) || cmd_startC )
691
          if (cmd_startC ) begin
692
            if (sel_w1gen_logic) begin
693
               case (addr_i[7:4])
694
 
695
                 0, 12:
696
                              if (data_mode_i == 4'b0101)
697
                                  w1data <= #TCQ Data_Gen(0);
698
                              else
699
                                  w1data <= #TCQ Data_GenW0(0);
700
 
701
                 1, 13:
702
                              if (data_mode_i == 4'b0101)
703
                                  w1data <= #TCQ Data_Gen(1);
704
                              else
705
                                  w1data <= #TCQ Data_GenW0(1);
706
 
707
                 2, 14:
708
                              if (data_mode_i == 4'b0101)
709
                                  w1data <= #TCQ Data_Gen(2);
710
                              else
711
                                  w1data <= #TCQ Data_GenW0(2);
712
 
713
                 3, 15:
714
                              if (data_mode_i == 4'b0101)
715
                                  w1data <= #TCQ Data_Gen(3);
716
                              else
717
                                  w1data <= #TCQ Data_GenW0(3);
718
 
719
                 4:
720
                              if (data_mode_i == 4'b0101)
721
                                  w1data <= #TCQ Data_Gen(4);
722
                              else
723
                                  w1data <= #TCQ Data_GenW0(4);
724
 
725
                 5:
726
                              if (data_mode_i == 4'b0101)
727
                                  w1data <= #TCQ Data_Gen(5);
728
                              else
729
                                  w1data <= #TCQ Data_GenW0(5);
730
 
731
                 6:
732
                              if (data_mode_i == 4'b0101)
733
                                  w1data <= #TCQ Data_Gen(6);
734
                              else
735
                                  w1data <= #TCQ Data_GenW0(6);
736
 
737
                 7:
738
                              if (data_mode_i == 4'b0101)
739
                                  w1data <= #TCQ Data_Gen(7);
740
                              else
741
                                  w1data <= #TCQ Data_GenW0(7);
742
 
743
                 8:
744
                              if (data_mode_i == 4'b0101)
745
                                  w1data <= #TCQ Data_Gen(8);
746
                              else
747
                                  w1data <= #TCQ Data_GenW0(8);
748
 
749
                 9:
750
                              if (data_mode_i == 4'b0101)
751
                                  w1data <= #TCQ Data_Gen(9);
752
                              else
753
                                  w1data <= #TCQ Data_GenW0(9);
754
 
755
                 10:
756
                              if (data_mode_i == 4'b0101)
757
                                  w1data <= #TCQ Data_Gen(10);
758
                              else
759
                                  w1data <= #TCQ Data_GenW0(10);
760
 
761
                 11:
762
                              if (data_mode_i == 4'b0101)
763
                                  w1data <= #TCQ Data_Gen(11);
764
                              else
765
                                  w1data <= #TCQ Data_GenW0(11);
766
 
767
 
768
                 default :
769
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
770
 
771
 
772
            endcase
773
       end
774
     end
775
   else if ( MEM_BURST_LEN == 8)  begin
776
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
777
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
778
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
779
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
780
        end
781
      end
782
    end
783
  endgenerate
784
 
785
 
786
  generate
787
    if ((NUM_DQ_PINS == 56 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_56_PATTERN
788
      always @ (posedge clk_i) begin
789
 
790
 
791
        if( (fifo_rdy_i ) || cmd_startC )
792
          if (cmd_startC ) begin
793
            if (sel_w1gen_logic) begin
794
               case (addr_i[8:5])
795
                 0, 14:
796
                              if (data_mode_i == 4'b0101)
797
                                  w1data <= #TCQ Data_Gen(0);
798
                              else
799
                                  w1data <= #TCQ Data_GenW0(0);
800
 
801
 
802
                 1, 15:
803
                              if (data_mode_i == 4'b0101)
804
                                  w1data <= #TCQ Data_Gen(1);
805
                              else
806
                                  w1data <= #TCQ Data_GenW0(1);
807
 
808
 
809
                 2:
810
                              if (data_mode_i == 4'b0101)
811
                                  w1data <= #TCQ Data_Gen(2);
812
                              else
813
                                  w1data <= #TCQ Data_GenW0(2);
814
 
815
 
816
                 3:
817
                              if (data_mode_i == 4'b0101)
818
                                  w1data <= #TCQ Data_Gen(3);
819
                              else
820
                                  w1data <= #TCQ Data_GenW0(3);
821
 
822
 
823
                 4:
824
                              if (data_mode_i == 4'b0101)
825
                                  w1data <= #TCQ Data_Gen(4);
826
                              else
827
                                  w1data <= #TCQ Data_GenW0(4);
828
 
829
 
830
                 5:
831
                              if (data_mode_i == 4'b0101)
832
                                  w1data <= #TCQ Data_Gen(5);
833
                              else
834
                                  w1data <= #TCQ Data_GenW0(5);
835
 
836
 
837
                 6:
838
                              if (data_mode_i == 4'b0101)
839
                                  w1data <= #TCQ Data_Gen(6);
840
                              else
841
                                  w1data <= #TCQ Data_GenW0(6);
842
 
843
 
844
                 7:
845
                              if (data_mode_i == 4'b0101)
846
                                  w1data <= #TCQ Data_Gen(7);
847
                              else
848
                                  w1data <= #TCQ Data_GenW0(7);
849
 
850
 
851
                 8:
852
                              if (data_mode_i == 4'b0101)
853
                                  w1data <= #TCQ Data_Gen(8);
854
                              else
855
                                  w1data <= #TCQ Data_GenW0(8);
856
 
857
 
858
                 9:
859
                              if (data_mode_i == 4'b0101)
860
                                  w1data <= #TCQ Data_Gen(9);
861
                              else
862
                                  w1data <= #TCQ Data_GenW0(9);
863
 
864
 
865
                 10:
866
                              if (data_mode_i == 4'b0101)
867
                                  w1data <= #TCQ Data_Gen(10);
868
                              else
869
                                  w1data <= #TCQ Data_GenW0(10);
870
 
871
 
872
                 11:
873
                              if (data_mode_i == 4'b0101)
874
                                  w1data <= #TCQ Data_Gen(11);
875
                              else
876
                                  w1data <= #TCQ Data_GenW0(11);
877
 
878
 
879
                 12:
880
                              if (data_mode_i == 4'b0101)
881
                                  w1data <= #TCQ Data_Gen(12);
882
                              else
883
                                  w1data <= #TCQ Data_GenW0(12);
884
 
885
 
886
                 13:
887
                              if (data_mode_i == 4'b0101)
888
                                  w1data <= #TCQ Data_Gen(13);
889
                              else
890
                                  w1data <= #TCQ Data_GenW0(13);
891
                 default :
892
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
893
 
894
            endcase
895
       end
896
     end
897
   else if ( MEM_BURST_LEN == 8)  begin
898
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
899
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
900
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
901
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
902
        end
903
      end
904
    end
905
  endgenerate
906
 
907
  generate
908
    if ((NUM_DQ_PINS == 64 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_64_PATTERN
909
      always @ (posedge clk_i) begin
910
 
911
 
912
        if( (fifo_rdy_i ) || cmd_startC )
913
          if (cmd_startC ) begin
914
             if (sel_w1gen_logic) begin
915
               case (addr_i[8:5])
916
 
917
                 0:
918
                              if (data_mode_i == 4'b0101)
919
                                  w1data <= #TCQ Data_Gen(0);
920
                              else
921
                                  w1data <= #TCQ Data_GenW0(0);
922
 
923
                 1:
924
                              if (data_mode_i == 4'b0101)
925
                                  w1data <= #TCQ Data_Gen(1);
926
                              else
927
                                  w1data <= #TCQ Data_GenW0(1);
928
 
929
                 2:
930
                              if (data_mode_i == 4'b0101)
931
                                  w1data <= #TCQ Data_Gen(2);
932
                              else
933
                                  w1data <= #TCQ Data_GenW0(2);
934
 
935
                 3:
936
                              if (data_mode_i == 4'b0101)
937
                                  w1data <= #TCQ Data_Gen(3);
938
                              else
939
                                  w1data <= #TCQ Data_GenW0(3);
940
 
941
                 4:
942
                              if (data_mode_i == 4'b0101)
943
                                  w1data <= #TCQ Data_Gen(4);
944
                              else
945
                                  w1data <= #TCQ Data_GenW0(4);
946
 
947
                 5:
948
                              if (data_mode_i == 4'b0101)
949
                                  w1data <= #TCQ Data_Gen(5);
950
                              else
951
                                  w1data <= #TCQ Data_GenW0(5);
952
 
953
                 6:
954
                              if (data_mode_i == 4'b0101)
955
                                  w1data <= #TCQ Data_Gen(6);
956
                              else
957
                                  w1data <= #TCQ Data_GenW0(6);
958
 
959
                 7:
960
                              if (data_mode_i == 4'b0101)
961
                                  w1data <= #TCQ Data_Gen(7);
962
                              else
963
                                  w1data <= #TCQ Data_GenW0(7);
964
 
965
                 8:
966
                              if (data_mode_i == 4'b0101)
967
                                  w1data <= #TCQ Data_Gen(8);
968
                              else
969
                                  w1data <= #TCQ Data_GenW0(8);
970
 
971
                 9:
972
                              if (data_mode_i == 4'b0101)
973
                                  w1data <= #TCQ Data_Gen(9);
974
                              else
975
                                  w1data <= #TCQ Data_GenW0(9);
976
 
977
                 10:
978
                              if (data_mode_i == 4'b0101)
979
                                  w1data <= #TCQ Data_Gen(10);
980
                              else
981
                                  w1data <= #TCQ Data_GenW0(10);
982
 
983
                 11:
984
                              if (data_mode_i == 4'b0101)
985
                                  w1data <= #TCQ Data_Gen(11);
986
                              else
987
                                  w1data <= #TCQ Data_GenW0(11);
988
 
989
                 12:
990
                              if (data_mode_i == 4'b0101)
991
                                  w1data <= #TCQ Data_Gen(12);
992
                              else
993
                                  w1data <= #TCQ Data_GenW0(12);
994
 
995
                 13:
996
                              if (data_mode_i == 4'b0101)
997
                                  w1data <= #TCQ Data_Gen(13);
998
                              else
999
                                  w1data <= #TCQ Data_GenW0(13);
1000
 
1001
                 14:
1002
                              if (data_mode_i == 4'b0101)
1003
                                  w1data <= #TCQ Data_Gen(14);
1004
                              else
1005
                                  w1data <= #TCQ Data_GenW0(14);
1006
 
1007
                 15:
1008
                              if (data_mode_i == 4'b0101)
1009
                                  w1data <= #TCQ Data_Gen(15);
1010
                              else
1011
                                  w1data <= #TCQ Data_GenW0(15);
1012
 
1013
                 default :
1014
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1015
 
1016
            endcase
1017
       end
1018
     end
1019
   else if ( MEM_BURST_LEN == 8)  begin
1020
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1021
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1022
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1023
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1024
        end
1025
      end
1026
    end
1027
  endgenerate
1028
 
1029
  generate
1030
    if ((NUM_DQ_PINS == 72 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_72_PATTERN
1031
      always @ (posedge clk_i) begin
1032
 
1033
 
1034
        if( (fifo_rdy_i ) || cmd_startC )
1035
          if (cmd_startC ) begin
1036
            if (sel_w1gen_logic) begin
1037
              case (addr_i[9:5])
1038
 
1039
                 0, 18:
1040
                              if (data_mode_i == 4'b0101)
1041
                                  w1data <= #TCQ Data_Gen(0);
1042
                              else
1043
                                  w1data <= #TCQ Data_GenW0(0);
1044
 
1045
                 1, 19:
1046
                              if (data_mode_i == 4'b0101)
1047
                                  w1data <= #TCQ Data_Gen(1);
1048
                              else
1049
                                  w1data <= #TCQ Data_GenW0(1);
1050
 
1051
                 2, 20:
1052
                              if (data_mode_i == 4'b0101)
1053
                                  w1data <= #TCQ Data_Gen(2);
1054
                              else
1055
                                  w1data <= #TCQ Data_GenW0(2);
1056
 
1057
                 3, 21:
1058
                              if (data_mode_i == 4'b0101)
1059
                                  w1data <= #TCQ Data_Gen(3);
1060
                              else
1061
                                  w1data <= #TCQ Data_GenW0(3);
1062
 
1063
                 4, 22:
1064
                              if (data_mode_i == 4'b0101)
1065
                                  w1data <= #TCQ Data_Gen(4);
1066
                              else
1067
                                  w1data <= #TCQ Data_GenW0(4);
1068
 
1069
                 5, 23:
1070
                              if (data_mode_i == 4'b0101)
1071
                                  w1data <= #TCQ Data_Gen(5);
1072
                              else
1073
                                  w1data <= #TCQ Data_GenW0(5);
1074
 
1075
                 6, 24:
1076
                              if (data_mode_i == 4'b0101)
1077
                                  w1data <= #TCQ Data_Gen(6);
1078
                              else
1079
                                  w1data <= #TCQ Data_GenW0(6);
1080
 
1081
                 7, 25:
1082
                              if (data_mode_i == 4'b0101)
1083
                                  w1data <= #TCQ Data_Gen(7);
1084
                              else
1085
                                  w1data <= #TCQ Data_GenW0(7);
1086
 
1087
                8, 26:
1088
                              if (data_mode_i == 4'b0101)
1089
                                  w1data <= #TCQ Data_Gen(8);
1090
                              else
1091
                                  w1data <= #TCQ Data_GenW0(8);
1092
 
1093
                 9, 27:
1094
                              if (data_mode_i == 4'b0101)
1095
                                  w1data <= #TCQ Data_Gen(9);
1096
                              else
1097
                                  w1data <= #TCQ Data_GenW0(9);
1098
 
1099
                 10, 28:
1100
                              if (data_mode_i == 4'b0101)
1101
                                  w1data <= #TCQ Data_Gen(10);
1102
                              else
1103
                                  w1data <= #TCQ Data_GenW0(10);
1104
 
1105
                 11, 29:
1106
                              if (data_mode_i == 4'b0101)
1107
                                  w1data <= #TCQ Data_Gen(11);
1108
                              else
1109
                                  w1data <= #TCQ Data_GenW0(11);
1110
 
1111
                 12, 30:
1112
                              if (data_mode_i == 4'b0101)
1113
                                  w1data <= #TCQ Data_Gen(12);
1114
                              else
1115
                                  w1data <= #TCQ Data_GenW0(12);
1116
 
1117
                 13, 31:
1118
                              if (data_mode_i == 4'b0101)
1119
                                  w1data <= #TCQ Data_Gen(13);
1120
                              else
1121
                                  w1data <= #TCQ Data_GenW0(13);
1122
 
1123
                 14:
1124
                              if (data_mode_i == 4'b0101)
1125
                                  w1data <= #TCQ Data_Gen(14);
1126
                              else
1127
                                  w1data <= #TCQ Data_GenW0(14);
1128
 
1129
                 15:
1130
                              if (data_mode_i == 4'b0101)
1131
                                  w1data <= #TCQ Data_Gen(15);
1132
                              else
1133
                                  w1data <= #TCQ Data_GenW0(15);
1134
 
1135
                 16:
1136
                              if (data_mode_i == 4'b0101)
1137
                                  w1data <= #TCQ Data_Gen(16);
1138
                              else
1139
                                  w1data <= #TCQ Data_GenW0(16);
1140
 
1141
                 17:
1142
                              if (data_mode_i == 4'b0101)
1143
                                  w1data <= #TCQ Data_Gen(17);
1144
                              else
1145
                                  w1data <= #TCQ Data_GenW0(17);
1146
                 default :
1147
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1148
 
1149
            endcase
1150
       end
1151
     end
1152
   else if ( MEM_BURST_LEN == 8)  begin
1153
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1154
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1155
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1156
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1157
        end
1158
      end
1159
    end
1160
  endgenerate
1161
 
1162
  generate
1163
    if ((NUM_DQ_PINS == 80 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_80_PATTERN
1164
      always @ (posedge clk_i) begin
1165
 
1166
 
1167
        if( (fifo_rdy_i ) || cmd_startC )
1168
          if (cmd_startC ) begin
1169
            if (sel_w1gen_logic) begin
1170
              case (addr_i[9:5])
1171
                 0, 20:
1172
                              if (data_mode_i == 4'b0101)
1173
                                  w1data <= #TCQ Data_Gen(0);
1174
                              else
1175
                                  w1data <= #TCQ Data_GenW0(0);
1176
 
1177
                 1, 21:
1178
                              if (data_mode_i == 4'b0101)
1179
                                  w1data <= #TCQ Data_Gen(1);
1180
                              else
1181
                                  w1data <= #TCQ Data_GenW0(1);
1182
 
1183
                 2, 22:
1184
                              if (data_mode_i == 4'b0101)
1185
                                  w1data <= #TCQ Data_Gen(2);
1186
                              else
1187
                                  w1data <= #TCQ Data_GenW0(2);
1188
 
1189
                 3, 23:
1190
                              if (data_mode_i == 4'b0101)
1191
                                  w1data <= #TCQ Data_Gen(3);
1192
                              else
1193
                                  w1data <= #TCQ Data_GenW0(3);
1194
 
1195
                 4, 24:
1196
                              if (data_mode_i == 4'b0101)
1197
                                  w1data <= #TCQ Data_Gen(4);
1198
                              else
1199
                                  w1data <= #TCQ Data_GenW0(4);
1200
 
1201
                 5, 25:
1202
                              if (data_mode_i == 4'b0101)
1203
                                  w1data <= #TCQ Data_Gen(5);
1204
                              else
1205
                                  w1data <= #TCQ Data_GenW0(5);
1206
 
1207
                 6, 26:
1208
                              if (data_mode_i == 4'b0101)
1209
                                  w1data <= #TCQ Data_Gen(6);
1210
                              else
1211
                                  w1data <= #TCQ Data_GenW0(6);
1212
 
1213
                 7, 27:
1214
                              if (data_mode_i == 4'b0101)
1215
                                  w1data <= #TCQ Data_Gen(7);
1216
                              else
1217
                                  w1data <= #TCQ Data_GenW0(7);
1218
 
1219
                 8, 28:
1220
                              if (data_mode_i == 4'b0101)
1221
                                  w1data <= #TCQ Data_Gen(8);
1222
                              else
1223
                                  w1data <= #TCQ Data_GenW0(8);
1224
 
1225
                 9, 29:
1226
                              if (data_mode_i == 4'b0101)
1227
                                  w1data <= #TCQ Data_Gen(9);
1228
                              else
1229
                                  w1data <= #TCQ Data_GenW0(9);
1230
 
1231
                 10, 30:
1232
                              if (data_mode_i == 4'b0101)
1233
                                  w1data <= #TCQ Data_Gen(10);
1234
                              else
1235
                                  w1data <= #TCQ Data_GenW0(10);
1236
 
1237
                 11, 31:
1238
                              if (data_mode_i == 4'b0101)
1239
                                  w1data <= #TCQ Data_Gen(11);
1240
                              else
1241
                                  w1data <= #TCQ Data_GenW0(11);
1242
 
1243
                 12:
1244
                              if (data_mode_i == 4'b0101)
1245
                                  w1data <= #TCQ Data_Gen(12);
1246
                              else
1247
                                  w1data <= #TCQ Data_GenW0(12);
1248
 
1249
                 13:
1250
                              if (data_mode_i == 4'b0101)
1251
                                  w1data <= #TCQ Data_Gen(13);
1252
                              else
1253
                                  w1data <= #TCQ Data_GenW0(13);
1254
 
1255
                 14:
1256
                              if (data_mode_i == 4'b0101)
1257
                                  w1data <= #TCQ Data_Gen(14);
1258
                              else
1259
                                  w1data <= #TCQ Data_GenW0(14);
1260
 
1261
                 15:
1262
                              if (data_mode_i == 4'b0101)
1263
                                  w1data <= #TCQ Data_Gen(15);
1264
                              else
1265
                                  w1data <= #TCQ Data_GenW0(15);
1266
 
1267
                 16:
1268
                              if (data_mode_i == 4'b0101)
1269
                                  w1data <= #TCQ Data_Gen(16);
1270
                              else
1271
                                  w1data <= #TCQ Data_GenW0(16);
1272
 
1273
                 17:
1274
                              if (data_mode_i == 4'b0101)
1275
                                  w1data <= #TCQ Data_Gen(17);
1276
                              else
1277
                                  w1data <= #TCQ Data_GenW0(17);
1278
 
1279
                  18:
1280
                              if (data_mode_i == 4'b0101)
1281
                                  w1data <= #TCQ Data_Gen(18);
1282
                              else
1283
                                  w1data <= #TCQ Data_GenW0(18);
1284
 
1285
                 19:
1286
                              if (data_mode_i == 4'b0101)
1287
                                  w1data <= #TCQ Data_Gen(19);
1288
                              else
1289
                                  w1data <= #TCQ Data_GenW0(19);
1290
                 default :
1291
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1292
 
1293
            endcase
1294
       end
1295
     end
1296
   else if ( MEM_BURST_LEN == 8)  begin
1297
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1298
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1299
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1300
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1301
        end
1302
      end
1303
    end
1304
  endgenerate
1305
 
1306
 
1307
  generate
1308
    if ((NUM_DQ_PINS == 88 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_88_PATTERN
1309
      always @ (posedge clk_i) begin
1310
 
1311
 
1312
        if( (fifo_rdy_i ) || cmd_startC )
1313
          if (cmd_startC ) begin
1314
            if (sel_w1gen_logic) begin
1315
              case (addr_i[9:5])
1316
 
1317
                 0, 22:
1318
                              if (data_mode_i == 4'b0101)
1319
                                  w1data <= #TCQ Data_Gen(0);
1320
                              else
1321
                                  w1data <= #TCQ Data_GenW0(0);
1322
 
1323
                 1, 23:
1324
                              if (data_mode_i == 4'b0101)
1325
                                  w1data <= #TCQ Data_Gen(1);
1326
                              else
1327
                                  w1data <= #TCQ Data_GenW0(1);
1328
 
1329
                 2, 24:
1330
                              if (data_mode_i == 4'b0101)
1331
                                  w1data <= #TCQ Data_Gen(2);
1332
                              else
1333
                                  w1data <= #TCQ Data_GenW0(2);
1334
 
1335
                 3, 25:
1336
                              if (data_mode_i == 4'b0101)
1337
                                  w1data <= #TCQ Data_Gen(3);
1338
                              else
1339
                                  w1data <= #TCQ Data_GenW0(3);
1340
 
1341
                 4, 26:
1342
                              if (data_mode_i == 4'b0101)
1343
                                  w1data <= #TCQ Data_Gen(4);
1344
                              else
1345
                                  w1data <= #TCQ Data_GenW0(4);
1346
 
1347
                 5, 27:
1348
                              if (data_mode_i == 4'b0101)
1349
                                  w1data <= #TCQ Data_Gen(5);
1350
                              else
1351
                                  w1data <= #TCQ Data_GenW0(5);
1352
 
1353
                 6, 28:
1354
                              if (data_mode_i == 4'b0101)
1355
                                  w1data <= #TCQ Data_Gen(6);
1356
                              else
1357
                                  w1data <= #TCQ Data_GenW0(6);
1358
 
1359
                 7, 29:
1360
                              if (data_mode_i == 4'b0101)
1361
                                  w1data <= #TCQ Data_Gen(7);
1362
                              else
1363
                                  w1data <= #TCQ Data_GenW0(7);
1364
 
1365
                 8, 30:
1366
                              if (data_mode_i == 4'b0101)
1367
                                  w1data <= #TCQ Data_Gen(8);
1368
                              else
1369
                                  w1data <= #TCQ Data_GenW0(8);
1370
 
1371
                 9, 31:
1372
                              if (data_mode_i == 4'b0101)
1373
                                  w1data <= #TCQ Data_Gen(9);
1374
                              else
1375
                                  w1data <= #TCQ Data_GenW0(9);
1376
 
1377
                 10:
1378
                              if (data_mode_i == 4'b0101)
1379
                                  w1data <= #TCQ Data_Gen(10);
1380
                              else
1381
                                  w1data <= #TCQ Data_GenW0(10);
1382
 
1383
                 11:
1384
                              if (data_mode_i == 4'b0101)
1385
                                  w1data <= #TCQ Data_Gen(11);
1386
                              else
1387
                                  w1data <= #TCQ Data_GenW0(11);
1388
 
1389
                 12:
1390
                              if (data_mode_i == 4'b0101)
1391
                                  w1data <= #TCQ Data_Gen(12);
1392
                              else
1393
                                  w1data <= #TCQ Data_GenW0(12);
1394
 
1395
                 13:
1396
                              if (data_mode_i == 4'b0101)
1397
                                  w1data <= #TCQ Data_Gen(13);
1398
                              else
1399
                                  w1data <= #TCQ Data_GenW0(13);
1400
 
1401
                 14:
1402
                              if (data_mode_i == 4'b0101)
1403
                                  w1data <= #TCQ Data_Gen(14);
1404
                              else
1405
                                  w1data <= #TCQ Data_GenW0(14);
1406
 
1407
                 15:
1408
                              if (data_mode_i == 4'b0101)
1409
                                  w1data <= #TCQ Data_Gen(15);
1410
                              else
1411
                                  w1data <= #TCQ Data_GenW0(15);
1412
 
1413
                 16:
1414
                              if (data_mode_i == 4'b0101)
1415
                                  w1data <= #TCQ Data_Gen(16);
1416
                              else
1417
                                  w1data <= #TCQ Data_GenW0(16);
1418
 
1419
                 17:
1420
                              if (data_mode_i == 4'b0101)
1421
                                  w1data <= #TCQ Data_Gen(17);
1422
                              else
1423
                                  w1data <= #TCQ Data_GenW0(17);
1424
 
1425
                 18:
1426
                              if (data_mode_i == 4'b0101)
1427
                                  w1data <= #TCQ Data_Gen(18);
1428
                              else
1429
                                  w1data <= #TCQ Data_GenW0(18);
1430
 
1431
                 19:
1432
                              if (data_mode_i == 4'b0101)
1433
                                  w1data <= #TCQ Data_Gen(19);
1434
                              else
1435
                                  w1data <= #TCQ Data_GenW0(19);
1436
 
1437
                 20:
1438
                              if (data_mode_i == 4'b0101)
1439
                                  w1data <= #TCQ Data_Gen(20);
1440
                              else
1441
                                  w1data <= #TCQ Data_GenW0(20);
1442
 
1443
                 21:
1444
                              if (data_mode_i == 4'b0101)
1445
                                  w1data <= #TCQ Data_Gen(21);
1446
                              else
1447
                                  w1data <= #TCQ Data_GenW0(21);
1448
                 default :
1449
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1450
 
1451
            endcase
1452
       end
1453
     end
1454
   else if ( MEM_BURST_LEN == 8)  begin
1455
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1456
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1457
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1458
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1459
        end
1460
      end
1461
    end
1462
  endgenerate
1463
 
1464
  generate
1465
    if ((NUM_DQ_PINS == 96 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_96_PATTERN
1466
      always @ (posedge clk_i) begin
1467
 
1468
 
1469
        if( (fifo_rdy_i ) || cmd_startC )
1470
          if (cmd_startC ) begin
1471
            if (sel_w1gen_logic) begin
1472
               case (addr_i[9:5])
1473
 
1474
                 0, 24:
1475
                              if (data_mode_i == 4'b0101)
1476
                                  w1data <= #TCQ Data_Gen(0);
1477
                              else
1478
                                  w1data <= #TCQ Data_GenW0(0);
1479
 
1480
                 1, 25:
1481
                              if (data_mode_i == 4'b0101)
1482
                                  w1data <= #TCQ Data_Gen(1);
1483
                              else
1484
                                  w1data <= #TCQ Data_GenW0(1);
1485
 
1486
                  2, 26:
1487
                              if (data_mode_i == 4'b0101)
1488
                                  w1data <= #TCQ Data_Gen(2);
1489
                              else
1490
                                  w1data <= #TCQ Data_GenW0(2);
1491
 
1492
                 3, 27:
1493
                              if (data_mode_i == 4'b0101)
1494
                                  w1data <= #TCQ Data_Gen(3);
1495
                              else
1496
                                  w1data <= #TCQ Data_GenW0(3);
1497
 
1498
                 4, 28:
1499
                              if (data_mode_i == 4'b0101)
1500
                                  w1data <= #TCQ Data_Gen(4);
1501
                              else
1502
                                  w1data <= #TCQ Data_GenW0(4);
1503
 
1504
                 5, 29:
1505
                              if (data_mode_i == 4'b0101)
1506
                                  w1data <= #TCQ Data_Gen(5);
1507
                              else
1508
                                  w1data <= #TCQ Data_GenW0(5);
1509
 
1510
                 6, 30:
1511
                              if (data_mode_i == 4'b0101)
1512
                                  w1data <= #TCQ Data_Gen(6);
1513
                              else
1514
                                  w1data <= #TCQ Data_GenW0(6);
1515
 
1516
                 7, 31:
1517
                              if (data_mode_i == 4'b0101)
1518
                                  w1data <= #TCQ Data_Gen(7);
1519
                              else
1520
                                  w1data <= #TCQ Data_GenW0(7);
1521
 
1522
                 8:
1523
                              if (data_mode_i == 4'b0101)
1524
                                  w1data <= #TCQ Data_Gen(8);
1525
                              else
1526
                                  w1data <= #TCQ Data_GenW0(8);
1527
 
1528
                 9:
1529
                              if (data_mode_i == 4'b0101)
1530
                                  w1data <= #TCQ Data_Gen(9);
1531
                              else
1532
                                  w1data <= #TCQ Data_GenW0(9);
1533
 
1534
                 10:
1535
                              if (data_mode_i == 4'b0101)
1536
                                  w1data <= #TCQ Data_Gen(10);
1537
                              else
1538
                                  w1data <= #TCQ Data_GenW0(10);
1539
 
1540
                 11:
1541
                              if (data_mode_i == 4'b0101)
1542
                                  w1data <= #TCQ Data_Gen(11);
1543
                              else
1544
                                  w1data <= #TCQ Data_GenW0(11);
1545
 
1546
                 12:
1547
                              if (data_mode_i == 4'b0101)
1548
                                  w1data <= #TCQ Data_Gen(12);
1549
                              else
1550
                                  w1data <= #TCQ Data_GenW0(12);
1551
 
1552
                 13:
1553
                              if (data_mode_i == 4'b0101)
1554
                                  w1data <= #TCQ Data_Gen(13);
1555
                              else
1556
                                  w1data <= #TCQ Data_GenW0(13);
1557
 
1558
                 14:
1559
                              if (data_mode_i == 4'b0101)
1560
                                  w1data <= #TCQ Data_Gen(14);
1561
                              else
1562
                                  w1data <= #TCQ Data_GenW0(14);
1563
 
1564
                 15:
1565
                              if (data_mode_i == 4'b0101)
1566
                                  w1data <= #TCQ Data_Gen(15);
1567
                              else
1568
                                  w1data <= #TCQ Data_GenW0(15);
1569
 
1570
                 16:
1571
                              if (data_mode_i == 4'b0101)
1572
                                  w1data <= #TCQ Data_Gen(16);
1573
                              else
1574
                                  w1data <= #TCQ Data_GenW0(16);
1575
 
1576
                 17:
1577
                              if (data_mode_i == 4'b0101)
1578
                                  w1data <= #TCQ Data_Gen(17);
1579
                              else
1580
                                  w1data <= #TCQ Data_GenW0(17);
1581
 
1582
                 18:
1583
                              if (data_mode_i == 4'b0101)
1584
                                  w1data <= #TCQ Data_Gen(18);
1585
                              else
1586
                                  w1data <= #TCQ Data_GenW0(18);
1587
 
1588
                 19:
1589
                              if (data_mode_i == 4'b0101)
1590
                                  w1data <= #TCQ Data_Gen(19);
1591
                              else
1592
                                  w1data <= #TCQ Data_GenW0(19);
1593
 
1594
                 20:
1595
                              if (data_mode_i == 4'b0101)
1596
                                  w1data <= #TCQ Data_Gen(20);
1597
                              else
1598
                                  w1data <= #TCQ Data_GenW0(20);
1599
 
1600
                 21:
1601
                              if (data_mode_i == 4'b0101)
1602
                                  w1data <= #TCQ Data_Gen(21);
1603
                              else
1604
                                  w1data <= #TCQ Data_GenW0(21);
1605
 
1606
                 22:
1607
                              if (data_mode_i == 4'b0101)
1608
                                  w1data <= #TCQ Data_Gen(22);
1609
                              else
1610
                                  w1data <= #TCQ Data_GenW0(22);
1611
 
1612
                 23:
1613
                              if (data_mode_i == 4'b0101)
1614
                                  w1data <= #TCQ Data_Gen(23);
1615
                              else
1616
                                  w1data <= #TCQ Data_GenW0(23);
1617
                 default :
1618
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1619
 
1620
            endcase
1621
       end
1622
     end
1623
   else if ( MEM_BURST_LEN == 8)  begin
1624
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1625
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1626
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1627
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1628
        end
1629
      end
1630
    end
1631
  endgenerate
1632
 
1633
  generate
1634
    if ((NUM_DQ_PINS == 104 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_104_PATTERN
1635
      always @ (posedge clk_i) begin
1636
 
1637
 
1638
        if( (fifo_rdy_i ) || cmd_startC )
1639
          if (cmd_startC ) begin
1640
            if (sel_w1gen_logic) begin
1641
               case (addr_i[9:5])
1642
                 0, 26:
1643
                              if (data_mode_i == 4'b0101)
1644
                                  w1data <= #TCQ Data_Gen(0);
1645
                              else
1646
                                  w1data <= #TCQ Data_GenW0(0);
1647
 
1648
                 1, 27:
1649
                              if (data_mode_i == 4'b0101)
1650
                                  w1data <= #TCQ Data_Gen(1);
1651
                              else
1652
                                  w1data <= #TCQ Data_GenW0(1);
1653
 
1654
                  2, 28:
1655
                              if (data_mode_i == 4'b0101)
1656
                                  w1data <= #TCQ Data_Gen(2);
1657
                              else
1658
                                  w1data <= #TCQ Data_GenW0(2);
1659
 
1660
                 3, 29:
1661
                              if (data_mode_i == 4'b0101)
1662
                                  w1data <= #TCQ Data_Gen(3);
1663
                              else
1664
                                  w1data <= #TCQ Data_GenW0(3);
1665
 
1666
                 4, 30:
1667
                              if (data_mode_i == 4'b0101)
1668
                                  w1data <= #TCQ Data_Gen(4);
1669
                              else
1670
                                  w1data <= #TCQ Data_GenW0(4);
1671
 
1672
                 5, 31:
1673
                              if (data_mode_i == 4'b0101)
1674
                                  w1data <= #TCQ Data_Gen(5);
1675
                              else
1676
                                  w1data <= #TCQ Data_GenW0(5);
1677
                 6 :
1678
                              if (data_mode_i == 4'b0101)
1679
                                  w1data <= #TCQ Data_Gen(6);
1680
                              else
1681
                                  w1data <= #TCQ Data_GenW0(6);
1682
 
1683
                 7:
1684
                              if (data_mode_i == 4'b0101)
1685
                                  w1data <= #TCQ Data_Gen(7);
1686
                              else
1687
                                  w1data <= #TCQ Data_GenW0(7);
1688
 
1689
                  8:
1690
                               if (data_mode_i == 4'b0101)
1691
                                   w1data <= #TCQ Data_Gen(8);
1692
                               else
1693
                                   w1data <= #TCQ Data_GenW0(8);
1694
 
1695
                  9:
1696
                               if (data_mode_i == 4'b0101)
1697
                                   w1data <= #TCQ Data_Gen(9);
1698
                               else
1699
                                   w1data <= #TCQ Data_GenW0(9);
1700
 
1701
                  10:
1702
                               if (data_mode_i == 4'b0101)
1703
                                   w1data <= #TCQ Data_Gen(10);
1704
                               else
1705
                                   w1data <= #TCQ Data_GenW0(10);
1706
 
1707
                  11:
1708
                               if (data_mode_i == 4'b0101)
1709
                                   w1data <= #TCQ Data_Gen(11);
1710
                               else
1711
                                   w1data <= #TCQ Data_GenW0(11);
1712
 
1713
                  12:
1714
                               if (data_mode_i == 4'b0101)
1715
                                   w1data <= #TCQ Data_Gen(12);
1716
                               else
1717
                                   w1data <= #TCQ Data_GenW0(12);
1718
 
1719
                  13:
1720
                               if (data_mode_i == 4'b0101)
1721
                                   w1data <= #TCQ Data_Gen(13);
1722
                               else
1723
                                   w1data <= #TCQ Data_GenW0(13);
1724
 
1725
                  14:
1726
                               if (data_mode_i == 4'b0101)
1727
                                   w1data <= #TCQ Data_Gen(14);
1728
                               else
1729
                                   w1data <= #TCQ Data_GenW0(14);
1730
 
1731
                  15:
1732
                                  if (data_mode_i == 4'b0101)
1733
                                      w1data <= #TCQ Data_Gen(15);
1734
                                  else
1735
                                      w1data <= #TCQ Data_GenW0(15);
1736
 
1737
                    16:
1738
                                 if (data_mode_i == 4'b0101)
1739
                                     w1data <= #TCQ Data_Gen(16);
1740
                                 else
1741
                                     w1data <= #TCQ Data_GenW0(16);
1742
 
1743
                    17:
1744
                                 if (data_mode_i == 4'b0101)
1745
                                     w1data <= #TCQ Data_Gen(17);
1746
                                 else
1747
                                     w1data <= #TCQ Data_GenW0(17);
1748
 
1749
                    18:
1750
                                 if (data_mode_i == 4'b0101)
1751
                                     w1data <= #TCQ Data_Gen(18);
1752
                                 else
1753
                                     w1data <= #TCQ Data_GenW0(18);
1754
 
1755
                    19:
1756
                                 if (data_mode_i == 4'b0101)
1757
                                     w1data <= #TCQ Data_Gen(19);
1758
                                 else
1759
                                     w1data <= #TCQ Data_GenW0(19);
1760
 
1761
                    20:
1762
                                 if (data_mode_i == 4'b0101)
1763
                                     w1data <= #TCQ Data_Gen(20);
1764
                                 else
1765
                                     w1data <= #TCQ Data_GenW0(20);
1766
 
1767
                    21:
1768
                                 if (data_mode_i == 4'b0101)
1769
                                     w1data <= #TCQ Data_Gen(21);
1770
                                 else
1771
                                     w1data <= #TCQ Data_GenW0(21);
1772
 
1773
                    22:
1774
                                 if (data_mode_i == 4'b0101)
1775
                                     w1data <= #TCQ Data_Gen(22);
1776
                                 else
1777
                                     w1data <= #TCQ Data_GenW0(22);
1778
 
1779
                    23:
1780
                                  if (data_mode_i == 4'b0101)
1781
                                      w1data <= #TCQ Data_Gen(23);
1782
                                  else
1783
                                      w1data <= #TCQ Data_GenW0(23);
1784
 
1785
                    24:
1786
                              if (data_mode_i == 4'b0101)
1787
                                  w1data <= #TCQ Data_Gen(24);
1788
                              else
1789
                                  w1data <= #TCQ Data_GenW0(24);
1790
 
1791
                    25:
1792
                              if (data_mode_i == 4'b0101)
1793
                                  w1data <= #TCQ Data_Gen(25);
1794
                              else
1795
                                  w1data <= #TCQ Data_GenW0(25);
1796
                 default :
1797
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1798
            endcase
1799
       end
1800
     end
1801
   else if ( MEM_BURST_LEN == 8)  begin
1802
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1803
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1804
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1805
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
1806
        end
1807
      end
1808
    end
1809
  endgenerate
1810
 
1811
  generate
1812
    if((NUM_DQ_PINS == 112 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_112_PATTERN
1813
      always @ (posedge clk_i) begin
1814
 
1815
 
1816
        if( (fifo_rdy_i ) || cmd_startC )
1817
          if (cmd_startC ) begin
1818
            if (sel_w1gen_logic) begin
1819
               case (addr_i[9:5])
1820
                 0, 28:
1821
                              if (data_mode_i == 4'b0101)
1822
                                  w1data <= #TCQ Data_Gen(0);
1823
                              else
1824
                                  w1data <= #TCQ Data_GenW0(0);
1825
 
1826
                 1, 29:
1827
                              if (data_mode_i == 4'b0101)
1828
                                  w1data <= #TCQ Data_Gen(1);
1829
                              else
1830
                                  w1data <= #TCQ Data_GenW0(1);
1831
 
1832
                 2, 30:
1833
                              if (data_mode_i == 4'b0101)
1834
                                  w1data <= #TCQ Data_Gen(2);
1835
                              else
1836
                                  w1data <= #TCQ Data_GenW0(2);
1837
 
1838
                 3, 31:
1839
                              if (data_mode_i == 4'b0101)
1840
                                  w1data <= #TCQ Data_Gen(3);
1841
                              else
1842
                                  w1data <= #TCQ Data_GenW0(3);
1843
 
1844
                 4:
1845
                              if (data_mode_i == 4'b0101)
1846
                                  w1data <= #TCQ Data_Gen(4);
1847
                              else
1848
                                  w1data <= #TCQ Data_GenW0(4);
1849
 
1850
                 5:
1851
                              if (data_mode_i == 4'b0101)
1852
                                  w1data <= #TCQ Data_Gen(5);
1853
                              else
1854
                                  w1data <= #TCQ Data_GenW0(5);
1855
 
1856
 
1857
 
1858
                 6 :
1859
                              if (data_mode_i == 4'b0101)
1860
                                  w1data <= #TCQ Data_Gen(6);
1861
                              else
1862
                                  w1data <= #TCQ Data_GenW0(6);
1863
 
1864
                 7:
1865
                              if (data_mode_i == 4'b0101)
1866
                                  w1data <= #TCQ Data_Gen(7);
1867
                              else
1868
                                  w1data <= #TCQ Data_GenW0(7);
1869
 
1870
                  8:
1871
                               if (data_mode_i == 4'b0101)
1872
                                   w1data <= #TCQ Data_Gen(8);
1873
                               else
1874
                                   w1data <= #TCQ Data_GenW0(8);
1875
 
1876
                  9:
1877
                               if (data_mode_i == 4'b0101)
1878
                                   w1data <= #TCQ Data_Gen(9);
1879
                               else
1880
                                   w1data <= #TCQ Data_GenW0(9);
1881
 
1882
                  10:
1883
                               if (data_mode_i == 4'b0101)
1884
                                   w1data <= #TCQ Data_Gen(10);
1885
                               else
1886
                                   w1data <= #TCQ Data_GenW0(10);
1887
 
1888
                  11:
1889
                               if (data_mode_i == 4'b0101)
1890
                                   w1data <= #TCQ Data_Gen(11);
1891
                               else
1892
                                   w1data <= #TCQ Data_GenW0(11);
1893
 
1894
                  12:
1895
                               if (data_mode_i == 4'b0101)
1896
                                   w1data <= #TCQ Data_Gen(12);
1897
                               else
1898
                                   w1data <= #TCQ Data_GenW0(12);
1899
 
1900
                  13:
1901
                               if (data_mode_i == 4'b0101)
1902
                                   w1data <= #TCQ Data_Gen(13);
1903
                               else
1904
                                   w1data <= #TCQ Data_GenW0(13);
1905
 
1906
                  14:
1907
                               if (data_mode_i == 4'b0101)
1908
                                   w1data <= #TCQ Data_Gen(14);
1909
                               else
1910
                                   w1data <= #TCQ Data_GenW0(14);
1911
 
1912
                  15:
1913
                                  if (data_mode_i == 4'b0101)
1914
                                      w1data <= #TCQ Data_Gen(15);
1915
                                  else
1916
                                      w1data <= #TCQ Data_GenW0(15);
1917
 
1918
                    16:
1919
                                 if (data_mode_i == 4'b0101)
1920
                                     w1data <= #TCQ Data_Gen(16);
1921
                                 else
1922
                                     w1data <= #TCQ Data_GenW0(16);
1923
 
1924
                    17:
1925
                                 if (data_mode_i == 4'b0101)
1926
                                     w1data <= #TCQ Data_Gen(17);
1927
                                 else
1928
                                     w1data <= #TCQ Data_GenW0(17);
1929
 
1930
                    18:
1931
                                 if (data_mode_i == 4'b0101)
1932
                                     w1data <= #TCQ Data_Gen(18);
1933
                                 else
1934
                                     w1data <= #TCQ Data_GenW0(18);
1935
 
1936
                    19:
1937
                                 if (data_mode_i == 4'b0101)
1938
                                     w1data <= #TCQ Data_Gen(19);
1939
                                 else
1940
                                     w1data <= #TCQ Data_GenW0(19);
1941
 
1942
                    20:
1943
                                 if (data_mode_i == 4'b0101)
1944
                                     w1data <= #TCQ Data_Gen(20);
1945
                                 else
1946
                                     w1data <= #TCQ Data_GenW0(20);
1947
 
1948
                    21:
1949
                                 if (data_mode_i == 4'b0101)
1950
                                     w1data <= #TCQ Data_Gen(21);
1951
                                 else
1952
                                     w1data <= #TCQ Data_GenW0(21);
1953
 
1954
                    22:
1955
                                 if (data_mode_i == 4'b0101)
1956
                                     w1data <= #TCQ Data_Gen(22);
1957
                                 else
1958
                                     w1data <= #TCQ Data_GenW0(22);
1959
 
1960
                    23:
1961
                                  if (data_mode_i == 4'b0101)
1962
                                      w1data <= #TCQ Data_Gen(23);
1963
                                  else
1964
                                      w1data <= #TCQ Data_GenW0(23);
1965
 
1966
                    24:
1967
                              if (data_mode_i == 4'b0101)
1968
                                  w1data <= #TCQ Data_Gen(24);
1969
                              else
1970
                                  w1data <= #TCQ Data_GenW0(24);
1971
 
1972
                    25:
1973
                              if (data_mode_i == 4'b0101)
1974
                                  w1data <= #TCQ Data_Gen(25);
1975
                              else
1976
                                  w1data <= #TCQ Data_GenW0(25);
1977
 
1978
 
1979
                    26:
1980
                              if (data_mode_i == 4'b0101)
1981
                                  w1data <= #TCQ Data_Gen(26);
1982
                              else
1983
                                  w1data <= #TCQ Data_GenW0(26);
1984
 
1985
                    27:
1986
                              if (data_mode_i == 4'b0101)
1987
                                  w1data <= #TCQ Data_Gen(27);
1988
                              else
1989
                                  w1data <= #TCQ Data_GenW0(27);
1990
                 default :
1991
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
1992
            endcase
1993
       end
1994
     end
1995
   else if ( MEM_BURST_LEN == 8)  begin
1996
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
1997
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
1998
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
1999
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
2000
        end
2001
      end
2002
    end
2003
  endgenerate
2004
 
2005
 
2006
 
2007
  generate
2008
    if ((NUM_DQ_PINS == 120 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_120_PATTERN
2009
      always @ (posedge clk_i) begin
2010
 
2011
 
2012
        if( (fifo_rdy_i ) || cmd_startC )
2013
          if (cmd_startC ) begin
2014
            if (sel_w1gen_logic) begin
2015
               case (addr_i[9:5])
2016
                  0, 30:
2017
                             if (data_mode_i == 4'b0101)
2018
                                  w1data <= #TCQ Data_Gen(0);
2019
                              else
2020
                                  w1data <= #TCQ Data_GenW0(0);
2021
 
2022
                  1, 31:
2023
                             if (data_mode_i == 4'b0101)
2024
                                  w1data <= #TCQ Data_Gen(1);
2025
                              else
2026
                                  w1data <= #TCQ Data_GenW0(1);
2027
 
2028
                  2:
2029
                             if (data_mode_i == 4'b0101)
2030
                                  w1data <= #TCQ Data_Gen(2);
2031
                              else
2032
                                  w1data <= #TCQ Data_GenW0(2);
2033
 
2034
                  3:
2035
                             if (data_mode_i == 4'b0101)
2036
                                  w1data <= #TCQ Data_Gen(3);
2037
                              else
2038
                                  w1data <= #TCQ Data_GenW0(3);
2039
                 4:
2040
                              if (data_mode_i == 4'b0101)
2041
                                  w1data <= #TCQ Data_Gen(4);
2042
                              else
2043
                                  w1data <= #TCQ Data_GenW0(4);
2044
 
2045
                 5:
2046
                              if (data_mode_i == 4'b0101)
2047
                                  w1data <= #TCQ Data_Gen(5);
2048
                              else
2049
                                  w1data <= #TCQ Data_GenW0(5);
2050
                 6 :
2051
                              if (data_mode_i == 4'b0101)
2052
                                  w1data <= #TCQ Data_Gen(6);
2053
                              else
2054
                                  w1data <= #TCQ Data_GenW0(6);
2055
                 7:
2056
                              if (data_mode_i == 4'b0101)
2057
                                  w1data <= #TCQ Data_Gen(7);
2058
                              else
2059
                                  w1data <= #TCQ Data_GenW0(7);
2060
                  8:
2061
                               if (data_mode_i == 4'b0101)
2062
                                   w1data <= #TCQ Data_Gen(8);
2063
                               else
2064
                                   w1data <= #TCQ Data_GenW0(8);
2065
 
2066
                  9:
2067
                               if (data_mode_i == 4'b0101)
2068
                                   w1data <= #TCQ Data_Gen(9);
2069
                               else
2070
                                   w1data <= #TCQ Data_GenW0(9);
2071
 
2072
                  10:
2073
                               if (data_mode_i == 4'b0101)
2074
                                   w1data <= #TCQ Data_Gen(10);
2075
                               else
2076
                                   w1data <= #TCQ Data_GenW0(10);
2077
 
2078
                  11:
2079
                               if (data_mode_i == 4'b0101)
2080
                                   w1data <= #TCQ Data_Gen(11);
2081
                               else
2082
                                   w1data <= #TCQ Data_GenW0(11);
2083
 
2084
                  12:
2085
                               if (data_mode_i == 4'b0101)
2086
                                   w1data <= #TCQ Data_Gen(12);
2087
                               else
2088
                                   w1data <= #TCQ Data_GenW0(12);
2089
 
2090
                  13:
2091
                               if (data_mode_i == 4'b0101)
2092
                                   w1data <= #TCQ Data_Gen(13);
2093
                               else
2094
                                   w1data <= #TCQ Data_GenW0(13);
2095
 
2096
                  14:
2097
                               if (data_mode_i == 4'b0101)
2098
                                   w1data <= #TCQ Data_Gen(14);
2099
                               else
2100
                                   w1data <= #TCQ Data_GenW0(14);
2101
 
2102
                  15:
2103
                                  if (data_mode_i == 4'b0101)
2104
                                      w1data <= #TCQ Data_Gen(15);
2105
                                  else
2106
                                      w1data <= #TCQ Data_GenW0(15);
2107
 
2108
                    16:
2109
                                 if (data_mode_i == 4'b0101)
2110
                                     w1data <= #TCQ Data_Gen(16);
2111
                                 else
2112
                                     w1data <= #TCQ Data_GenW0(16);
2113
 
2114
                    17:
2115
                                 if (data_mode_i == 4'b0101)
2116
                                     w1data <= #TCQ Data_Gen(17);
2117
                                 else
2118
                                     w1data <= #TCQ Data_GenW0(17);
2119
 
2120
                    18:
2121
                                 if (data_mode_i == 4'b0101)
2122
                                     w1data <= #TCQ Data_Gen(18);
2123
                                 else
2124
                                     w1data <= #TCQ Data_GenW0(18);
2125
 
2126
                    19:
2127
                                 if (data_mode_i == 4'b0101)
2128
                                     w1data <= #TCQ Data_Gen(19);
2129
                                 else
2130
                                     w1data <= #TCQ Data_GenW0(19);
2131
 
2132
                    20:
2133
                                 if (data_mode_i == 4'b0101)
2134
                                     w1data <= #TCQ Data_Gen(20);
2135
                                 else
2136
                                     w1data <= #TCQ Data_GenW0(20);
2137
 
2138
                    21:
2139
                                 if (data_mode_i == 4'b0101)
2140
                                     w1data <= #TCQ Data_Gen(21);
2141
                                 else
2142
                                     w1data <= #TCQ Data_GenW0(21);
2143
 
2144
                    22:
2145
                                 if (data_mode_i == 4'b0101)
2146
                                     w1data <= #TCQ Data_Gen(22);
2147
                                 else
2148
                                     w1data <= #TCQ Data_GenW0(22);
2149
 
2150
                    23:
2151
                                  if (data_mode_i == 4'b0101)
2152
                                      w1data <= #TCQ Data_Gen(23);
2153
                                  else
2154
                                      w1data <= #TCQ Data_GenW0(23);
2155
 
2156
                    24:
2157
                              if (data_mode_i == 4'b0101)
2158
                                  w1data <= #TCQ Data_Gen(24);
2159
                              else
2160
                                  w1data <= #TCQ Data_GenW0(24);
2161
 
2162
                    25:
2163
                              if (data_mode_i == 4'b0101)
2164
                                  w1data <= #TCQ Data_Gen(25);
2165
                              else
2166
                                  w1data <= #TCQ Data_GenW0(25);
2167
 
2168
 
2169
                    26:
2170
                              if (data_mode_i == 4'b0101)
2171
                                  w1data <= #TCQ Data_Gen(26);
2172
                              else
2173
                                  w1data <= #TCQ Data_GenW0(26);
2174
 
2175
                    27:
2176
                              if (data_mode_i == 4'b0101)
2177
                                  w1data <= #TCQ Data_Gen(27);
2178
                              else
2179
                                  w1data <= #TCQ Data_GenW0(27);
2180
 
2181
 
2182
                    28:
2183
                              if (data_mode_i == 4'b0101)
2184
                                  w1data <= #TCQ Data_Gen(28);
2185
                              else
2186
                                  w1data <= #TCQ Data_GenW0(28);
2187
 
2188
                    29:
2189
                              if (data_mode_i == 4'b0101)
2190
                                  w1data <= #TCQ Data_Gen(29);
2191
                              else
2192
                                  w1data <= #TCQ Data_GenW0(29);
2193
                 default :
2194
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
2195
              endcase
2196
       end
2197
     end
2198
   else if ( MEM_BURST_LEN == 8)  begin
2199
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
2200
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
2201
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
2202
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
2203
        end
2204
      end
2205
    end
2206
  endgenerate
2207
 
2208
  generate
2209
    if ((NUM_DQ_PINS == 128 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_128_PATTERN
2210
      always @ (posedge clk_i) begin
2211
 
2212
 
2213
        if( (fifo_rdy_i ) || cmd_startC )
2214
          if (cmd_startC ) begin
2215
             if (sel_w1gen_logic) begin
2216
               case (addr_i[10:6])
2217
 
2218
                 0:
2219
                             if (data_mode_i == 4'b0101)
2220
                                  w1data <= #TCQ Data_Gen(0);
2221
                              else
2222
                                  w1data <= #TCQ Data_GenW0(0);
2223
 
2224
                 1:
2225
                             if (data_mode_i == 4'b0101)
2226
                                  w1data <= #TCQ Data_Gen(1);
2227
                              else
2228
                                  w1data <= #TCQ Data_GenW0(1);
2229
 
2230
                  2:
2231
                             if (data_mode_i == 4'b0101)
2232
                                  w1data <= #TCQ Data_Gen(2);
2233
                              else
2234
                                  w1data <= #TCQ Data_GenW0(2);
2235
 
2236
                  3:
2237
                             if (data_mode_i == 4'b0101)
2238
                                  w1data <= #TCQ Data_Gen(3);
2239
                              else
2240
                                  w1data <= #TCQ Data_GenW0(3);
2241
                 4:
2242
                              if (data_mode_i == 4'b0101)
2243
                                  w1data <= #TCQ Data_Gen(4);
2244
                              else
2245
                                  w1data <= #TCQ Data_GenW0(4);
2246
 
2247
                 5:
2248
                              if (data_mode_i == 4'b0101)
2249
                                  w1data <= #TCQ Data_Gen(5);
2250
                              else
2251
                                  w1data <= #TCQ Data_GenW0(5);
2252
 
2253
                 6 :
2254
                              if (data_mode_i == 4'b0101)
2255
                                  w1data <= #TCQ Data_Gen(6);
2256
                              else
2257
                                  w1data <= #TCQ Data_GenW0(6);
2258
 
2259
                 7:
2260
                              if (data_mode_i == 4'b0101)
2261
                                  w1data <= #TCQ Data_Gen(7);
2262
                              else
2263
                                  w1data <= #TCQ Data_GenW0(7);
2264
 
2265
                  8:
2266
                               if (data_mode_i == 4'b0101)
2267
                                   w1data <= #TCQ Data_Gen(8);
2268
                               else
2269
                                   w1data <= #TCQ Data_GenW0(8);
2270
 
2271
                  9:
2272
                               if (data_mode_i == 4'b0101)
2273
                                   w1data <= #TCQ Data_Gen(9);
2274
                               else
2275
                                   w1data <= #TCQ Data_GenW0(9);
2276
 
2277
                  10:
2278
                               if (data_mode_i == 4'b0101)
2279
                                   w1data <= #TCQ Data_Gen(10);
2280
                               else
2281
                                   w1data <= #TCQ Data_GenW0(10);
2282
 
2283
                  11:
2284
                               if (data_mode_i == 4'b0101)
2285
                                   w1data <= #TCQ Data_Gen(11);
2286
                               else
2287
                                   w1data <= #TCQ Data_GenW0(11);
2288
 
2289
                  12:
2290
                               if (data_mode_i == 4'b0101)
2291
                                   w1data <= #TCQ Data_Gen(12);
2292
                               else
2293
                                   w1data <= #TCQ Data_GenW0(12);
2294
 
2295
                  13:
2296
                               if (data_mode_i == 4'b0101)
2297
                                   w1data <= #TCQ Data_Gen(13);
2298
                               else
2299
                                   w1data <= #TCQ Data_GenW0(13);
2300
 
2301
                  14:
2302
                               if (data_mode_i == 4'b0101)
2303
                                   w1data <= #TCQ Data_Gen(14);
2304
                               else
2305
                                   w1data <= #TCQ Data_GenW0(14);
2306
 
2307
                  15:
2308
                                  if (data_mode_i == 4'b0101)
2309
                                      w1data <= #TCQ Data_Gen(15);
2310
                                  else
2311
                                      w1data <= #TCQ Data_GenW0(15);
2312
 
2313
                    16:
2314
                                 if (data_mode_i == 4'b0101)
2315
                                     w1data <= #TCQ Data_Gen(16);
2316
                                 else
2317
                                     w1data <= #TCQ Data_GenW0(16);
2318
 
2319
                    17:
2320
                                 if (data_mode_i == 4'b0101)
2321
                                     w1data <= #TCQ Data_Gen(17);
2322
                                 else
2323
                                     w1data <= #TCQ Data_GenW0(17);
2324
 
2325
                    18:
2326
                                 if (data_mode_i == 4'b0101)
2327
                                     w1data <= #TCQ Data_Gen(18);
2328
                                 else
2329
                                     w1data <= #TCQ Data_GenW0(18);
2330
 
2331
                    19:
2332
                                 if (data_mode_i == 4'b0101)
2333
                                     w1data <= #TCQ Data_Gen(19);
2334
                                 else
2335
                                     w1data <= #TCQ Data_GenW0(19);
2336
 
2337
                    20:
2338
                                 if (data_mode_i == 4'b0101)
2339
                                     w1data <= #TCQ Data_Gen(20);
2340
                                 else
2341
                                     w1data <= #TCQ Data_GenW0(20);
2342
 
2343
                    21:
2344
                                 if (data_mode_i == 4'b0101)
2345
                                     w1data <= #TCQ Data_Gen(21);
2346
                                 else
2347
                                     w1data <= #TCQ Data_GenW0(21);
2348
 
2349
                    22:
2350
                                 if (data_mode_i == 4'b0101)
2351
                                     w1data <= #TCQ Data_Gen(22);
2352
                                 else
2353
                                     w1data <= #TCQ Data_GenW0(22);
2354
 
2355
                    23:
2356
                                  if (data_mode_i == 4'b0101)
2357
                                      w1data <= #TCQ Data_Gen(23);
2358
                                  else
2359
                                      w1data <= #TCQ Data_GenW0(23);
2360
 
2361
                    24:
2362
                              if (data_mode_i == 4'b0101)
2363
                                  w1data <= #TCQ Data_Gen(24);
2364
                              else
2365
                                  w1data <= #TCQ Data_GenW0(24);
2366
 
2367
                    25:
2368
                              if (data_mode_i == 4'b0101)
2369
                                  w1data <= #TCQ Data_Gen(25);
2370
                              else
2371
                                  w1data <= #TCQ Data_GenW0(25);
2372
 
2373
 
2374
                    26:
2375
                              if (data_mode_i == 4'b0101)
2376
                                  w1data <= #TCQ Data_Gen(26);
2377
                              else
2378
                                  w1data <= #TCQ Data_GenW0(26);
2379
 
2380
                    27:
2381
                              if (data_mode_i == 4'b0101)
2382
                                  w1data <= #TCQ Data_Gen(27);
2383
                              else
2384
                                  w1data <= #TCQ Data_GenW0(27);
2385
 
2386
 
2387
                    28:
2388
                              if (data_mode_i == 4'b0101)
2389
                                  w1data <= #TCQ Data_Gen(28);
2390
                              else
2391
                                  w1data <= #TCQ Data_GenW0(28);
2392
 
2393
                    29:
2394
                              if (data_mode_i == 4'b0101)
2395
                                  w1data <= #TCQ Data_Gen(29);
2396
                              else
2397
                                  w1data <= #TCQ Data_GenW0(29);
2398
 
2399
                    30:
2400
                              if (data_mode_i == 4'b0101)
2401
                                  w1data <= #TCQ Data_Gen(30);
2402
                              else
2403
                                  w1data <= #TCQ Data_GenW0(30);
2404
 
2405
                    31:
2406
                              if (data_mode_i == 4'b0101)
2407
                                  w1data <= #TCQ Data_Gen(31);
2408
                              else
2409
                                  w1data <= #TCQ Data_GenW0(31);
2410
                 default :
2411
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
2412
            endcase
2413
       end
2414
     end
2415
   else if ( MEM_BURST_LEN == 8)  begin
2416
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
2417
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
2418
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
2419
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
2420
        end
2421
      end
2422
    end
2423
  endgenerate
2424
 
2425
  generate
2426
    if ((NUM_DQ_PINS == 136 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_136_PATTERN
2427
      always @ (posedge clk_i) begin
2428
 
2429
 
2430
        if( (fifo_rdy_i ) || cmd_startC )
2431
          if (cmd_startC ) begin
2432
            if (sel_w1gen_logic) begin
2433
              case (addr_i[11:6])
2434
 
2435
               0:
2436
                             if (data_mode_i == 4'b0101)
2437
                                  w1data <= #TCQ Data_Gen(0);
2438
                              else
2439
                                  w1data <= #TCQ Data_GenW0(0);
2440
 
2441
 
2442
               1, 35:
2443
                             if (data_mode_i == 4'b0101)
2444
                                  w1data <= #TCQ Data_Gen(1);
2445
                              else
2446
                                  w1data <= #TCQ Data_GenW0(1);
2447
 
2448
 
2449
               2, 36:
2450
                             if (data_mode_i == 4'b0101)
2451
                                  w1data <= #TCQ Data_Gen(2);
2452
                              else
2453
                                  w1data <= #TCQ Data_GenW0(2);
2454
 
2455
 
2456
               3, 37:
2457
                             if (data_mode_i == 4'b0101)
2458
                                  w1data <= #TCQ Data_Gen(3);
2459
                              else
2460
                                  w1data <= #TCQ Data_GenW0(3);
2461
 
2462
 
2463
               4, 38:
2464
                             if (data_mode_i == 4'b0101)
2465
                                  w1data <= #TCQ Data_Gen(4);
2466
                              else
2467
                                  w1data <= #TCQ Data_GenW0(4);
2468
 
2469
 
2470
               5, 39:
2471
                             if (data_mode_i == 4'b0101)
2472
                                  w1data <= #TCQ Data_Gen(5);
2473
                              else
2474
                                  w1data <= #TCQ Data_GenW0(5);
2475
 
2476
 
2477
               6, 40:
2478
                             if (data_mode_i == 4'b0101)
2479
                                  w1data <= #TCQ Data_Gen(6);
2480
                              else
2481
                                  w1data <= #TCQ Data_GenW0(6);
2482
 
2483
 
2484
               7, 41:
2485
                             if (data_mode_i == 4'b0101)
2486
                                  w1data <= #TCQ Data_Gen(7);
2487
                              else
2488
                                  w1data <= #TCQ Data_GenW0(7);
2489
 
2490
 
2491
               8, 42:
2492
                             if (data_mode_i == 4'b0101)
2493
                                  w1data <= #TCQ Data_Gen(8);
2494
                              else
2495
                                  w1data <= #TCQ Data_GenW0(8);
2496
 
2497
 
2498
               9, 43:
2499
                             if (data_mode_i == 4'b0101)
2500
                                  w1data <= #TCQ Data_Gen(9);
2501
                              else
2502
                                  w1data <= #TCQ Data_GenW0(9);
2503
 
2504
 
2505
               10, 44:
2506
                             if (data_mode_i == 4'b0101)
2507
                                  w1data <= #TCQ Data_Gen(10);
2508
                              else
2509
                                  w1data <= #TCQ Data_GenW0(10);
2510
 
2511
 
2512
               11, 45:
2513
                             if (data_mode_i == 4'b0101)
2514
                                  w1data <= #TCQ Data_Gen(11);
2515
                              else
2516
                                  w1data <= #TCQ Data_GenW0(11);
2517
 
2518
 
2519
               12, 46:
2520
                             if (data_mode_i == 4'b0101)
2521
                                  w1data <= #TCQ Data_Gen(12);
2522
                              else
2523
                                  w1data <= #TCQ Data_GenW0(12);
2524
 
2525
 
2526
               13, 47:
2527
                             if (data_mode_i == 4'b0101)
2528
                                  w1data <= #TCQ Data_Gen(13);
2529
                              else
2530
                                  w1data <= #TCQ Data_GenW0(13);
2531
 
2532
 
2533
               14, 48:
2534
                             if (data_mode_i == 4'b0101)
2535
                                  w1data <= #TCQ Data_Gen(14);
2536
                              else
2537
                                  w1data <= #TCQ Data_GenW0(14);
2538
 
2539
 
2540
               15, 49:
2541
                             if (data_mode_i == 4'b0101)
2542
                                  w1data <= #TCQ Data_Gen(15);
2543
                              else
2544
                                  w1data <= #TCQ Data_GenW0(15);
2545
 
2546
 
2547
               16, 50:
2548
                             if (data_mode_i == 4'b0101)
2549
                                  w1data <= #TCQ Data_Gen(16);
2550
                              else
2551
                                  w1data <= #TCQ Data_GenW0(16);
2552
 
2553
 
2554
               17, 51:
2555
                             if (data_mode_i == 4'b0101)
2556
                                  w1data <= #TCQ Data_Gen(17);
2557
                              else
2558
                                  w1data <= #TCQ Data_GenW0(17);
2559
 
2560
 
2561
               18, 52:
2562
                             if (data_mode_i == 4'b0101)
2563
                                  w1data <= #TCQ Data_Gen(18);
2564
                              else
2565
                                  w1data <= #TCQ Data_GenW0(18);
2566
 
2567
 
2568
               19, 53:
2569
                             if (data_mode_i == 4'b0101)
2570
                                  w1data <= #TCQ Data_Gen(19);
2571
                              else
2572
                                  w1data <= #TCQ Data_GenW0(19);
2573
 
2574
 
2575
               20, 54:
2576
                             if (data_mode_i == 4'b0101)
2577
                                  w1data <= #TCQ Data_Gen(20);
2578
                              else
2579
                                  w1data <= #TCQ Data_GenW0(20);
2580
 
2581
 
2582
               21, 55:
2583
                             if (data_mode_i == 4'b0101)
2584
                                  w1data <= #TCQ Data_Gen(21);
2585
                              else
2586
                                  w1data <= #TCQ Data_GenW0(21);
2587
 
2588
 
2589
               22, 56:
2590
                             if (data_mode_i == 4'b0101)
2591
                                  w1data <= #TCQ Data_Gen(22);
2592
                              else
2593
                                  w1data <= #TCQ Data_GenW0(22);
2594
 
2595
 
2596
               23, 57:
2597
                             if (data_mode_i == 4'b0101)
2598
                                  w1data <= #TCQ Data_Gen(23);
2599
                              else
2600
                                  w1data <= #TCQ Data_GenW0(23);
2601
 
2602
 
2603
               24, 58:
2604
                             if (data_mode_i == 4'b0101)
2605
                                  w1data <= #TCQ Data_Gen(24);
2606
                              else
2607
                                  w1data <= #TCQ Data_GenW0(24);
2608
 
2609
 
2610
               25, 59:
2611
                             if (data_mode_i == 4'b0101)
2612
                                  w1data <= #TCQ Data_Gen(25);
2613
                              else
2614
                                  w1data <= #TCQ Data_GenW0(25);
2615
 
2616
 
2617
               26, 60:
2618
                             if (data_mode_i == 4'b0101)
2619
                                  w1data <= #TCQ Data_Gen(26);
2620
                              else
2621
                                  w1data <= #TCQ Data_GenW0(26);
2622
 
2623
 
2624
               27, 61:
2625
                             if (data_mode_i == 4'b0101)
2626
                                  w1data <= #TCQ Data_Gen(27);
2627
                              else
2628
                                  w1data <= #TCQ Data_GenW0(27);
2629
 
2630
 
2631
               28, 62:
2632
                             if (data_mode_i == 4'b0101)
2633
                                  w1data <= #TCQ Data_Gen(28);
2634
                              else
2635
                                  w1data <= #TCQ Data_GenW0(28);
2636
 
2637
 
2638
               29, 63:
2639
                             if (data_mode_i == 4'b0101)
2640
                                  w1data <= #TCQ Data_Gen(29);
2641
                              else
2642
                                  w1data <= #TCQ Data_GenW0(29);
2643
 
2644
 
2645
               30:
2646
                             if (data_mode_i == 4'b0101)
2647
                                  w1data <= #TCQ Data_Gen(30);
2648
                              else
2649
                                  w1data <= #TCQ Data_GenW0(30);
2650
 
2651
 
2652
               31:
2653
                             if (data_mode_i == 4'b0101)
2654
                                  w1data <= #TCQ Data_Gen(31);
2655
                              else
2656
                                  w1data <= #TCQ Data_GenW0(31);
2657
 
2658
 
2659
               32:
2660
                             if (data_mode_i == 4'b0101)
2661
                                  w1data <= #TCQ Data_Gen(32);
2662
                              else
2663
                                  w1data <= #TCQ Data_GenW0(32);
2664
 
2665
 
2666
               33:
2667
                             if (data_mode_i == 4'b0101)
2668
                                  w1data <= #TCQ Data_Gen(33);
2669
                              else
2670
                                  w1data <= #TCQ Data_GenW0(33);
2671
                 default :
2672
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
2673
             endcase
2674
         end
2675
      end
2676
   else if ( MEM_BURST_LEN == 8)  begin
2677
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
2678
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
2679
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
2680
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
2681
        end
2682
      end
2683
    end
2684
  endgenerate
2685
 
2686
  generate
2687
    if ((NUM_DQ_PINS == 144 ) && (DATA_PATTERN == "DGEN_NEIGHBOR" || DATA_PATTERN == "DGEN_WALKING1" || DATA_PATTERN == "DGEN_WALKING0" || DATA_PATTERN == "DGEN_ALL"))  begin : WALKING_ONE_144_PATTERN
2688
      always @ (posedge clk_i) begin
2689
 
2690
 
2691
        if( (fifo_rdy_i ) || cmd_startC )
2692
           if (cmd_startC ) begin
2693
              if (sel_w1gen_logic) begin
2694
                case (addr_i[11:6])
2695
 
2696
                 0, 36:
2697
                             if (data_mode_i == 4'b0101)
2698
                                  w1data <= #TCQ Data_Gen(0);
2699
                              else
2700
                                  w1data <= #TCQ Data_GenW0(0);
2701
 
2702
 
2703
                 1, 37 :
2704
                             if (data_mode_i == 4'b0101)
2705
                                  w1data <= #TCQ Data_Gen(1);
2706
                              else
2707
                                  w1data <= #TCQ Data_GenW0(1);
2708
 
2709
 
2710
                 2, 38:
2711
                             if (data_mode_i == 4'b0101)
2712
                                  w1data <= #TCQ Data_Gen(2);
2713
                              else
2714
                                  w1data <= #TCQ Data_GenW0(2);
2715
 
2716
 
2717
                 3, 39 :
2718
                             if (data_mode_i == 4'b0101)
2719
                                  w1data <= #TCQ Data_Gen(3);
2720
                              else
2721
                                  w1data <= #TCQ Data_GenW0(3);
2722
                 4, 40 :
2723
                             if (data_mode_i == 4'b0101)
2724
                                  w1data <= #TCQ Data_Gen(4);
2725
                              else
2726
                                  w1data <= #TCQ Data_GenW0(4);
2727
                 5, 41:
2728
                             if (data_mode_i == 4'b0101)
2729
                                  w1data <= #TCQ Data_Gen(5);
2730
                              else
2731
                                  w1data <= #TCQ Data_GenW0(5);
2732
                 6, 42:
2733
                             if (data_mode_i == 4'b0101)
2734
                                  w1data <= #TCQ Data_Gen(6);
2735
                              else
2736
                                  w1data <= #TCQ Data_GenW0(6);
2737
                 7, 43:
2738
                             if (data_mode_i == 4'b0101)
2739
                                  w1data <= #TCQ Data_Gen(7);
2740
                              else
2741
                                 w1data <= #TCQ Data_GenW0(7);
2742
                 8, 44:
2743
                             if (data_mode_i == 4'b0101)
2744
                                  w1data <= #TCQ Data_Gen(8);
2745
                              else
2746
                                  w1data <= #TCQ Data_GenW0(8);
2747
                 9, 45:
2748
                             if (data_mode_i == 4'b0101)
2749
                                  w1data <= #TCQ Data_Gen(9);
2750
                              else
2751
                                  w1data <= #TCQ Data_GenW0(9);
2752
                 10, 46:
2753
                             if (data_mode_i == 4'b0101)
2754
                                  w1data <= #TCQ Data_Gen(10);
2755
                              else
2756
                                  w1data <= #TCQ Data_GenW0(10);
2757
                 11, 47 :
2758
                             if (data_mode_i == 4'b0101)
2759
                                  w1data <= #TCQ Data_Gen(11);
2760
                              else
2761
                                  w1data <= #TCQ Data_GenW0(11);
2762
                 12, 48 :
2763
                             if (data_mode_i == 4'b0101)
2764
                                  w1data <= #TCQ Data_Gen(12);
2765
                              else
2766
                                  w1data <= #TCQ Data_GenW0(12);
2767
                 13, 49 :
2768
                             if (data_mode_i == 4'b0101)
2769
                                  w1data <= #TCQ Data_Gen(13);
2770
                              else
2771
                                  w1data <= #TCQ Data_GenW0(13);
2772
                 14, 50:
2773
                             if (data_mode_i == 4'b0101)
2774
                                  w1data <= #TCQ Data_Gen(14);
2775
                              else
2776
                                  w1data <= #TCQ Data_GenW0(14);
2777
                 15, 51 :
2778
                             if (data_mode_i == 4'b0101)
2779
                                  w1data <= #TCQ Data_Gen(15);
2780
                              else
2781
                                  w1data <= #TCQ Data_GenW0(15);
2782
                 16, 52 :
2783
                             if (data_mode_i == 4'b0101)
2784
                                  w1data <= #TCQ Data_Gen(16);
2785
                              else
2786
                                  w1data <= #TCQ Data_GenW0(16);
2787
                 17 , 53:
2788
                             if (data_mode_i == 4'b0101)
2789
                                  w1data <= #TCQ Data_Gen(17);
2790
                              else
2791
                                  w1data <= #TCQ Data_GenW0(17);
2792
                 18, 54:
2793
                             if (data_mode_i == 4'b0101)
2794
                                  w1data <= #TCQ Data_Gen(18);
2795
                              else
2796
                                 w1data <= #TCQ Data_GenW0(18);
2797
                 19, 55:
2798
                             if (data_mode_i == 4'b0101)
2799
                                  w1data <= #TCQ Data_Gen(19);
2800
                              else
2801
                                  w1data <= #TCQ Data_GenW0(19);
2802
                 20, 56:
2803
                             if (data_mode_i == 4'b0101)
2804
                                  w1data <= #TCQ Data_Gen(20);
2805
                              else
2806
                                  w1data <= #TCQ Data_GenW0(20);
2807
                 21, 57:
2808
                             if (data_mode_i == 4'b0101)
2809
                                  w1data <= #TCQ Data_Gen(21);
2810
                              else
2811
                                  w1data <= #TCQ Data_GenW0(21);
2812
                 22, 58:
2813
                             if (data_mode_i == 4'b0101)
2814
                                  w1data <= #TCQ Data_Gen(22);
2815
                              else
2816
                                  w1data <= #TCQ Data_GenW0(22);
2817
                 23, 59:
2818
                             if (data_mode_i == 4'b0101)
2819
                                  w1data <= #TCQ Data_Gen(23);
2820
                              else
2821
                                  w1data <= #TCQ Data_GenW0(23);
2822
                 24, 60:
2823
                             if (data_mode_i == 4'b0101)
2824
                                  w1data <= #TCQ Data_Gen(24);
2825
                              else
2826
                                  w1data <= #TCQ Data_GenW0(24);
2827
                 25, 61:
2828
                             if (data_mode_i == 4'b0101)
2829
                                  w1data <= #TCQ Data_Gen(25);
2830
                              else
2831
                                  w1data <= #TCQ Data_GenW0(25);
2832
                 26, 62:
2833
                             if (data_mode_i == 4'b0101)
2834
                                  w1data <= #TCQ Data_Gen(26);
2835
                              else
2836
                                  w1data <= #TCQ Data_GenW0(26);
2837
                 27, 63:
2838
                             if (data_mode_i == 4'b0101)
2839
                                  w1data <= #TCQ Data_Gen(27);
2840
                              else
2841
                                  w1data <= #TCQ Data_GenW0(27);
2842
                    28:
2843
                              if (data_mode_i == 4'b0101)
2844
                                  w1data <= #TCQ Data_Gen(28);
2845
                              else
2846
                                  w1data <= #TCQ Data_GenW0(28);
2847
 
2848
                    29:
2849
                              if (data_mode_i == 4'b0101)
2850
                                  w1data <= #TCQ Data_Gen(29);
2851
                              else
2852
                                  w1data <= #TCQ Data_GenW0(29);
2853
 
2854
                    30:
2855
                              if (data_mode_i == 4'b0101)
2856
                                  w1data <= #TCQ Data_Gen(30);
2857
                              else
2858
                                  w1data <= #TCQ Data_GenW0(30);
2859
 
2860
                    31:
2861
                              if (data_mode_i == 4'b0101)
2862
                                  w1data <= #TCQ Data_Gen(31);
2863
                              else
2864
                                  w1data <= #TCQ Data_GenW0(31);
2865
                     32:
2866
                                  if (data_mode_i == 4'b0101)
2867
                                      w1data <= #TCQ Data_Gen(32);
2868
                                  else
2869
                                      w1data <= #TCQ Data_GenW0(32);
2870
                     33:
2871
                                  if (data_mode_i == 4'b0101)
2872
                                      w1data <= #TCQ Data_Gen(33);
2873
                                  else
2874
                                      w1data <= #TCQ Data_GenW0(33);
2875
                     34:
2876
                                  if (data_mode_i == 4'b0101)
2877
                                      w1data <= #TCQ Data_Gen(34);
2878
                                  else
2879
                                      w1data <= #TCQ Data_GenW0(34);
2880
                     35:
2881
                              if (data_mode_i == 4'b0101)
2882
                                  w1data <= #TCQ Data_Gen(35);
2883
                              else
2884
                                  w1data <= #TCQ Data_GenW0(35);
2885
 
2886
                 default :
2887
                    w1data[4*NUM_DQ_PINS-1:0*NUM_DQ_PINS ] <= #TCQ 'b0;
2888
 
2889
              endcase
2890
     end
2891
   end
2892
   else if ( MEM_BURST_LEN == 8) begin
2893
              w1data[4*NUM_DQ_PINS - 1:3*NUM_DQ_PINS] <= #TCQ {w1data[4*NUM_DQ_PINS - 5:3*NUM_DQ_PINS  ],w1data[4*NUM_DQ_PINS - 1:4*NUM_DQ_PINS - 4]};
2894
              w1data[3*NUM_DQ_PINS - 1:2*NUM_DQ_PINS] <= #TCQ {w1data[3*NUM_DQ_PINS - 5:2*NUM_DQ_PINS  ],w1data[3*NUM_DQ_PINS - 1:3*NUM_DQ_PINS - 4]};
2895
              w1data[2*NUM_DQ_PINS - 1:1*NUM_DQ_PINS] <= #TCQ {w1data[2*NUM_DQ_PINS - 5:1*NUM_DQ_PINS  ],w1data[2*NUM_DQ_PINS - 1:2*NUM_DQ_PINS - 4]};
2896
              w1data[1*NUM_DQ_PINS - 1:0*NUM_DQ_PINS] <= #TCQ {w1data[1*NUM_DQ_PINS - 5:0*NUM_DQ_PINS  ],w1data[1*NUM_DQ_PINS - 1:1*NUM_DQ_PINS - 4]};
2897
        end
2898
      end
2899
    end
2900
  endgenerate
2901
 
2902
 
2903
 
2904
 
2905
// HAMMER_PATTERN_MINUS: generate walking HAMMER  data pattern except 1 bit for the whole burst. The incoming addr_i[5:2] determine 
2906
// the position of the pin driving oppsite polarity
2907
//  addr_i[6:2] = 5'h0f ; 32 bit data port
2908
//                 => the rsing data pattern will be    32'b11111111_11111111_01111111_11111111
2909
//                 => the falling data pattern will be  32'b00000000_00000000_00000000_00000000
2910
 
2911
 
2912
//always @ (NUM_DQ_PINS,SEL_VICTIM_LINE) begin
2913
always @ (posedge clk_i) begin
2914
 
2915
for (i=0; i <= 4*NUM_DQ_PINS - 1; i= i+1)
2916
      if (i == SEL_VICTIM_LINE || (i-NUM_DQ_PINS) == SEL_VICTIM_LINE ||
2917
          (i-(NUM_DQ_PINS*2)) ==  SEL_VICTIM_LINE || (i-(NUM_DQ_PINS*3)) == SEL_VICTIM_LINE)
2918
              hdata[i] <= #TCQ 1'b1;
2919
      else if ( i >= 0 && i <= 1*NUM_DQ_PINS - 1)
2920
              hdata[i] <= #TCQ 1'b1;
2921
      else if ( i >= 1*NUM_DQ_PINS && i <= 2*NUM_DQ_PINS - 1)
2922
              hdata[i] <= #TCQ 1'b0;
2923
      else if ( i >= 2*NUM_DQ_PINS && i <= 3*NUM_DQ_PINS - 1)
2924
              hdata[i] <= #TCQ 1'b1;
2925
      else if ( i >= 3*NUM_DQ_PINS && i <= 4*NUM_DQ_PINS - 1)
2926
              hdata[i] <= #TCQ 1'b0;
2927
      else
2928
              hdata[i] <= 1'b1;
2929
 
2930
 
2931
end
2932
 
2933
 
2934
always @ (w1data,hdata)
2935
begin
2936
for (i=0; i <= 4*NUM_DQ_PINS - 1; i= i+1)
2937
   ndata[i] = hdata[i] ^ w1data[i];
2938
 
2939
         end
2940
 
2941
 
2942
always @ (full_prbs_data,hdata,SEL_VICTIM_LINE)
2943
begin
2944
for (i=0; i <= 4*NUM_DQ_PINS - 1; i= i+1)
2945
      if (i == SEL_VICTIM_LINE || (i-NUM_DQ_PINS) == SEL_VICTIM_LINE ||
2946
          (i-(NUM_DQ_PINS*2)) == SEL_VICTIM_LINE || (i-(NUM_DQ_PINS*3)) == SEL_VICTIM_LINE)
2947
 
2948
               h_prbsdata[i] = full_prbs_data[SEL_VICTIM_LINE];
2949
      else
2950
                 h_prbsdata[i] = hdata[i];
2951
 
2952
 
2953
         end
2954
 
2955
 
2956
 
2957
// ADDRESS_PATTERN: use the address as the 1st data pattern for the whole burst. For example
2958
// Dataport 32 bit width with starting addr_i  = 32'h12345678, user burst length 4
2959
//                 => the 1st data pattern :     32'h12345678
2960
//                 => the 2nd data pattern :     32'h12345679
2961
//                 => the 3rd data pattern :     32'h1234567a
2962
//                 => the 4th data pattern :     32'h1234567b
2963
generate
2964
 
2965
if (DATA_PATTERN == "DGEN_ADDR"  || DATA_PATTERN == "DGEN_ALL")  begin : ADDRESS_PATTERN
2966
always @ (posedge clk_i)
2967
begin
2968
  if (cmd_startD)
2969
         acounts[35:0]  <= #TCQ {4'b0000,addr_i};
2970
  else if (fifo_rdy_i && data_rdy_i && MEM_BURST_LEN == 8 )
2971
      if (NUM_DQ_PINS == 8)
2972
         acounts <= #TCQ acounts + 4;
2973
      else if (NUM_DQ_PINS == 16 || NUM_DQ_PINS == 24)
2974
         acounts <= #TCQ acounts + 8;
2975
      else if (NUM_DQ_PINS >= 32 && NUM_DQ_PINS < 64)
2976
         acounts <= #TCQ acounts + 16;
2977
 
2978
      else if (NUM_DQ_PINS >= 64 && NUM_DQ_PINS < 128 )
2979
         acounts <= #TCQ acounts + 32;
2980
 
2981
      else if (NUM_DQ_PINS >= 128 && NUM_DQ_PINS < 256 )
2982
         acounts <= #TCQ acounts + 64;
2983
 
2984
 
2985
end
2986
 
2987
assign    adata = {DWIDTH/32{acounts[31:0]}};
2988
end
2989
endgenerate
2990
 
2991
 
2992
// PRBS_PATTERN: use the address as the PRBS seed data pattern for the whole burst. For example
2993
// Dataport 32 bit width with starting addr_i = 30'h12345678, user burst length 4
2994
//                
2995
//                
2996
//                
2997
// 
2998
 
2999
generate
3000
// When doing eye_test, traffic gen only does write and want to 
3001
// keep the prbs random and address is fixed at a location.
3002
if (EYE_TEST == "TRUE")  begin : d_clk_en1
3003
assign data_clk_en = 1'b1;//fifo_rdy_i && data_rdy_i && user_burst_cnt > 6'd1;
3004
end
3005
endgenerate
3006
 
3007
generate
3008
if (EYE_TEST == "FALSE")  begin : d_clk_en2
3009
assign data_clk_en = fifo_rdy_i && data_rdy_i && user_burst_cnt > 6'd1;
3010
end
3011
endgenerate
3012
 
3013
generate
3014
if (DATA_PATTERN == "DGEN_PRBS"  || DATA_PATTERN == "DGEN_ALL")  begin : PRBS_PATTERN
3015
 
3016
//   PRBS DATA GENERATION
3017
// xor all the tap positions before feedback to 1st stage.
3018
 
3019
 
3020
data_prbs_gen #
3021
  (
3022
    .PRBS_WIDTH (32),
3023
    .SEED_WIDTH (32),
3024
    .EYE_TEST   (EYE_TEST)
3025
   )
3026
   data_prbs_gen
3027
  (
3028
   .clk_i            (clk_i),
3029
   .rst_i            (rst_i),
3030
   .clk_en           (data_clk_en),
3031
 
3032
   .prbs_fseed_i     (prbs_fseed_i),
3033
   .prbs_seed_init   (cmd_startE),
3034
   .prbs_seed_i      ({m_addr_i[6],m_addr_i[31],m_addr_i[8],m_addr_i[22],m_addr_i[9],m_addr_i[24],m_addr_i[21],m_addr_i[23],
3035
                       m_addr_i[18],m_addr_i[10],m_addr_i[20],m_addr_i[17],m_addr_i[13],m_addr_i[16],m_addr_i[12],m_addr_i[4],
3036
                       m_addr_i[15:0]}),//(m_addr_i[31:0]),
3037
   .prbs_o           (prbs_data)
3038
 
3039
  );
3040
end
3041
endgenerate
3042
 
3043
 
3044
endmodule
3045
 

powered by: WebSVN 2.1.0

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