x393  1.0
FPGAcodeforElphelNC393camera
ramp_var_w_var_r.v
Go to the documentation of this file.
1 
65  // This file may be used to define same pre-processor macros to be included into each parsed file
66 `ifndef SYSTEM_DEFINES
67  `define SYSTEM_DEFINES
68  // TODO: Later compare instantiate/infer
69  `define INSTANTIATE_DSP48E1
70  `define DEBUG_DCT1D// undefine after debugging is over // `define USE_OLD_DCT
71 
72 // Parameters from x393_sata project
73  `define USE_DRP
74  `define ALIGN_CLOCKS
75 // `define STRAIGHT_XCLK
76  `define USE_DATASCOPE
77 // `define DATASCOPE_INCOMING_RAW
78  `define PRELOAD_BRAMS
79 // `define AHCI_SATA 1
80 // `define DEBUG_ELASTIC
81 // End of parameters from x393_sata project
82 
83  `define PRELOAD_BRAMS
84  `define DISPLAY_COMPRESSED_DATA // if HISPI is not defined, parallel sensor interface is used for all channels
85  `define HISPI /*************** CHANGE here and x393_hispi/x393_parallel in bitstream tool settings ****************/// `define USE_OLD_XDCT393
86 // `define USE_PCLK2X
87 // `define USE_XCLK2X
88  `define REVERSE_LANES 1 `define DEBUG_RING 1 `define USE_HARD_CURPARAMS// Adjustment of actual hardware may break simulation // `define DEBUG_SENS_MEM_PAGES 1
89 // `define MCLK_VCO_MULT 16
90 // DDR3 memory speed grade and density
91  `define sg25 1// `define sg15E 1
92 // `define sg187E 1
93  `define den4096Mb 1
94  `define MCLK_VCO_MULT 16// `define MCLK_VCO_MULT 18
95 // `define MCLK_VCO_MULT 20
96 
97  `define MEMBRIDGE_DEBUG_WRITE 1// Enviroment-dependent options
98  `ifdef IVERILOG
99  `define SIMULATION
100  `define OPEN_SOURCE_ONLY
101  `endif
102 
103  `ifdef COCOTB
104  `define SIMULATION
105  `define OPEN_SOURCE_ONLY
106  `endif
107 
108  `ifdef CVC
109  `define SIMULATION
110  `define OPEN_SOURCE_ONLY
111  `endif // CVC
112 
113 // will not use simultaneous reset in shift registers, just and input data with ~rst
114  `define SHREG_SEQUENTIAL_RESET 1// synthesis does to recognize global clock as G input of the primitive latch
115  `undef INFER_LATCHES
116  // define when using CDC - it does not support them
117  `undef IGNORE_ATTR
118 //`define MEMBRIDGE_DEBUG_READ 1
119  `define use200Mhz 1 `define USE_CMD_ENCOD_TILED_32_RD 1 // chn 0 is read from memory and write to memory
120  `define def_enable_mem_chn0
121  `define def_read_mem_chn0
122  `define def_write_mem_chn0
123  `undef def_scanline_chn0
124  `undef def_tiled_chn0
125 
126  // chn 1 is scanline r+w
127  `define def_enable_mem_chn1
128  `define def_read_mem_chn1
129  `define def_write_mem_chn1
130  `define def_scanline_chn1
131  `undef def_tiled_chn1
132 
133  // chn 2 is tiled r+w
134  `define def_enable_mem_chn2
135  `define def_read_mem_chn2
136  `define def_write_mem_chn2
137  `undef def_scanline_chn2
138  `define def_tiled_chn2
139 
140  // chn 3 is scanline r+w (reuse later)
141  `define def_enable_mem_chn3
142  `define def_read_mem_chn3
143  `define def_write_mem_chn3
144  `define def_scanline_chn3
145  `undef def_tiled_chn3
146 
147  // chn 4 is tiled r+w (reuse later)
148  `define def_enable_mem_chn4
149  `define def_read_mem_chn4
150  `define def_write_mem_chn4
151  `undef def_scanline_chn4
152  `define def_tiled_chn4
154  // chn 5 is disabled
155  `undef def_enable_mem_chn5
156 
157  // chn 6 is disabled
158  `undef def_enable_mem_chn6
159 
160  // chn 7 is disabled
161  `undef def_enable_mem_chn7
162 
163  // chn 8 is scanline w (sensor channel 0)
164  `define def_enable_mem_chn8
165  `undef def_read_mem_chn8
166  `define def_write_mem_chn8
167  `define def_scanline_chn8
168  `undef def_tiled_chn8
169 
170  // chn 9 is scanline w (sensor channel 1)
171  `define def_enable_mem_chn9
172  `undef def_read_mem_chn9
173  `define def_write_mem_chn9
174  `define def_scanline_chn9
175  `undef def_tiled_chn9
176 
177  // chn 10 is scanline w (sensor channel 2)
178  `define def_enable_mem_chn10
179  `undef def_read_mem_chn10
180  `define def_write_mem_chn10
181  `define def_scanline_chn10
182  `undef def_tiled_chn10
183 
184  // chn 11 is scanline w (sensor channel 3)
185  `define def_enable_mem_chn11
186  `undef def_read_mem_chn11
187  `define def_write_mem_chn11
188  `define def_scanline_chn11
189  `undef def_tiled_chn11
190 
191  // chn 12 is tiled read (compressor channel 0)
192  `define def_enable_mem_chn12
193  `define def_read_mem_chn12
194  `undef def_write_mem_chn12
195  `undef def_scanline_chn12
196  `define def_tiled_chn12
197 
198  // chn 12 is tiled read (compressor channel 1)
199  `define def_enable_mem_chn13
200  `define def_read_mem_chn13
201  `undef def_write_mem_chn13
202  `undef def_scanline_chn13
203  `define def_tiled_chn13
204 
205  // chn 12 is tiled read (compressor channel 2)
206  `define def_enable_mem_chn14
207  `define def_read_mem_chn14
208  `undef def_write_mem_chn14
209  `undef def_scanline_chn14
210  `define def_tiled_chn14
211 
212  // chn 12 is tiled read (compressor channel 3)
213  `define def_enable_mem_chn15
214  `define def_read_mem_chn15
215  `undef def_write_mem_chn15
216  `undef def_scanline_chn15
217  `define def_tiled_chn15
218 `endif
219 
220 /*
221  Address/data widths
222  Connect unused data to 1b0, unused addresses - to 1'b1
223 
224  RAMB18E1 in True Dual Port (TDP) Mode - each port individually
225  +-----------+---------+---------+---------+
226  |Data Width | Address | Data | Parity |
227  +-----------+---------+---------+---------+
228  | 1 | A[13:0] | D[0] | --- |
229  | 2 | A[13:1] | D[1:0] | --- |
230  | 4 | A[13:2] | D[3:0[ | --- |
231  | 9 | A[13:3] | D[7:0] | DP[0] |
232  | 18 | A[13:4] | D[15:0] | DP[1:0] |
233  +-----------+---------+---------+---------+
234 
235  RAMB18E1 in Simple Dual Port (SDP) Mode
236  one of the ports (r or w) - 32/36 bits, other - variable
237  +------------+---------+---------+---------+
238  |Data Widths | Address | Data | Parity |
239  +------------+---------+---------+---------+
240  | 32/ 1 | A[13:0] | D[0] | --- |
241  | 32/ 2 | A[13:1] | D[1:0] | --- |
242  | 32/ 4 | A[13:2] | D[3:0[ | --- |
243  | 36/ 9 | A[13:3] | D[7:0] | DP[0] |
244  | 36/ 18 | A[13:4] | D[15:0] | DP[1:0] |
245  | 36/ 36 | A[13:5] | D[31:0] | DP[3:0] |
246  +------------+---------+---------+---------+
247 
248  RAMB36E1 in True Dual Port (TDP) Mode - each port individually
249  +-----------+---------+---------+---------+
250  |Data Width | Address | Data | Parity |
251  +-----------+---------+---------+---------+
252  | 1 | A[14:0] | D[0] | --- |
253  | 2 | A[14:1] | D[1:0] | --- |
254  | 4 | A[14:2] | D[3:0[ | --- |
255  | 9 | A[14:3] | D[7:0] | DP[0] |
256  | 18 | A[14:4] | D[15:0] | DP[1:0] |
257  | 36 | A[14:5] | D[31:0] | DP[3:0] |
258  |1(Cascade) | A[15:0] | D[0] | --- |
259  +-----------+---------+---------+---------+
260 
261  RAMB36E1 in Simple Dual Port (SDP) Mode
262  one of the ports (r or w) - 64/72 bits, other - variable
263  +------------+---------+---------+---------+
264  |Data Widths | Address | Data | Parity |
265  +------------+---------+---------+---------+
266  | 64/ 1 | A[14:0] | D[0] | --- |
267  | 64/ 2 | A[14:1] | D[1:0] | --- |
268  | 64/ 4 | A[14:2] | D[3:0[ | --- |
269  | 64/ 9 | A[14:3] | D[7:0] | DP[0] |
270  | 64/ 18 | A[14:4] | D[15:0] | DP[1:0] |
271  | 64/ 36 | A[14:5] | D[31:0] | DP[3:0] |
272  | 64/ 72 | A[14:6] | D[63:0] | DP[7:0] |
273  +------------+---------+---------+---------+
274 */
275 module ramp_var_w_var_r
276 #(
277  parameter integer REGISTERS = 0, // 1 - registered output
278  parameter integer LOG2WIDTH_WR = 6, // WIDTH= 9 << (LOG2WIDTH - 3)
279  parameter integer LOG2WIDTH_RD = 6, // WIDTH= 9 << (LOG2WIDTH - 3)
280  parameter DUMMY = 0
281 `ifdef PRELOAD_BRAMS
282  , parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
283  parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
284  parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
285  parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
286  parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
287  parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
288  parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
289  parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
290  parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
291  parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
292  parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
293  parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
294  parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
295  parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
296  parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
297  parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
298  parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
299  parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
300  parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
301  parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
302  parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
303  parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
304  parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
305  parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
306  parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
307  parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
308  parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
309  parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
310  parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
311  parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
312  parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
313  parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
314  parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
315  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
316  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
317  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
318  parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
319  parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
320  parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
321  parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
322  parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
323  parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
324  parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
325  parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
326  parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
327  parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
328  parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
329  parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
330  parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
331  parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
332  parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
333  parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
334  parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
335  parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
336  parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
337  parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
338  parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
339  parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
340  parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
341  parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
342  parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
343  parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
344  parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
345  parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
346  parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
347  parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
348  parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
349  parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
350  parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
351  parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
352  parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
353  parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
354  parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
355  parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
356  parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
357  parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
358  parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
359  parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
360  parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
361  parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
362  parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
363  parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
364  parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
365  parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
366  parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
367  parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
368  parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
369  parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
370  parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
371  parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
372  parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
373  parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
374  parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
375  parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
376  parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
377  parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
378  parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
379  parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
380  parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
381  parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
382  parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
383  parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
384  parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
385  parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
386  parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
387  parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
388  parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
389  parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
390  parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
391  parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
392  parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
393  parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
394  parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
395  parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
396  parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
397  parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
398  parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
399  parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
400  parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
401  parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
402  parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
403  parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
404  parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
405  parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
406  parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
407  parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
408  parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
409  parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
410  parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
411  parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
412  parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
413  parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
414  parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
415  parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
416  parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
417  parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
418  parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
419  parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
420  parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
421  parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
422  parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
423  parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
424  parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
425  parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000
427 `endif
428  )
429  (
430  input rclk, // clock for read port
431 // input [ 9:0] raddr, // read address
432  input [14-LOG2WIDTH_RD:0] raddr, // read address
433  input ren, // read port enable
434  input regen, // output register enable
435  output [(9 << (LOG2WIDTH_RD-3))-1:0] data_out, // data out
436 
437  input wclk, // clock for read port
438  input [14-LOG2WIDTH_WR:0] waddr, // write address
439  input we, // write port enable
440  input [ 7:0] web, // write byte enable
441  input [(9 << (LOG2WIDTH_WR-3))-1:0] data_in // data out
442  );
443  generate
444  if (DUMMY)
445  ramp_dummy #(
447  ) ramp_dummy_i (
448  .data_out(data_out)
449  );
450  else if ((LOG2WIDTH_WR == 6) && (LOG2WIDTH_RD == 6))
451  ramp_64w_64r #(
453 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
454 , .INITP_01 (INITP_01)
455 , .INITP_02 (INITP_02)
456 , .INITP_03 (INITP_03)
457 , .INITP_04 (INITP_04)
458 , .INITP_05 (INITP_05)
459 , .INITP_06 (INITP_06)
460 , .INITP_07 (INITP_07)
461 , .INITP_08 (INITP_08)
462 , .INITP_09 (INITP_09)
463 , .INITP_0A (INITP_0A)
464 , .INITP_0B (INITP_0B)
465 , .INITP_0C (INITP_0C)
466 , .INITP_0D (INITP_0D)
467 , .INITP_0E (INITP_0E)
468 , .INITP_0F (INITP_0F)
469 , .INIT_00 (INIT_00)
470 , .INIT_01 (INIT_01)
471 , .INIT_02 (INIT_02)
472 , .INIT_03 (INIT_03)
473 , .INIT_04 (INIT_04)
474 , .INIT_05 (INIT_05)
475 , .INIT_06 (INIT_06)
476 , .INIT_07 (INIT_07)
477 , .INIT_08 (INIT_08)
478 , .INIT_09 (INIT_09)
479 , .INIT_0A (INIT_0A)
480 , .INIT_0B (INIT_0B)
481 , .INIT_0C (INIT_0C)
482 , .INIT_0D (INIT_0D)
483 , .INIT_0E (INIT_0E)
484 , .INIT_0F (INIT_0F)
485 , .INIT_10 (INIT_10)
486 , .INIT_11 (INIT_11)
487 , .INIT_12 (INIT_12)
488 , .INIT_13 (INIT_13)
489 , .INIT_14 (INIT_14)
490 , .INIT_15 (INIT_15)
491 , .INIT_16 (INIT_16)
492 , .INIT_17 (INIT_17)
493 , .INIT_18 (INIT_18)
494 , .INIT_19 (INIT_19)
495 , .INIT_1A (INIT_1A)
496 , .INIT_1B (INIT_1B)
497 , .INIT_1C (INIT_1C)
498 , .INIT_1D (INIT_1D)
499 , .INIT_1E (INIT_1E)
500 , .INIT_1F (INIT_1F)
501 , .INIT_20 (INIT_20)
502 , .INIT_21 (INIT_21)
503 , .INIT_22 (INIT_22)
504 , .INIT_23 (INIT_23)
505 , .INIT_24 (INIT_24)
506 , .INIT_25 (INIT_25)
507 , .INIT_26 (INIT_26)
508 , .INIT_27 (INIT_27)
509 , .INIT_28 (INIT_28)
510 , .INIT_29 (INIT_29)
511 , .INIT_2A (INIT_2A)
512 , .INIT_2B (INIT_2B)
513 , .INIT_2C (INIT_2C)
514 , .INIT_2D (INIT_2D)
515 , .INIT_2E (INIT_2E)
516 , .INIT_2F (INIT_2F)
517 , .INIT_30 (INIT_30)
518 , .INIT_31 (INIT_31)
519 , .INIT_32 (INIT_32)
520 , .INIT_33 (INIT_33)
521 , .INIT_34 (INIT_34)
522 , .INIT_35 (INIT_35)
523 , .INIT_36 (INIT_36)
524 , .INIT_37 (INIT_37)
525 , .INIT_38 (INIT_38)
526 , .INIT_39 (INIT_39)
527 , .INIT_3A (INIT_3A)
528 , .INIT_3B (INIT_3B)
529 , .INIT_3C (INIT_3C)
530 , .INIT_3D (INIT_3D)
531 , .INIT_3E (INIT_3E)
532 , .INIT_3F (INIT_3F)
533 , .INIT_40 (INIT_40)
534 , .INIT_41 (INIT_41)
535 , .INIT_42 (INIT_42)
536 , .INIT_43 (INIT_43)
537 , .INIT_44 (INIT_44)
538 , .INIT_45 (INIT_45)
539 , .INIT_46 (INIT_46)
540 , .INIT_47 (INIT_47)
541 , .INIT_48 (INIT_48)
542 , .INIT_49 (INIT_49)
543 , .INIT_4A (INIT_4A)
544 , .INIT_4B (INIT_4B)
545 , .INIT_4C (INIT_4C)
546 , .INIT_4D (INIT_4D)
547 , .INIT_4E (INIT_4E)
548 , .INIT_4F (INIT_4F)
549 , .INIT_50 (INIT_50)
550 , .INIT_51 (INIT_51)
551 , .INIT_52 (INIT_52)
552 , .INIT_53 (INIT_53)
553 , .INIT_54 (INIT_54)
554 , .INIT_55 (INIT_55)
555 , .INIT_56 (INIT_56)
556 , .INIT_57 (INIT_57)
557 , .INIT_58 (INIT_58)
558 , .INIT_59 (INIT_59)
559 , .INIT_5A (INIT_5A)
560 , .INIT_5B (INIT_5B)
561 , .INIT_5C (INIT_5C)
562 , .INIT_5D (INIT_5D)
563 , .INIT_5E (INIT_5E)
564 , .INIT_5F (INIT_5F)
565 , .INIT_60 (INIT_60)
566 , .INIT_61 (INIT_61)
567 , .INIT_62 (INIT_62)
568 , .INIT_63 (INIT_63)
569 , .INIT_64 (INIT_64)
570 , .INIT_65 (INIT_65)
571 , .INIT_66 (INIT_66)
572 , .INIT_67 (INIT_67)
573 , .INIT_68 (INIT_68)
574 , .INIT_69 (INIT_69)
575 , .INIT_6A (INIT_6A)
576 , .INIT_6B (INIT_6B)
577 , .INIT_6C (INIT_6C)
578 , .INIT_6D (INIT_6D)
579 , .INIT_6E (INIT_6E)
580 , .INIT_6F (INIT_6F)
581 , .INIT_70 (INIT_70)
582 , .INIT_71 (INIT_71)
583 , .INIT_72 (INIT_72)
584 , .INIT_73 (INIT_73)
585 , .INIT_74 (INIT_74)
586 , .INIT_75 (INIT_75)
587 , .INIT_76 (INIT_76)
588 , .INIT_77 (INIT_77)
589 , .INIT_78 (INIT_78)
590 , .INIT_79 (INIT_79)
591 , .INIT_7A (INIT_7A)
592 , .INIT_7B (INIT_7B)
593 , .INIT_7C (INIT_7C)
594 , .INIT_7D (INIT_7D)
595 , .INIT_7E (INIT_7E)
596 , .INIT_7F (INIT_7F)
597 
598 `endif
599  ) ram_i (
600  .rclk (rclk), // input
601  .raddr (raddr), // input[8:0]
602  .ren (ren), // input
603  .regen (regen), // input
604  .data_out (data_out), // output[63:0]
605  .wclk (wclk), // input
606  .waddr (waddr), // input[8:0]
607  .we (we), // input
608  .web (web), // input[7:0]
609  .data_in (data_in) // input[63:0]
610  );
611  else if ((LOG2WIDTH_WR == 6) && (LOG2WIDTH_RD < 6))
613  .REGISTERS (REGISTERS),
615 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
616 , .INITP_01 (INITP_01)
617 , .INITP_02 (INITP_02)
618 , .INITP_03 (INITP_03)
619 , .INITP_04 (INITP_04)
620 , .INITP_05 (INITP_05)
621 , .INITP_06 (INITP_06)
622 , .INITP_07 (INITP_07)
623 , .INITP_08 (INITP_08)
624 , .INITP_09 (INITP_09)
625 , .INITP_0A (INITP_0A)
626 , .INITP_0B (INITP_0B)
627 , .INITP_0C (INITP_0C)
628 , .INITP_0D (INITP_0D)
629 , .INITP_0E (INITP_0E)
630 , .INITP_0F (INITP_0F)
631 , .INIT_00 (INIT_00)
632 , .INIT_01 (INIT_01)
633 , .INIT_02 (INIT_02)
634 , .INIT_03 (INIT_03)
635 , .INIT_04 (INIT_04)
636 , .INIT_05 (INIT_05)
637 , .INIT_06 (INIT_06)
638 , .INIT_07 (INIT_07)
639 , .INIT_08 (INIT_08)
640 , .INIT_09 (INIT_09)
641 , .INIT_0A (INIT_0A)
642 , .INIT_0B (INIT_0B)
643 , .INIT_0C (INIT_0C)
644 , .INIT_0D (INIT_0D)
645 , .INIT_0E (INIT_0E)
646 , .INIT_0F (INIT_0F)
647 , .INIT_10 (INIT_10)
648 , .INIT_11 (INIT_11)
649 , .INIT_12 (INIT_12)
650 , .INIT_13 (INIT_13)
651 , .INIT_14 (INIT_14)
652 , .INIT_15 (INIT_15)
653 , .INIT_16 (INIT_16)
654 , .INIT_17 (INIT_17)
655 , .INIT_18 (INIT_18)
656 , .INIT_19 (INIT_19)
657 , .INIT_1A (INIT_1A)
658 , .INIT_1B (INIT_1B)
659 , .INIT_1C (INIT_1C)
660 , .INIT_1D (INIT_1D)
661 , .INIT_1E (INIT_1E)
662 , .INIT_1F (INIT_1F)
663 , .INIT_20 (INIT_20)
664 , .INIT_21 (INIT_21)
665 , .INIT_22 (INIT_22)
666 , .INIT_23 (INIT_23)
667 , .INIT_24 (INIT_24)
668 , .INIT_25 (INIT_25)
669 , .INIT_26 (INIT_26)
670 , .INIT_27 (INIT_27)
671 , .INIT_28 (INIT_28)
672 , .INIT_29 (INIT_29)
673 , .INIT_2A (INIT_2A)
674 , .INIT_2B (INIT_2B)
675 , .INIT_2C (INIT_2C)
676 , .INIT_2D (INIT_2D)
677 , .INIT_2E (INIT_2E)
678 , .INIT_2F (INIT_2F)
679 , .INIT_30 (INIT_30)
680 , .INIT_31 (INIT_31)
681 , .INIT_32 (INIT_32)
682 , .INIT_33 (INIT_33)
683 , .INIT_34 (INIT_34)
684 , .INIT_35 (INIT_35)
685 , .INIT_36 (INIT_36)
686 , .INIT_37 (INIT_37)
687 , .INIT_38 (INIT_38)
688 , .INIT_39 (INIT_39)
689 , .INIT_3A (INIT_3A)
690 , .INIT_3B (INIT_3B)
691 , .INIT_3C (INIT_3C)
692 , .INIT_3D (INIT_3D)
693 , .INIT_3E (INIT_3E)
694 , .INIT_3F (INIT_3F)
695 , .INIT_40 (INIT_40)
696 , .INIT_41 (INIT_41)
697 , .INIT_42 (INIT_42)
698 , .INIT_43 (INIT_43)
699 , .INIT_44 (INIT_44)
700 , .INIT_45 (INIT_45)
701 , .INIT_46 (INIT_46)
702 , .INIT_47 (INIT_47)
703 , .INIT_48 (INIT_48)
704 , .INIT_49 (INIT_49)
705 , .INIT_4A (INIT_4A)
706 , .INIT_4B (INIT_4B)
707 , .INIT_4C (INIT_4C)
708 , .INIT_4D (INIT_4D)
709 , .INIT_4E (INIT_4E)
710 , .INIT_4F (INIT_4F)
711 , .INIT_50 (INIT_50)
712 , .INIT_51 (INIT_51)
713 , .INIT_52 (INIT_52)
714 , .INIT_53 (INIT_53)
715 , .INIT_54 (INIT_54)
716 , .INIT_55 (INIT_55)
717 , .INIT_56 (INIT_56)
718 , .INIT_57 (INIT_57)
719 , .INIT_58 (INIT_58)
720 , .INIT_59 (INIT_59)
721 , .INIT_5A (INIT_5A)
722 , .INIT_5B (INIT_5B)
723 , .INIT_5C (INIT_5C)
724 , .INIT_5D (INIT_5D)
725 , .INIT_5E (INIT_5E)
726 , .INIT_5F (INIT_5F)
727 , .INIT_60 (INIT_60)
728 , .INIT_61 (INIT_61)
729 , .INIT_62 (INIT_62)
730 , .INIT_63 (INIT_63)
731 , .INIT_64 (INIT_64)
732 , .INIT_65 (INIT_65)
733 , .INIT_66 (INIT_66)
734 , .INIT_67 (INIT_67)
735 , .INIT_68 (INIT_68)
736 , .INIT_69 (INIT_69)
737 , .INIT_6A (INIT_6A)
738 , .INIT_6B (INIT_6B)
739 , .INIT_6C (INIT_6C)
740 , .INIT_6D (INIT_6D)
741 , .INIT_6E (INIT_6E)
742 , .INIT_6F (INIT_6F)
743 , .INIT_70 (INIT_70)
744 , .INIT_71 (INIT_71)
745 , .INIT_72 (INIT_72)
746 , .INIT_73 (INIT_73)
747 , .INIT_74 (INIT_74)
748 , .INIT_75 (INIT_75)
749 , .INIT_76 (INIT_76)
750 , .INIT_77 (INIT_77)
751 , .INIT_78 (INIT_78)
752 , .INIT_79 (INIT_79)
753 , .INIT_7A (INIT_7A)
754 , .INIT_7B (INIT_7B)
755 , .INIT_7C (INIT_7C)
756 , .INIT_7D (INIT_7D)
757 , .INIT_7E (INIT_7E)
758 , .INIT_7F (INIT_7F)
759 
760 `endif
761  ) ram_i (
762  .rclk (rclk), // input
763  .raddr (raddr), // input[(>8):0]
764  .ren (ren), // input
765  .regen (regen), // input
766  .data_out (data_out), // output[(<32):0]
767  .wclk (wclk), // input
768  .waddr (waddr), // input[8:0]
769  .we (we), // input
770  .web (web), // input[7:0]
771  .data_in (data_in) // input[63:0]
772  );
773  else if ((LOG2WIDTH_WR < 6) && (LOG2WIDTH_RD == 6))
774  ramp_lt64w_64r #(
775  .REGISTERS (REGISTERS),
777 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
778 , .INITP_01 (INITP_01)
779 , .INITP_02 (INITP_02)
780 , .INITP_03 (INITP_03)
781 , .INITP_04 (INITP_04)
782 , .INITP_05 (INITP_05)
783 , .INITP_06 (INITP_06)
784 , .INITP_07 (INITP_07)
785 , .INITP_08 (INITP_08)
786 , .INITP_09 (INITP_09)
787 , .INITP_0A (INITP_0A)
788 , .INITP_0B (INITP_0B)
789 , .INITP_0C (INITP_0C)
790 , .INITP_0D (INITP_0D)
791 , .INITP_0E (INITP_0E)
792 , .INITP_0F (INITP_0F)
793 , .INIT_00 (INIT_00)
794 , .INIT_01 (INIT_01)
795 , .INIT_02 (INIT_02)
796 , .INIT_03 (INIT_03)
797 , .INIT_04 (INIT_04)
798 , .INIT_05 (INIT_05)
799 , .INIT_06 (INIT_06)
800 , .INIT_07 (INIT_07)
801 , .INIT_08 (INIT_08)
802 , .INIT_09 (INIT_09)
803 , .INIT_0A (INIT_0A)
804 , .INIT_0B (INIT_0B)
805 , .INIT_0C (INIT_0C)
806 , .INIT_0D (INIT_0D)
807 , .INIT_0E (INIT_0E)
808 , .INIT_0F (INIT_0F)
809 , .INIT_10 (INIT_10)
810 , .INIT_11 (INIT_11)
811 , .INIT_12 (INIT_12)
812 , .INIT_13 (INIT_13)
813 , .INIT_14 (INIT_14)
814 , .INIT_15 (INIT_15)
815 , .INIT_16 (INIT_16)
816 , .INIT_17 (INIT_17)
817 , .INIT_18 (INIT_18)
818 , .INIT_19 (INIT_19)
819 , .INIT_1A (INIT_1A)
820 , .INIT_1B (INIT_1B)
821 , .INIT_1C (INIT_1C)
822 , .INIT_1D (INIT_1D)
823 , .INIT_1E (INIT_1E)
824 , .INIT_1F (INIT_1F)
825 , .INIT_20 (INIT_20)
826 , .INIT_21 (INIT_21)
827 , .INIT_22 (INIT_22)
828 , .INIT_23 (INIT_23)
829 , .INIT_24 (INIT_24)
830 , .INIT_25 (INIT_25)
831 , .INIT_26 (INIT_26)
832 , .INIT_27 (INIT_27)
833 , .INIT_28 (INIT_28)
834 , .INIT_29 (INIT_29)
835 , .INIT_2A (INIT_2A)
836 , .INIT_2B (INIT_2B)
837 , .INIT_2C (INIT_2C)
838 , .INIT_2D (INIT_2D)
839 , .INIT_2E (INIT_2E)
840 , .INIT_2F (INIT_2F)
841 , .INIT_30 (INIT_30)
842 , .INIT_31 (INIT_31)
843 , .INIT_32 (INIT_32)
844 , .INIT_33 (INIT_33)
845 , .INIT_34 (INIT_34)
846 , .INIT_35 (INIT_35)
847 , .INIT_36 (INIT_36)
848 , .INIT_37 (INIT_37)
849 , .INIT_38 (INIT_38)
850 , .INIT_39 (INIT_39)
851 , .INIT_3A (INIT_3A)
852 , .INIT_3B (INIT_3B)
853 , .INIT_3C (INIT_3C)
854 , .INIT_3D (INIT_3D)
855 , .INIT_3E (INIT_3E)
856 , .INIT_3F (INIT_3F)
857 , .INIT_40 (INIT_40)
858 , .INIT_41 (INIT_41)
859 , .INIT_42 (INIT_42)
860 , .INIT_43 (INIT_43)
861 , .INIT_44 (INIT_44)
862 , .INIT_45 (INIT_45)
863 , .INIT_46 (INIT_46)
864 , .INIT_47 (INIT_47)
865 , .INIT_48 (INIT_48)
866 , .INIT_49 (INIT_49)
867 , .INIT_4A (INIT_4A)
868 , .INIT_4B (INIT_4B)
869 , .INIT_4C (INIT_4C)
870 , .INIT_4D (INIT_4D)
871 , .INIT_4E (INIT_4E)
872 , .INIT_4F (INIT_4F)
873 , .INIT_50 (INIT_50)
874 , .INIT_51 (INIT_51)
875 , .INIT_52 (INIT_52)
876 , .INIT_53 (INIT_53)
877 , .INIT_54 (INIT_54)
878 , .INIT_55 (INIT_55)
879 , .INIT_56 (INIT_56)
880 , .INIT_57 (INIT_57)
881 , .INIT_58 (INIT_58)
882 , .INIT_59 (INIT_59)
883 , .INIT_5A (INIT_5A)
884 , .INIT_5B (INIT_5B)
885 , .INIT_5C (INIT_5C)
886 , .INIT_5D (INIT_5D)
887 , .INIT_5E (INIT_5E)
888 , .INIT_5F (INIT_5F)
889 , .INIT_60 (INIT_60)
890 , .INIT_61 (INIT_61)
891 , .INIT_62 (INIT_62)
892 , .INIT_63 (INIT_63)
893 , .INIT_64 (INIT_64)
894 , .INIT_65 (INIT_65)
895 , .INIT_66 (INIT_66)
896 , .INIT_67 (INIT_67)
897 , .INIT_68 (INIT_68)
898 , .INIT_69 (INIT_69)
899 , .INIT_6A (INIT_6A)
900 , .INIT_6B (INIT_6B)
901 , .INIT_6C (INIT_6C)
902 , .INIT_6D (INIT_6D)
903 , .INIT_6E (INIT_6E)
904 , .INIT_6F (INIT_6F)
905 , .INIT_70 (INIT_70)
906 , .INIT_71 (INIT_71)
907 , .INIT_72 (INIT_72)
908 , .INIT_73 (INIT_73)
909 , .INIT_74 (INIT_74)
910 , .INIT_75 (INIT_75)
911 , .INIT_76 (INIT_76)
912 , .INIT_77 (INIT_77)
913 , .INIT_78 (INIT_78)
914 , .INIT_79 (INIT_79)
915 , .INIT_7A (INIT_7A)
916 , .INIT_7B (INIT_7B)
917 , .INIT_7C (INIT_7C)
918 , .INIT_7D (INIT_7D)
919 , .INIT_7E (INIT_7E)
920 , .INIT_7F (INIT_7F)
921 
922 `endif
923  ) ram_i (
924  .rclk (rclk), // input
925  .raddr (raddr), // input[8:0]
926  .ren (ren), // input
927  .regen (regen), // input
928  .data_out (data_out), // output[63:0]
929  .wclk (wclk), // input
930  .waddr (waddr), // input[(>8):0]
931  .we (we), // input
932  .web (web), // input[7:0]
933  .data_in (data_in) // input[(<32):0]
934  );
935  else if ((LOG2WIDTH_WR < 6) && (LOG2WIDTH_RD < 6))
937  .REGISTERS (REGISTERS),
940 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
941 , .INITP_01 (INITP_01)
942 , .INITP_02 (INITP_02)
943 , .INITP_03 (INITP_03)
944 , .INITP_04 (INITP_04)
945 , .INITP_05 (INITP_05)
946 , .INITP_06 (INITP_06)
947 , .INITP_07 (INITP_07)
948 , .INITP_08 (INITP_08)
949 , .INITP_09 (INITP_09)
950 , .INITP_0A (INITP_0A)
951 , .INITP_0B (INITP_0B)
952 , .INITP_0C (INITP_0C)
953 , .INITP_0D (INITP_0D)
954 , .INITP_0E (INITP_0E)
955 , .INITP_0F (INITP_0F)
956 , .INIT_00 (INIT_00)
957 , .INIT_01 (INIT_01)
958 , .INIT_02 (INIT_02)
959 , .INIT_03 (INIT_03)
960 , .INIT_04 (INIT_04)
961 , .INIT_05 (INIT_05)
962 , .INIT_06 (INIT_06)
963 , .INIT_07 (INIT_07)
964 , .INIT_08 (INIT_08)
965 , .INIT_09 (INIT_09)
966 , .INIT_0A (INIT_0A)
967 , .INIT_0B (INIT_0B)
968 , .INIT_0C (INIT_0C)
969 , .INIT_0D (INIT_0D)
970 , .INIT_0E (INIT_0E)
971 , .INIT_0F (INIT_0F)
972 , .INIT_10 (INIT_10)
973 , .INIT_11 (INIT_11)
974 , .INIT_12 (INIT_12)
975 , .INIT_13 (INIT_13)
976 , .INIT_14 (INIT_14)
977 , .INIT_15 (INIT_15)
978 , .INIT_16 (INIT_16)
979 , .INIT_17 (INIT_17)
980 , .INIT_18 (INIT_18)
981 , .INIT_19 (INIT_19)
982 , .INIT_1A (INIT_1A)
983 , .INIT_1B (INIT_1B)
984 , .INIT_1C (INIT_1C)
985 , .INIT_1D (INIT_1D)
986 , .INIT_1E (INIT_1E)
987 , .INIT_1F (INIT_1F)
988 , .INIT_20 (INIT_20)
989 , .INIT_21 (INIT_21)
990 , .INIT_22 (INIT_22)
991 , .INIT_23 (INIT_23)
992 , .INIT_24 (INIT_24)
993 , .INIT_25 (INIT_25)
994 , .INIT_26 (INIT_26)
995 , .INIT_27 (INIT_27)
996 , .INIT_28 (INIT_28)
997 , .INIT_29 (INIT_29)
998 , .INIT_2A (INIT_2A)
999 , .INIT_2B (INIT_2B)
1000 , .INIT_2C (INIT_2C)
1001 , .INIT_2D (INIT_2D)
1002 , .INIT_2E (INIT_2E)
1003 , .INIT_2F (INIT_2F)
1004 , .INIT_30 (INIT_30)
1005 , .INIT_31 (INIT_31)
1006 , .INIT_32 (INIT_32)
1007 , .INIT_33 (INIT_33)
1008 , .INIT_34 (INIT_34)
1009 , .INIT_35 (INIT_35)
1010 , .INIT_36 (INIT_36)
1011 , .INIT_37 (INIT_37)
1012 , .INIT_38 (INIT_38)
1013 , .INIT_39 (INIT_39)
1014 , .INIT_3A (INIT_3A)
1015 , .INIT_3B (INIT_3B)
1016 , .INIT_3C (INIT_3C)
1017 , .INIT_3D (INIT_3D)
1018 , .INIT_3E (INIT_3E)
1019 , .INIT_3F (INIT_3F)
1020 , .INIT_40 (INIT_40)
1021 , .INIT_41 (INIT_41)
1022 , .INIT_42 (INIT_42)
1023 , .INIT_43 (INIT_43)
1024 , .INIT_44 (INIT_44)
1025 , .INIT_45 (INIT_45)
1026 , .INIT_46 (INIT_46)
1027 , .INIT_47 (INIT_47)
1028 , .INIT_48 (INIT_48)
1029 , .INIT_49 (INIT_49)
1030 , .INIT_4A (INIT_4A)
1031 , .INIT_4B (INIT_4B)
1032 , .INIT_4C (INIT_4C)
1033 , .INIT_4D (INIT_4D)
1034 , .INIT_4E (INIT_4E)
1035 , .INIT_4F (INIT_4F)
1036 , .INIT_50 (INIT_50)
1037 , .INIT_51 (INIT_51)
1038 , .INIT_52 (INIT_52)
1039 , .INIT_53 (INIT_53)
1040 , .INIT_54 (INIT_54)
1041 , .INIT_55 (INIT_55)
1042 , .INIT_56 (INIT_56)
1043 , .INIT_57 (INIT_57)
1044 , .INIT_58 (INIT_58)
1045 , .INIT_59 (INIT_59)
1046 , .INIT_5A (INIT_5A)
1047 , .INIT_5B (INIT_5B)
1048 , .INIT_5C (INIT_5C)
1049 , .INIT_5D (INIT_5D)
1050 , .INIT_5E (INIT_5E)
1051 , .INIT_5F (INIT_5F)
1052 , .INIT_60 (INIT_60)
1053 , .INIT_61 (INIT_61)
1054 , .INIT_62 (INIT_62)
1055 , .INIT_63 (INIT_63)
1056 , .INIT_64 (INIT_64)
1057 , .INIT_65 (INIT_65)
1058 , .INIT_66 (INIT_66)
1059 , .INIT_67 (INIT_67)
1060 , .INIT_68 (INIT_68)
1061 , .INIT_69 (INIT_69)
1062 , .INIT_6A (INIT_6A)
1063 , .INIT_6B (INIT_6B)
1064 , .INIT_6C (INIT_6C)
1065 , .INIT_6D (INIT_6D)
1066 , .INIT_6E (INIT_6E)
1067 , .INIT_6F (INIT_6F)
1068 , .INIT_70 (INIT_70)
1069 , .INIT_71 (INIT_71)
1070 , .INIT_72 (INIT_72)
1071 , .INIT_73 (INIT_73)
1072 , .INIT_74 (INIT_74)
1073 , .INIT_75 (INIT_75)
1074 , .INIT_76 (INIT_76)
1075 , .INIT_77 (INIT_77)
1076 , .INIT_78 (INIT_78)
1077 , .INIT_79 (INIT_79)
1078 , .INIT_7A (INIT_7A)
1079 , .INIT_7B (INIT_7B)
1080 , .INIT_7C (INIT_7C)
1081 , .INIT_7D (INIT_7D)
1082 , .INIT_7E (INIT_7E)
1083 , .INIT_7F (INIT_7F)
1084 
1085 `endif
1086  ) ram_i (
1087  .rclk (rclk), // input
1088  .raddr (raddr), // input[(>8):0]
1089  .ren (ren), // input
1090  .regen (regen), // input
1091  .data_out (data_out), // output[(<32):0]
1092  .wclk (wclk), // input
1093  .waddr (waddr), // input[(>8):0]
1094  .we (we), // input
1095  .web (web), // input[7:0]
1096  .data_in (data_in) // input[(<32):0]
1097  );
1098  endgenerate
1099 endmodule
1100 
1101 // Both ports with 64 bit widths
1102 module ramp_64w_64r
1103 #(
1104  parameter integer REGISTERS = 0 // 1 - registered output
1105 `ifdef PRELOAD_BRAMS
1106  , parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1107  parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1108  parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1109  parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1110  parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1111  parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1112  parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1113  parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1114  parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1115  parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1116  parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1117  parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1118  parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1119  parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1120  parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1121  parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1122  parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1123  parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1124  parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1125  parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1126  parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1127  parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1128  parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1129  parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1130  parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1131  parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1132  parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1133  parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1134  parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1135  parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1136  parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1137  parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1138  parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1139  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1140  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1141  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1142  parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1143  parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1144  parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1145  parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1146  parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1147  parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1148  parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1149  parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1150  parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1151  parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1152  parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1153  parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1154  parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1155  parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1156  parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1157  parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1158  parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1159  parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1160  parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1161  parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1162  parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1163  parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1164  parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1165  parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1166  parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1167  parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1168  parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1169  parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1170  parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1171  parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1172  parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1173  parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1174  parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1175  parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1176  parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1177  parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1178  parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1179  parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1180  parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1181  parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1182  parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1183  parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1184  parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1185  parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1186  parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1187  parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1188  parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1189  parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1190  parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1191  parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1192  parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1193  parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1194  parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1195  parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1196  parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1197  parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1198  parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1199  parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1200  parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1201  parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1202  parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1203  parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1204  parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1205  parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1206  parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1207  parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1208  parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1209  parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1210  parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1211  parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1212  parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1213  parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1214  parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1215  parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1216  parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1217  parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1218  parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1219  parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1220  parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1221  parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1222  parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1223  parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1224  parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1225  parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1226  parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1227  parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1228  parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1229  parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1230  parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1231  parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1232  parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1233  parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1234  parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1235  parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1236  parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1237  parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1238  parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1239  parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1240  parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1241  parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1242  parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1243  parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1244  parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1245  parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1246  parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1247  parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1248  parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1249  parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000
1250 
1251 `endif
1252  )
1253  (
1254  input rclk, // clock for read port
1255  input [8:0] raddr, // read address
1256  input ren, // read port enable
1257  input regen, // output register enable
1258  output [71:0] data_out, // data out
1259 
1260  input wclk, // clock for read port
1261  input [ 8:0] waddr, // write address
1262  input we, // write port enable
1263  input [ 7:0] web, // write byte enable
1264  input [71:0] data_in // data out
1265  );
1266 
1267  localparam PWIDTH_WR=72;
1268  localparam PWIDTH_RD=72;
1269 
1270  RAMB36E1
1271  #(
1272  .RSTREG_PRIORITY_A ("RSTREG"), // Valid: "RSTREG" or "REGCE"
1273  .RSTREG_PRIORITY_B ("RSTREG"), // Valid: "RSTREG" or "REGCE"
1274  .DOA_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
1275  .DOB_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
1276  .RAM_EXTENSION_A ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
1277  .RAM_EXTENSION_B ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
1278  .READ_WIDTH_A (PWIDTH_RD), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1279  .READ_WIDTH_B (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1280  .WRITE_WIDTH_A (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1281  .WRITE_WIDTH_B (PWIDTH_WR), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1282  .RAM_MODE ("SDP"), // Valid "TDP" (true dual-port) and "SDP" - simple dual-port
1283  .WRITE_MODE_A ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
1284  .WRITE_MODE_B ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
1285  .RDADDR_COLLISION_HWCONFIG ("DELAYED_WRITE"),// Valid: "DELAYED_WRITE","PERFORMANCE" (no access to the same page)
1286  .SIM_COLLISION_CHECK ("ALL"), // Valid: "ALL", "GENERATE_X_ONLY", "NONE", and "WARNING_ONLY"
1287  .INIT_FILE ("NONE"), // "NONE" or filename with initialization data
1288  .SIM_DEVICE ("7SERIES"), // Simulation device family - "VIRTEX6", "VIRTEX5" and "7_SERIES" // "7SERIES"
1289  .EN_ECC_READ ("FALSE"), // Valid:"FALSE","TRUE" (ECC decoder circuitry)
1290  .EN_ECC_WRITE ("FALSE") // Valid:"FALSE","TRUE" (ECC decoder circuitry)
1291 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
1292 , .INITP_01 (INITP_01)
1293 , .INITP_02 (INITP_02)
1294 , .INITP_03 (INITP_03)
1295 , .INITP_04 (INITP_04)
1296 , .INITP_05 (INITP_05)
1297 , .INITP_06 (INITP_06)
1298 , .INITP_07 (INITP_07)
1299 , .INITP_08 (INITP_08)
1300 , .INITP_09 (INITP_09)
1301 , .INITP_0A (INITP_0A)
1302 , .INITP_0B (INITP_0B)
1303 , .INITP_0C (INITP_0C)
1304 , .INITP_0D (INITP_0D)
1305 , .INITP_0E (INITP_0E)
1306 , .INITP_0F (INITP_0F)
1307 , .INIT_00 (INIT_00)
1308 , .INIT_01 (INIT_01)
1309 , .INIT_02 (INIT_02)
1310 , .INIT_03 (INIT_03)
1311 , .INIT_04 (INIT_04)
1312 , .INIT_05 (INIT_05)
1313 , .INIT_06 (INIT_06)
1314 , .INIT_07 (INIT_07)
1315 , .INIT_08 (INIT_08)
1316 , .INIT_09 (INIT_09)
1317 , .INIT_0A (INIT_0A)
1318 , .INIT_0B (INIT_0B)
1319 , .INIT_0C (INIT_0C)
1320 , .INIT_0D (INIT_0D)
1321 , .INIT_0E (INIT_0E)
1322 , .INIT_0F (INIT_0F)
1323 , .INIT_10 (INIT_10)
1324 , .INIT_11 (INIT_11)
1325 , .INIT_12 (INIT_12)
1326 , .INIT_13 (INIT_13)
1327 , .INIT_14 (INIT_14)
1328 , .INIT_15 (INIT_15)
1329 , .INIT_16 (INIT_16)
1330 , .INIT_17 (INIT_17)
1331 , .INIT_18 (INIT_18)
1332 , .INIT_19 (INIT_19)
1333 , .INIT_1A (INIT_1A)
1334 , .INIT_1B (INIT_1B)
1335 , .INIT_1C (INIT_1C)
1336 , .INIT_1D (INIT_1D)
1337 , .INIT_1E (INIT_1E)
1338 , .INIT_1F (INIT_1F)
1339 , .INIT_20 (INIT_20)
1340 , .INIT_21 (INIT_21)
1341 , .INIT_22 (INIT_22)
1342 , .INIT_23 (INIT_23)
1343 , .INIT_24 (INIT_24)
1344 , .INIT_25 (INIT_25)
1345 , .INIT_26 (INIT_26)
1346 , .INIT_27 (INIT_27)
1347 , .INIT_28 (INIT_28)
1348 , .INIT_29 (INIT_29)
1349 , .INIT_2A (INIT_2A)
1350 , .INIT_2B (INIT_2B)
1351 , .INIT_2C (INIT_2C)
1352 , .INIT_2D (INIT_2D)
1353 , .INIT_2E (INIT_2E)
1354 , .INIT_2F (INIT_2F)
1355 , .INIT_30 (INIT_30)
1356 , .INIT_31 (INIT_31)
1357 , .INIT_32 (INIT_32)
1358 , .INIT_33 (INIT_33)
1359 , .INIT_34 (INIT_34)
1360 , .INIT_35 (INIT_35)
1361 , .INIT_36 (INIT_36)
1362 , .INIT_37 (INIT_37)
1363 , .INIT_38 (INIT_38)
1364 , .INIT_39 (INIT_39)
1365 , .INIT_3A (INIT_3A)
1366 , .INIT_3B (INIT_3B)
1367 , .INIT_3C (INIT_3C)
1368 , .INIT_3D (INIT_3D)
1369 , .INIT_3E (INIT_3E)
1370 , .INIT_3F (INIT_3F)
1371 , .INIT_40 (INIT_40)
1372 , .INIT_41 (INIT_41)
1373 , .INIT_42 (INIT_42)
1374 , .INIT_43 (INIT_43)
1375 , .INIT_44 (INIT_44)
1376 , .INIT_45 (INIT_45)
1377 , .INIT_46 (INIT_46)
1378 , .INIT_47 (INIT_47)
1379 , .INIT_48 (INIT_48)
1380 , .INIT_49 (INIT_49)
1381 , .INIT_4A (INIT_4A)
1382 , .INIT_4B (INIT_4B)
1383 , .INIT_4C (INIT_4C)
1384 , .INIT_4D (INIT_4D)
1385 , .INIT_4E (INIT_4E)
1386 , .INIT_4F (INIT_4F)
1387 , .INIT_50 (INIT_50)
1388 , .INIT_51 (INIT_51)
1389 , .INIT_52 (INIT_52)
1390 , .INIT_53 (INIT_53)
1391 , .INIT_54 (INIT_54)
1392 , .INIT_55 (INIT_55)
1393 , .INIT_56 (INIT_56)
1394 , .INIT_57 (INIT_57)
1395 , .INIT_58 (INIT_58)
1396 , .INIT_59 (INIT_59)
1397 , .INIT_5A (INIT_5A)
1398 , .INIT_5B (INIT_5B)
1399 , .INIT_5C (INIT_5C)
1400 , .INIT_5D (INIT_5D)
1401 , .INIT_5E (INIT_5E)
1402 , .INIT_5F (INIT_5F)
1403 , .INIT_60 (INIT_60)
1404 , .INIT_61 (INIT_61)
1405 , .INIT_62 (INIT_62)
1406 , .INIT_63 (INIT_63)
1407 , .INIT_64 (INIT_64)
1408 , .INIT_65 (INIT_65)
1409 , .INIT_66 (INIT_66)
1410 , .INIT_67 (INIT_67)
1411 , .INIT_68 (INIT_68)
1412 , .INIT_69 (INIT_69)
1413 , .INIT_6A (INIT_6A)
1414 , .INIT_6B (INIT_6B)
1415 , .INIT_6C (INIT_6C)
1416 , .INIT_6D (INIT_6D)
1417 , .INIT_6E (INIT_6E)
1418 , .INIT_6F (INIT_6F)
1419 , .INIT_70 (INIT_70)
1420 , .INIT_71 (INIT_71)
1421 , .INIT_72 (INIT_72)
1422 , .INIT_73 (INIT_73)
1423 , .INIT_74 (INIT_74)
1424 , .INIT_75 (INIT_75)
1425 , .INIT_76 (INIT_76)
1426 , .INIT_77 (INIT_77)
1427 , .INIT_78 (INIT_78)
1428 , .INIT_79 (INIT_79)
1429 , .INIT_7A (INIT_7A)
1430 , .INIT_7B (INIT_7B)
1431 , .INIT_7C (INIT_7C)
1432 , .INIT_7D (INIT_7D)
1433 , .INIT_7E (INIT_7E)
1434 , .INIT_7F (INIT_7F)
1435 
1436 `endif
1437  ) RAMB36E1_i
1438  (
1439  // Port A (Read port in SDP mode):
1440  .DOADO (data_out[31:0]), // Port A data/LSB data[31:0], output
1441  .DOPADOP (data_out[35:32]),// Port A parity/LSB parity[3:0], output
1442  .DIADI (data_in[31:0]), // Port A data/LSB data[31:0], input
1443  .DIPADIP (data_in[35:32]), // Port A parity/LSB parity[3:0], input
1444  .ADDRARDADDR ({1'b1,raddr[8:0],6'b111111}), // Port A (read port in SDP) address [15:0]. used from [14] down, unused should be high, input
1445  .CLKARDCLK (rclk), // Port A (read port in SDP) clock, input
1446  .ENARDEN (ren), // Port A (read port in SDP) Enable, input
1447  .REGCEAREGCE (regen), // Port A (read port in SDP) register enable, input
1448  .RSTRAMARSTRAM (1'b0), // Port A (read port in SDP) set/reset, input
1449  .RSTREGARSTREG (1'b0), // Port A (read port in SDP) register set/reset, input
1450  .WEA (4'b0), // Port A (read port in SDP) Write Enable[3:0], input
1451  // Port B
1452  .DOBDO (data_out[67:36]),// Port B data/MSB data[31:0], output
1453  .DOPBDOP (data_out[71:68]), // Port B parity/MSB parity[3:0], output
1454  .DIBDI (data_in[67:36]), // Port B data/MSB data[31:0], input
1455  .DIPBDIP (data_in[71:68]), // Port B parity/MSB parity[3:0], input
1456  .ADDRBWRADDR ({1'b1,waddr[8:0],6'b111111}), // Port B (write port in SDP) address [15:0]. used from [14] down, unused should be high, input
1457  .CLKBWRCLK (wclk), // Port B (write port in SDP) clock, input
1458  .ENBWREN (we), // Port B (write port in SDP) Enable, input
1459  .REGCEB (1'b0), // Port B (write port in SDP) register enable, input
1460  .RSTRAMB (1'b0), // Port B (write port in SDP) set/reset, input
1461  .RSTREGB (1'b0), // Port B (write port in SDP) register set/reset, input
1462  .WEBWE (web), // Port B (write port in SDP) Write Enable[7:0], input
1463  // Error correction circuitry
1464  .SBITERR (), // Single bit error status, output
1465  .DBITERR (), // Double bit error status, output
1466  .ECCPARITY (), // Genearted error correction parity [7:0], output
1467  .RDADDRECC (), // ECC read address[8:0], output
1468  .INJECTSBITERR (1'b0), // inject a single-bit error, input
1469  .INJECTDBITERR (1'b0), // inject a double-bit error, input
1470  // Cascade signals to create 64Kx1
1471  .CASCADEOUTA (), // A-port cascade, output
1472  .CASCADEOUTB (), // B-port cascade, output
1473  .CASCADEINA (1'b0), // A-port cascade, input
1474  .CASCADEINB (1'b0) // B-port cascade, input
1475  );
1476 
1477 endmodule
1478 
1479 // Both ports with less than 64 bit widths - TODO: see if it is still possible to use SDP
1480 
1481 module ramp_lt64w_lt64r
1482 #(
1483  parameter integer REGISTERS = 0, // 1 - registered output
1484  parameter integer LOG2WIDTH_WR = 5, // WIDTH= 1 << LOG2WIDTH
1485  parameter integer LOG2WIDTH_RD = 5 // WIDTH= 1 << LOG2WIDTH
1486 `ifdef PRELOAD_BRAMS
1487  , parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1488  parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1489  parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1490  parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1491  parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1492  parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1493  parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1494  parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1495  parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1496  parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1497  parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1498  parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1499  parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1500  parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1501  parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1502  parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1503  parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1504  parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1505  parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1506  parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1507  parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1508  parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1509  parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1510  parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1511  parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1512  parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1513  parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1514  parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1515  parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1516  parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1517  parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1518  parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1519  parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1520  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1521  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1522  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1523  parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1524  parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1525  parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1526  parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1527  parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1528  parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1529  parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1530  parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1531  parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1532  parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1533  parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1534  parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1535  parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1536  parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1537  parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1538  parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1539  parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1540  parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1541  parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1542  parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1543  parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1544  parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1545  parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1546  parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1547  parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1548  parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1549  parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1550  parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1551  parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1552  parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1553  parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1554  parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1555  parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1556  parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1557  parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1558  parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1559  parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1560  parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1561  parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1562  parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1563  parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1564  parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1565  parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1566  parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1567  parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1568  parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1569  parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1570  parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1571  parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1572  parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1573  parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1574  parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1575  parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1576  parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1577  parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1578  parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1579  parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1580  parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1581  parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1582  parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1583  parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1584  parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1585  parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1586  parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1587  parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1588  parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1589  parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1590  parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1591  parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1592  parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1593  parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1594  parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1595  parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1596  parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1597  parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1598  parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1599  parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1600  parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1601  parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1602  parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1603  parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1604  parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1605  parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1606  parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1607  parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1608  parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1609  parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1610  parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1611  parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1612  parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1613  parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1614  parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1615  parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1616  parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1617  parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1618  parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1619  parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1620  parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1621  parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1622  parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1623  parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1624  parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1625  parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1626  parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1627  parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1628  parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1629  parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1630  parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000
1631 
1632 `endif
1633  )
1634  (
1635  input rclk, // clock for read port
1636 // input [ 9:0] raddr, // read address
1637  input [14-LOG2WIDTH_RD:0] raddr, // read address
1638  input ren, // read port enable
1639  input regen, // output register enable
1640  output [(9 << (LOG2WIDTH_RD-3))-1:0] data_out, // data out
1641 
1642  input wclk, // clock for read port
1643  input [14-LOG2WIDTH_WR:0] waddr, // write address
1644  input we, // write port enable
1645  input [ 7:0] web, // write byte enable
1646  input [(9 << (LOG2WIDTH_WR-3))-1:0] data_in // data out
1647  );
1648 
1649  localparam PWIDTH_WR = (LOG2WIDTH_WR > 2)? (9 << (LOG2WIDTH_WR - 3)): (1 << LOG2WIDTH_WR);
1650  localparam PWIDTH_RD = (LOG2WIDTH_RD > 2)? (9 << (LOG2WIDTH_RD - 3)): (1 << LOG2WIDTH_RD);
1651  localparam WIDTH_WR = 1 << LOG2WIDTH_WR;
1652  localparam WIDTH_WRP = 1 << (LOG2WIDTH_WR-3);
1653  localparam WIDTH_RD = 1 << LOG2WIDTH_RD;
1654  localparam WIDTH_RDP = 1 << (LOG2WIDTH_RD-3);
1655 
1656  wire [31:0] data_out32;
1657  wire [ 3:0] datap_out4;
1658  assign data_out={datap_out4[WIDTH_RDP-1:0], data_out32[WIDTH_RD-1:0]};
1659 
1660  wire [WIDTH_WR+31:0] data_in_ext = {32'b0,data_in[WIDTH_WR-1:0]};
1661  wire [31:0] data_in32=data_in_ext[31:0];
1662  wire [WIDTH_WRP+3:0] datap_in_ext = {4'b0,data_in[WIDTH_WR+:WIDTH_WRP]};
1663  wire [3:0] datap_in4= datap_in_ext[3:0];
1664 
1665  RAMB36E1
1666  #(
1667  .RSTREG_PRIORITY_A ("RSTREG"), // Valid: "RSTREG" or "REGCE"
1668  .RSTREG_PRIORITY_B ("RSTREG"), // Valid: "RSTREG" or "REGCE"
1669  .DOA_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
1670  .DOB_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
1671  .RAM_EXTENSION_A ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
1672  .RAM_EXTENSION_B ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
1673  .READ_WIDTH_A (PWIDTH_RD), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1674  .READ_WIDTH_B (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1675  .WRITE_WIDTH_A (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1676  .WRITE_WIDTH_B (PWIDTH_WR), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
1677  .RAM_MODE ("TDP"), // Valid "TDP" (true dual-port) and "SDP" - simple dual-port
1678  .WRITE_MODE_A ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
1679  .WRITE_MODE_B ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
1680  .RDADDR_COLLISION_HWCONFIG ("DELAYED_WRITE"),// Valid: "DELAYED_WRITE","PERFORMANCE" (no access to the same page)
1681  .SIM_COLLISION_CHECK ("ALL"), // Valid: "ALL", "GENERATE_X_ONLY", "NONE", and "WARNING_ONLY"
1682  .INIT_FILE ("NONE"), // "NONE" or filename with initialization data
1683  .SIM_DEVICE ("7SERIES"), // Simulation device family - "VIRTEX6", "VIRTEX5" and "7_SERIES" // "7SERIES"
1684 
1685  .EN_ECC_READ ("FALSE"), // Valid:"FALSE","TRUE" (ECC decoder circuitry)
1686  .EN_ECC_WRITE ("FALSE") // Valid:"FALSE","TRUE" (ECC decoder circuitry)
1687 // .INIT_A(36'h0), // Output latches initialization data
1688 // .INIT_B(36'h0), // Output latches initialization data
1689 // .SRVAL_A(36'h0), // Output latches initialization data (copied at when RSTRAM/RSTREG activated)
1690 // .SRVAL_B(36'h0) // Output latches initialization data (copied at when RSTRAM/RSTREG activated)
1691 /*
1692  parameter IS_CLKARDCLK_INVERTED = 1'b0;
1693  parameter IS_CLKBWRCLK_INVERTED = 1'b0;
1694  parameter IS_ENARDEN_INVERTED = 1'b0;
1695  parameter IS_ENBWREN_INVERTED = 1'b0;
1696  parameter IS_RSTRAMARSTRAM_INVERTED = 1'b0;
1697  parameter IS_RSTRAMB_INVERTED = 1'b0;
1698  parameter IS_RSTREGARSTREG_INVERTED = 1'b0;
1699  parameter IS_RSTREGB_INVERTED = 1'b0;
1700 */
1701 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
1702 , .INITP_01 (INITP_01)
1703 , .INITP_02 (INITP_02)
1704 , .INITP_03 (INITP_03)
1705 , .INITP_04 (INITP_04)
1706 , .INITP_05 (INITP_05)
1707 , .INITP_06 (INITP_06)
1708 , .INITP_07 (INITP_07)
1709 , .INITP_08 (INITP_08)
1710 , .INITP_09 (INITP_09)
1711 , .INITP_0A (INITP_0A)
1712 , .INITP_0B (INITP_0B)
1713 , .INITP_0C (INITP_0C)
1714 , .INITP_0D (INITP_0D)
1715 , .INITP_0E (INITP_0E)
1716 , .INITP_0F (INITP_0F)
1717 , .INIT_00 (INIT_00)
1718 , .INIT_01 (INIT_01)
1719 , .INIT_02 (INIT_02)
1720 , .INIT_03 (INIT_03)
1721 , .INIT_04 (INIT_04)
1722 , .INIT_05 (INIT_05)
1723 , .INIT_06 (INIT_06)
1724 , .INIT_07 (INIT_07)
1725 , .INIT_08 (INIT_08)
1726 , .INIT_09 (INIT_09)
1727 , .INIT_0A (INIT_0A)
1728 , .INIT_0B (INIT_0B)
1729 , .INIT_0C (INIT_0C)
1730 , .INIT_0D (INIT_0D)
1731 , .INIT_0E (INIT_0E)
1732 , .INIT_0F (INIT_0F)
1733 , .INIT_10 (INIT_10)
1734 , .INIT_11 (INIT_11)
1735 , .INIT_12 (INIT_12)
1736 , .INIT_13 (INIT_13)
1737 , .INIT_14 (INIT_14)
1738 , .INIT_15 (INIT_15)
1739 , .INIT_16 (INIT_16)
1740 , .INIT_17 (INIT_17)
1741 , .INIT_18 (INIT_18)
1742 , .INIT_19 (INIT_19)
1743 , .INIT_1A (INIT_1A)
1744 , .INIT_1B (INIT_1B)
1745 , .INIT_1C (INIT_1C)
1746 , .INIT_1D (INIT_1D)
1747 , .INIT_1E (INIT_1E)
1748 , .INIT_1F (INIT_1F)
1749 , .INIT_20 (INIT_20)
1750 , .INIT_21 (INIT_21)
1751 , .INIT_22 (INIT_22)
1752 , .INIT_23 (INIT_23)
1753 , .INIT_24 (INIT_24)
1754 , .INIT_25 (INIT_25)
1755 , .INIT_26 (INIT_26)
1756 , .INIT_27 (INIT_27)
1757 , .INIT_28 (INIT_28)
1758 , .INIT_29 (INIT_29)
1759 , .INIT_2A (INIT_2A)
1760 , .INIT_2B (INIT_2B)
1761 , .INIT_2C (INIT_2C)
1762 , .INIT_2D (INIT_2D)
1763 , .INIT_2E (INIT_2E)
1764 , .INIT_2F (INIT_2F)
1765 , .INIT_30 (INIT_30)
1766 , .INIT_31 (INIT_31)
1767 , .INIT_32 (INIT_32)
1768 , .INIT_33 (INIT_33)
1769 , .INIT_34 (INIT_34)
1770 , .INIT_35 (INIT_35)
1771 , .INIT_36 (INIT_36)
1772 , .INIT_37 (INIT_37)
1773 , .INIT_38 (INIT_38)
1774 , .INIT_39 (INIT_39)
1775 , .INIT_3A (INIT_3A)
1776 , .INIT_3B (INIT_3B)
1777 , .INIT_3C (INIT_3C)
1778 , .INIT_3D (INIT_3D)
1779 , .INIT_3E (INIT_3E)
1780 , .INIT_3F (INIT_3F)
1781 , .INIT_40 (INIT_40)
1782 , .INIT_41 (INIT_41)
1783 , .INIT_42 (INIT_42)
1784 , .INIT_43 (INIT_43)
1785 , .INIT_44 (INIT_44)
1786 , .INIT_45 (INIT_45)
1787 , .INIT_46 (INIT_46)
1788 , .INIT_47 (INIT_47)
1789 , .INIT_48 (INIT_48)
1790 , .INIT_49 (INIT_49)
1791 , .INIT_4A (INIT_4A)
1792 , .INIT_4B (INIT_4B)
1793 , .INIT_4C (INIT_4C)
1794 , .INIT_4D (INIT_4D)
1795 , .INIT_4E (INIT_4E)
1796 , .INIT_4F (INIT_4F)
1797 , .INIT_50 (INIT_50)
1798 , .INIT_51 (INIT_51)
1799 , .INIT_52 (INIT_52)
1800 , .INIT_53 (INIT_53)
1801 , .INIT_54 (INIT_54)
1802 , .INIT_55 (INIT_55)
1803 , .INIT_56 (INIT_56)
1804 , .INIT_57 (INIT_57)
1805 , .INIT_58 (INIT_58)
1806 , .INIT_59 (INIT_59)
1807 , .INIT_5A (INIT_5A)
1808 , .INIT_5B (INIT_5B)
1809 , .INIT_5C (INIT_5C)
1810 , .INIT_5D (INIT_5D)
1811 , .INIT_5E (INIT_5E)
1812 , .INIT_5F (INIT_5F)
1813 , .INIT_60 (INIT_60)
1814 , .INIT_61 (INIT_61)
1815 , .INIT_62 (INIT_62)
1816 , .INIT_63 (INIT_63)
1817 , .INIT_64 (INIT_64)
1818 , .INIT_65 (INIT_65)
1819 , .INIT_66 (INIT_66)
1820 , .INIT_67 (INIT_67)
1821 , .INIT_68 (INIT_68)
1822 , .INIT_69 (INIT_69)
1823 , .INIT_6A (INIT_6A)
1824 , .INIT_6B (INIT_6B)
1825 , .INIT_6C (INIT_6C)
1826 , .INIT_6D (INIT_6D)
1827 , .INIT_6E (INIT_6E)
1828 , .INIT_6F (INIT_6F)
1829 , .INIT_70 (INIT_70)
1830 , .INIT_71 (INIT_71)
1831 , .INIT_72 (INIT_72)
1832 , .INIT_73 (INIT_73)
1833 , .INIT_74 (INIT_74)
1834 , .INIT_75 (INIT_75)
1835 , .INIT_76 (INIT_76)
1836 , .INIT_77 (INIT_77)
1837 , .INIT_78 (INIT_78)
1838 , .INIT_79 (INIT_79)
1839 , .INIT_7A (INIT_7A)
1840 , .INIT_7B (INIT_7B)
1841 , .INIT_7C (INIT_7C)
1842 , .INIT_7D (INIT_7D)
1843 , .INIT_7E (INIT_7E)
1844 , .INIT_7F (INIT_7F)
1845 
1846 `endif
1847 
1848  ) RAMB36E1_i
1849  (
1850  // Port A (Read port in SDP mode):
1851  .DOADO (data_out32), // Port A data/LSB data[31:0], output
1852  .DOPADOP (datap_out4), // Port A parity/LSB parity[3:0], output
1853  .DIADI (32'h0), // Port A data/LSB data[31:0], input
1854  .DIPADIP (4'h0), // Port A parity/LSB parity[3:0], input
1855  .ADDRARDADDR ({1'b1,raddr,{LOG2WIDTH_RD{1'b1}}}), // Port A (read port in SDP) address [15:0]. used from [14] down, unused should be high, input
1856  .CLKARDCLK (rclk), // Port A (read port in SDP) clock, input
1857  .ENARDEN (ren), // Port A (read port in SDP) Enable, input
1858  .REGCEAREGCE (regen), // Port A (read port in SDP) register enable, input
1859  .RSTRAMARSTRAM (1'b0), // Port A (read port in SDP) set/reset, input
1860  .RSTREGARSTREG (1'b0), // Port A (read port in SDP) register set/reset, input
1861  .WEA (4'b0), // Port A (read port in SDP) Write Enable[3:0], input
1862  // Port B
1863  .DOBDO (), // Port B data/MSB data[31:0], output
1864  .DOPBDOP (), // Port B parity/MSB parity[3:0], output
1865  .DIBDI (data_in32), // Port B data/MSB data[31:0], input
1866  .DIPBDIP (datap_in4), // Port B parity/MSB parity[3:0], input
1867  .ADDRBWRADDR ({1'b1,waddr,{LOG2WIDTH_WR{1'b1}}}), // Port B (write port in SDP) address [15:0]. used from [14] down, unused should be high, input
1868  .CLKBWRCLK (wclk), // Port B (write port in SDP) clock, input
1869  .ENBWREN (we), // Port B (write port in SDP) Enable, input
1870  .REGCEB (1'b0), // Port B (write port in SDP) register enable, input
1871  .RSTRAMB (1'b0), // Port B (write port in SDP) set/reset, input
1872  .RSTREGB (1'b0), // Port B (write port in SDP) register set/reset, input
1873  .WEBWE (web[7:0]), // Port B (write port in SDP) Write Enable[7:0], input
1874  // Error correction circuitry
1875  .SBITERR (), // Single bit error status, output
1876  .DBITERR (), // Double bit error status, output
1877  .ECCPARITY (), // Genearted error correction parity [7:0], output
1878  .RDADDRECC (), // ECC read address[8:0], output
1879  .INJECTSBITERR (1'b0), // inject a single-bit error, input
1880  .INJECTDBITERR (1'b0), // inject a double-bit error, input
1881  // Cascade signals to create 64Kx1
1882  .CASCADEOUTA (), // A-port cascade, output
1883  .CASCADEOUTB (), // B-port cascade, output
1884  .CASCADEINA (1'b0), // A-port cascade, input
1885  .CASCADEINB (1'b0) // B-port cascade, input
1886  );
1887 
1888 endmodule
1889 
1890 // Write port less than 64bits, read port 64 bit widths
1891 module ramp_lt64w_64r
1892 #(
1893  parameter integer REGISTERS = 0, // 1 - registered output
1894  parameter integer LOG2WIDTH_WR = 5 // WIDTH= 1 << LOG2WIDTH
1895 `ifdef PRELOAD_BRAMS
1896  , parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1897  parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1898  parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1899  parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1900  parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1901  parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1902  parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1903  parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1904  parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1905  parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1906  parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1907  parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1908  parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1909  parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1910  parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1911  parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1912  parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1913  parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1914  parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1915  parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1916  parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1917  parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1918  parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1919  parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1920  parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1921  parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1922  parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1923  parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1924  parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1925  parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1926  parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1927  parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1928  parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1929  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1930  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1931  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1932  parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1933  parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1934  parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1935  parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1936  parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1937  parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1938  parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1939  parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1940  parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1941  parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1942  parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1943  parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1944  parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1945  parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1946  parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1947  parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1948  parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1949  parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1950  parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1951  parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1952  parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1953  parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1954  parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1955  parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1956  parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1957  parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1958  parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1959  parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1960  parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1961  parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1962  parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1963  parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1964  parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1965  parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1966  parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1967  parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1968  parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1969  parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1970  parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1971  parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1972  parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1973  parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1974  parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1975  parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1976  parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1977  parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1978  parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1979  parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1980  parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1981  parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1982  parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1983  parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1984  parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1985  parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1986  parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1987  parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1988  parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1989  parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1990  parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1991  parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1992  parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1993  parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1994  parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1995  parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1996  parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1997  parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1998  parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
1999  parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2000  parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2001  parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2002  parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2003  parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2004  parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2005  parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2006  parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2007  parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2008  parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2009  parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2010  parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2011  parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2012  parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2013  parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2014  parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2015  parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2016  parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2017  parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2018  parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2019  parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2020  parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2021  parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2022  parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2023  parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2024  parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2025  parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2026  parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2027  parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2028  parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2029  parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2030  parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2031  parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2032  parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2033  parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2034  parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2035  parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2036  parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2037  parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2038  parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2039  parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000
2040 
2041 `endif
2042  )
2043  (
2044  input rclk, // clock for read port
2045 // input [ 9:0] raddr, // read address
2046  input [8:0] raddr, // read address
2047  input ren, // read port enable
2048  input regen, // output register enable
2049  output [71:0] data_out, // data out
2050 
2051  input wclk, // clock for read port
2052  input [14-LOG2WIDTH_WR:0] waddr, // write address
2053  input we, // write port enable
2054  input [ 7:0] web, // write byte enable
2055  input [(9 << (LOG2WIDTH_WR-3))-1:0] data_in // data out
2056  );
2057  localparam PWIDTH_WR = (LOG2WIDTH_WR > 2)? (9 << (LOG2WIDTH_WR - 3)): (1 << LOG2WIDTH_WR);
2058  localparam PWIDTH_RD = 72;
2059  localparam WIDTH_WR = 1 << LOG2WIDTH_WR;
2060  localparam WIDTH_WRP = 1 << (LOG2WIDTH_WR-3);
2061 
2062  wire [WIDTH_WR+31:0] data_in_ext = {32'b0,data_in[WIDTH_WR-1:0]};
2063  wire [31:0] data_in32=data_in_ext[31:0];
2064 
2065  wire [WIDTH_WRP+3:0] datap_in_ext = {4'b0,data_in[WIDTH_WR+:WIDTH_WRP]};
2066  wire [3:0] datap_in4= datap_in_ext[3:0];
2067 
2068  RAMB36E1
2069  #(
2070  .RSTREG_PRIORITY_A ("RSTREG"), // Valid: "RSTREG" or "REGCE"
2071  .RSTREG_PRIORITY_B ("RSTREG"), // Valid: "RSTREG" or "REGCE"
2072  .DOA_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
2073  .DOB_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
2074  .RAM_EXTENSION_A ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
2075  .RAM_EXTENSION_B ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
2076  .READ_WIDTH_A (PWIDTH_RD), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2077  .READ_WIDTH_B (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2078  .WRITE_WIDTH_A (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2079  .WRITE_WIDTH_B (PWIDTH_WR), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2080  .RAM_MODE ("SDP"), // Valid "TDP" (true dual-port) and "SDP" - simple dual-port
2081  .WRITE_MODE_A ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
2082  .WRITE_MODE_B ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
2083  .RDADDR_COLLISION_HWCONFIG ("DELAYED_WRITE"),// Valid: "DELAYED_WRITE","PERFORMANCE" (no access to the same page)
2084  .SIM_COLLISION_CHECK ("ALL"), // Valid: "ALL", "GENERATE_X_ONLY", "NONE", and "WARNING_ONLY"
2085  .INIT_FILE ("NONE"), // "NONE" or filename with initialization data
2086  .SIM_DEVICE ("7SERIES"), // Simulation device family - "VIRTEX6", "VIRTEX5" and "7_SERIES" // "7SERIES"
2087 
2088  .EN_ECC_READ ("FALSE"), // Valid:"FALSE","TRUE" (ECC decoder circuitry)
2089  .EN_ECC_WRITE ("FALSE") // Valid:"FALSE","TRUE" (ECC decoder circuitry)
2090 `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
2091 , .INITP_01 (INITP_01)
2092 , .INITP_02 (INITP_02)
2093 , .INITP_03 (INITP_03)
2094 , .INITP_04 (INITP_04)
2095 , .INITP_05 (INITP_05)
2096 , .INITP_06 (INITP_06)
2097 , .INITP_07 (INITP_07)
2098 , .INITP_08 (INITP_08)
2099 , .INITP_09 (INITP_09)
2100 , .INITP_0A (INITP_0A)
2101 , .INITP_0B (INITP_0B)
2102 , .INITP_0C (INITP_0C)
2103 , .INITP_0D (INITP_0D)
2104 , .INITP_0E (INITP_0E)
2105 , .INITP_0F (INITP_0F)
2106 , .INIT_00 (INIT_00)
2107 , .INIT_01 (INIT_01)
2108 , .INIT_02 (INIT_02)
2109 , .INIT_03 (INIT_03)
2110 , .INIT_04 (INIT_04)
2111 , .INIT_05 (INIT_05)
2112 , .INIT_06 (INIT_06)
2113 , .INIT_07 (INIT_07)
2114 , .INIT_08 (INIT_08)
2115 , .INIT_09 (INIT_09)
2116 , .INIT_0A (INIT_0A)
2117 , .INIT_0B (INIT_0B)
2118 , .INIT_0C (INIT_0C)
2119 , .INIT_0D (INIT_0D)
2120 , .INIT_0E (INIT_0E)
2121 , .INIT_0F (INIT_0F)
2122 , .INIT_10 (INIT_10)
2123 , .INIT_11 (INIT_11)
2124 , .INIT_12 (INIT_12)
2125 , .INIT_13 (INIT_13)
2126 , .INIT_14 (INIT_14)
2127 , .INIT_15 (INIT_15)
2128 , .INIT_16 (INIT_16)
2129 , .INIT_17 (INIT_17)
2130 , .INIT_18 (INIT_18)
2131 , .INIT_19 (INIT_19)
2132 , .INIT_1A (INIT_1A)
2133 , .INIT_1B (INIT_1B)
2134 , .INIT_1C (INIT_1C)
2135 , .INIT_1D (INIT_1D)
2136 , .INIT_1E (INIT_1E)
2137 , .INIT_1F (INIT_1F)
2138 , .INIT_20 (INIT_20)
2139 , .INIT_21 (INIT_21)
2140 , .INIT_22 (INIT_22)
2141 , .INIT_23 (INIT_23)
2142 , .INIT_24 (INIT_24)
2143 , .INIT_25 (INIT_25)
2144 , .INIT_26 (INIT_26)
2145 , .INIT_27 (INIT_27)
2146 , .INIT_28 (INIT_28)
2147 , .INIT_29 (INIT_29)
2148 , .INIT_2A (INIT_2A)
2149 , .INIT_2B (INIT_2B)
2150 , .INIT_2C (INIT_2C)
2151 , .INIT_2D (INIT_2D)
2152 , .INIT_2E (INIT_2E)
2153 , .INIT_2F (INIT_2F)
2154 , .INIT_30 (INIT_30)
2155 , .INIT_31 (INIT_31)
2156 , .INIT_32 (INIT_32)
2157 , .INIT_33 (INIT_33)
2158 , .INIT_34 (INIT_34)
2159 , .INIT_35 (INIT_35)
2160 , .INIT_36 (INIT_36)
2161 , .INIT_37 (INIT_37)
2162 , .INIT_38 (INIT_38)
2163 , .INIT_39 (INIT_39)
2164 , .INIT_3A (INIT_3A)
2165 , .INIT_3B (INIT_3B)
2166 , .INIT_3C (INIT_3C)
2167 , .INIT_3D (INIT_3D)
2168 , .INIT_3E (INIT_3E)
2169 , .INIT_3F (INIT_3F)
2170 , .INIT_40 (INIT_40)
2171 , .INIT_41 (INIT_41)
2172 , .INIT_42 (INIT_42)
2173 , .INIT_43 (INIT_43)
2174 , .INIT_44 (INIT_44)
2175 , .INIT_45 (INIT_45)
2176 , .INIT_46 (INIT_46)
2177 , .INIT_47 (INIT_47)
2178 , .INIT_48 (INIT_48)
2179 , .INIT_49 (INIT_49)
2180 , .INIT_4A (INIT_4A)
2181 , .INIT_4B (INIT_4B)
2182 , .INIT_4C (INIT_4C)
2183 , .INIT_4D (INIT_4D)
2184 , .INIT_4E (INIT_4E)
2185 , .INIT_4F (INIT_4F)
2186 , .INIT_50 (INIT_50)
2187 , .INIT_51 (INIT_51)
2188 , .INIT_52 (INIT_52)
2189 , .INIT_53 (INIT_53)
2190 , .INIT_54 (INIT_54)
2191 , .INIT_55 (INIT_55)
2192 , .INIT_56 (INIT_56)
2193 , .INIT_57 (INIT_57)
2194 , .INIT_58 (INIT_58)
2195 , .INIT_59 (INIT_59)
2196 , .INIT_5A (INIT_5A)
2197 , .INIT_5B (INIT_5B)
2198 , .INIT_5C (INIT_5C)
2199 , .INIT_5D (INIT_5D)
2200 , .INIT_5E (INIT_5E)
2201 , .INIT_5F (INIT_5F)
2202 , .INIT_60 (INIT_60)
2203 , .INIT_61 (INIT_61)
2204 , .INIT_62 (INIT_62)
2205 , .INIT_63 (INIT_63)
2206 , .INIT_64 (INIT_64)
2207 , .INIT_65 (INIT_65)
2208 , .INIT_66 (INIT_66)
2209 , .INIT_67 (INIT_67)
2210 , .INIT_68 (INIT_68)
2211 , .INIT_69 (INIT_69)
2212 , .INIT_6A (INIT_6A)
2213 , .INIT_6B (INIT_6B)
2214 , .INIT_6C (INIT_6C)
2215 , .INIT_6D (INIT_6D)
2216 , .INIT_6E (INIT_6E)
2217 , .INIT_6F (INIT_6F)
2218 , .INIT_70 (INIT_70)
2219 , .INIT_71 (INIT_71)
2220 , .INIT_72 (INIT_72)
2221 , .INIT_73 (INIT_73)
2222 , .INIT_74 (INIT_74)
2223 , .INIT_75 (INIT_75)
2224 , .INIT_76 (INIT_76)
2225 , .INIT_77 (INIT_77)
2226 , .INIT_78 (INIT_78)
2227 , .INIT_79 (INIT_79)
2228 , .INIT_7A (INIT_7A)
2229 , .INIT_7B (INIT_7B)
2230 , .INIT_7C (INIT_7C)
2231 , .INIT_7D (INIT_7D)
2232 , .INIT_7E (INIT_7E)
2233 , .INIT_7F (INIT_7F)
2234 
2235 `endif
2236  ) RAMB36E1_i
2237  (
2238  // Port A (Read port in SDP mode):
2239  .DOADO (data_out[31:0]), // Port A data/LSB data[31:0], output
2240  .DOPADOP (data_out[35:32]),// Port A parity/LSB parity[3:0], output
2241  .DIADI (32'h0), // Port A data/LSB data[31:0], input
2242  .DIPADIP (4'h0), // Port A parity/LSB parity[3:0], input
2243  .ADDRARDADDR ({1'b1,raddr[8:0],6'b111111}), // Port A (read port in SDP) address [15:0]. used from [14] down, unused should be high, input
2244  .CLKARDCLK (rclk), // Port A (read port in SDP) clock, input
2245  .ENARDEN (ren), // Port A (read port in SDP) Enable, input
2246  .REGCEAREGCE (regen), // Port A (read port in SDP) register enable, input
2247  .RSTRAMARSTRAM (1'b0), // Port A (read port in SDP) set/reset, input
2248  .RSTREGARSTREG (1'b0), // Port A (read port in SDP) register set/reset, input
2249  .WEA (4'b0), // Port A (read port in SDP) Write Enable[3:0], input
2250  // Port B
2251  .DOBDO (data_out[67:36]),// Port B data/MSB data[31:0], output
2252  .DOPBDOP (data_out[71:68]),// Port B parity/MSB parity[3:0], output
2253  .DIBDI (data_in32), // Port B data/MSB data[31:0], input
2254  .DIPBDIP (datap_in4), // Port B parity/MSB parity[3:0], input
2255  .ADDRBWRADDR ({1'b1,waddr,{LOG2WIDTH_WR{1'b1}}}), // Port B (write port in SDP) address [15:0]. used from [14] down, unused should be high, input
2256  .CLKBWRCLK (wclk), // Port B (write port in SDP) clock, input
2257  .ENBWREN (we), // Port B (write port in SDP) Enable, input
2258  .REGCEB (1'b0), // Port B (write port in SDP) register enable, input
2259  .RSTRAMB (1'b0), // Port B (write port in SDP) set/reset, input
2260  .RSTREGB (1'b0), // Port B (write port in SDP) register set/reset, input
2261  .WEBWE (web[7:0]), // Port B (write port in SDP) Write Enable[7:0], input
2262  // Error correction circuitry
2263  .SBITERR (), // Single bit error status, output
2264  .DBITERR (), // Double bit error status, output
2265  .ECCPARITY (), // Genearted error correction parity [7:0], output
2266  .RDADDRECC (), // ECC read address[8:0], output
2267  .INJECTSBITERR (1'b0), // inject a single-bit error, input
2268  .INJECTDBITERR (1'b0), // inject a double-bit error, input
2269  // Cascade signals to create 64Kx1
2270  .CASCADEOUTA (), // A-port cascade, output
2271  .CASCADEOUTB (), // B-port cascade, output
2272  .CASCADEINA (1'b0), // A-port cascade, input
2273  .CASCADEINB (1'b0) // B-port cascade, input
2274  );
2275 
2276 endmodule
2277 
2278 // Write port 64 bita, read port - less than 64 bits
2279 module ramp_64w_lt64r
2280 #(
2281  parameter integer REGISTERS = 0, // 1 - registered output
2282 // parameter integer LOG2WIDTH_WR = 5, // WIDTH= 1 << LOG2WIDTH
2283  parameter integer LOG2WIDTH_RD = 5 // WIDTH= 1 << LOG2WIDTH
2284 `ifdef PRELOAD_BRAMS
2285  , parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2286  parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2287  parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2288  parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2289  parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2290  parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2291  parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2292  parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2293  parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2294  parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2295  parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2296  parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2297  parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2298  parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2299  parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2300  parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2301  parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2302  parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2303  parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2304  parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2305  parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2306  parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2307  parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2308  parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2309  parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2310  parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2311  parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2312  parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2313  parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2314  parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2315  parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2316  parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2317  parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2318  parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2319  parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2320  parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2321  parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2322  parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2323  parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2324  parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2325  parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2326  parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2327  parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2328  parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2329  parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2330  parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2331  parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2332  parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2333  parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2334  parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2335  parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2336  parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2337  parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2338  parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2339  parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2340  parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2341  parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2342  parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2343  parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2344  parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2345  parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2346  parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2347  parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2348  parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2349  parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2350  parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2351  parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2352  parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2353  parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2354  parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2355  parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2356  parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2357  parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2358  parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2359  parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2360  parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2361  parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2362  parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2363  parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2364  parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2365  parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2366  parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2367  parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2368  parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2369  parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2370  parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2371  parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2372  parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2373  parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2374  parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2375  parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2376  parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2377  parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2378  parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2379  parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2380  parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2381  parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2382  parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2383  parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2384  parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2385  parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2386  parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2387  parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2388  parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2389  parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2390  parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2391  parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2392  parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2393  parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2394  parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2395  parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2396  parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2397  parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2398  parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2399  parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2400  parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2401  parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2402  parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2403  parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2404  parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2405  parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2406  parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2407  parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2408  parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2409  parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2410  parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2411  parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2412  parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2413  parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2414  parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2415  parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2416  parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2417  parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2418  parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2419  parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2420  parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2421  parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2422  parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2423  parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2424  parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2425  parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2426  parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2427  parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000,
2428  parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000
2429 
2430 `endif
2431  )
2432  (
2433  input rclk, // clock for read port
2434  input [14-LOG2WIDTH_RD:0] raddr, // read address
2435  input ren, // read port enable
2436  input regen, // output register enable
2437  output [(9 << (LOG2WIDTH_RD-3))-1:0] data_out, // data out
2438 
2439  input wclk, // clock for read port
2440  input [8:0] waddr, // write address
2441  input we, // write port enable
2442  input [ 7:0] web, // write byte enable
2443  input [71:0] data_in // data out
2444  );
2445  localparam PWIDTH_WR = 72;
2446  localparam PWIDTH_RD = (LOG2WIDTH_RD > 2)? (9 << (LOG2WIDTH_RD - 3)): (1 << LOG2WIDTH_RD);
2447  localparam WIDTH_RD = 1 << LOG2WIDTH_RD;
2448  localparam WIDTH_RDP = 1 << (LOG2WIDTH_RD-3);
2449  wire [31:0] data_out32;
2450  wire [ 3:0] datap_out4;
2451  assign data_out={datap_out4[WIDTH_RDP-1:0], data_out32[WIDTH_RD-1:0]};
2452  RAMB36E1
2453  #(
2454  .RSTREG_PRIORITY_A ("RSTREG"), // Valid: "RSTREG" or "REGCE"
2455  .RSTREG_PRIORITY_B ("RSTREG"), // Valid: "RSTREG" or "REGCE"
2456  .DOA_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
2457  .DOB_REG (REGISTERS), // Valid: 0 (no output registers) and 1 - one output register (in SDP - to lower 36)
2458  .RAM_EXTENSION_A ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
2459  .RAM_EXTENSION_B ("NONE"), // Cascading, valid: "NONE","UPPER", LOWER"
2460  .READ_WIDTH_A (PWIDTH_RD), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2461  .READ_WIDTH_B (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2462  .WRITE_WIDTH_A (0), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2463  .WRITE_WIDTH_B (PWIDTH_WR), // Valid: 0,1,2,4,9,18,36 and in SDP mode - 72 (should be 0 if port is not used)
2464  .RAM_MODE ("SDP"), // Valid "TDP" (true dual-port) and "SDP" - simple dual-port
2465  .WRITE_MODE_A ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
2466  .WRITE_MODE_B ("WRITE_FIRST"), // Valid: "WRITE_FIRST", "READ_FIRST", "NO_CHANGE"
2467  .RDADDR_COLLISION_HWCONFIG ("DELAYED_WRITE"),// Valid: "DELAYED_WRITE","PERFORMANCE" (no access to the same page)
2468  .SIM_COLLISION_CHECK ("ALL"), // Valid: "ALL", "GENERATE_X_ONLY", "NONE", and "WARNING_ONLY"
2469  .INIT_FILE ("NONE"), // "NONE" or filename with initialization data
2470  .SIM_DEVICE ("7SERIES"), // Simulation device family - "VIRTEX6", "VIRTEX5" and "7_SERIES" // "7SERIES"
2471 
2472  .EN_ECC_READ ("FALSE"), // Valid:"FALSE","TRUE" (ECC decoder circuitry)
2473  .EN_ECC_WRITE ("FALSE") // Valid:"FALSE","TRUE" (ECC decoder circuitry)
2474  `ifdef PRELOAD_BRAMS, .INITP_00 (INITP_00)
2475 , .INITP_01 (INITP_01)
2476 , .INITP_02 (INITP_02)
2477 , .INITP_03 (INITP_03)
2478 , .INITP_04 (INITP_04)
2479 , .INITP_05 (INITP_05)
2480 , .INITP_06 (INITP_06)
2481 , .INITP_07 (INITP_07)
2482 , .INITP_08 (INITP_08)
2483 , .INITP_09 (INITP_09)
2484 , .INITP_0A (INITP_0A)
2485 , .INITP_0B (INITP_0B)
2486 , .INITP_0C (INITP_0C)
2487 , .INITP_0D (INITP_0D)
2488 , .INITP_0E (INITP_0E)
2489 , .INITP_0F (INITP_0F)
2490 , .INIT_00 (INIT_00)
2491 , .INIT_01 (INIT_01)
2492 , .INIT_02 (INIT_02)
2493 , .INIT_03 (INIT_03)
2494 , .INIT_04 (INIT_04)
2495 , .INIT_05 (INIT_05)
2496 , .INIT_06 (INIT_06)
2497 , .INIT_07 (INIT_07)
2498 , .INIT_08 (INIT_08)
2499 , .INIT_09 (INIT_09)
2500 , .INIT_0A (INIT_0A)
2501 , .INIT_0B (INIT_0B)
2502 , .INIT_0C (INIT_0C)
2503 , .INIT_0D (INIT_0D)
2504 , .INIT_0E (INIT_0E)
2505 , .INIT_0F (INIT_0F)
2506 , .INIT_10 (INIT_10)
2507 , .INIT_11 (INIT_11)
2508 , .INIT_12 (INIT_12)
2509 , .INIT_13 (INIT_13)
2510 , .INIT_14 (INIT_14)
2511 , .INIT_15 (INIT_15)
2512 , .INIT_16 (INIT_16)
2513 , .INIT_17 (INIT_17)
2514 , .INIT_18 (INIT_18)
2515 , .INIT_19 (INIT_19)
2516 , .INIT_1A (INIT_1A)
2517 , .INIT_1B (INIT_1B)
2518 , .INIT_1C (INIT_1C)
2519 , .INIT_1D (INIT_1D)
2520 , .INIT_1E (INIT_1E)
2521 , .INIT_1F (INIT_1F)
2522 , .INIT_20 (INIT_20)
2523 , .INIT_21 (INIT_21)
2524 , .INIT_22 (INIT_22)
2525 , .INIT_23 (INIT_23)
2526 , .INIT_24 (INIT_24)
2527 , .INIT_25 (INIT_25)
2528 , .INIT_26 (INIT_26)
2529 , .INIT_27 (INIT_27)
2530 , .INIT_28 (INIT_28)
2531 , .INIT_29 (INIT_29)
2532 , .INIT_2A (INIT_2A)
2533 , .INIT_2B (INIT_2B)
2534 , .INIT_2C (INIT_2C)
2535 , .INIT_2D (INIT_2D)
2536 , .INIT_2E (INIT_2E)
2537 , .INIT_2F (INIT_2F)
2538 , .INIT_30 (INIT_30)
2539 , .INIT_31 (INIT_31)
2540 , .INIT_32 (INIT_32)
2541 , .INIT_33 (INIT_33)
2542 , .INIT_34 (INIT_34)
2543 , .INIT_35 (INIT_35)
2544 , .INIT_36 (INIT_36)
2545 , .INIT_37 (INIT_37)
2546 , .INIT_38 (INIT_38)
2547 , .INIT_39 (INIT_39)
2548 , .INIT_3A (INIT_3A)
2549 , .INIT_3B (INIT_3B)
2550 , .INIT_3C (INIT_3C)
2551 , .INIT_3D (INIT_3D)
2552 , .INIT_3E (INIT_3E)
2553 , .INIT_3F (INIT_3F)
2554 , .INIT_40 (INIT_40)
2555 , .INIT_41 (INIT_41)
2556 , .INIT_42 (INIT_42)
2557 , .INIT_43 (INIT_43)
2558 , .INIT_44 (INIT_44)
2559 , .INIT_45 (INIT_45)
2560 , .INIT_46 (INIT_46)
2561 , .INIT_47 (INIT_47)
2562 , .INIT_48 (INIT_48)
2563 , .INIT_49 (INIT_49)
2564 , .INIT_4A (INIT_4A)
2565 , .INIT_4B (INIT_4B)
2566 , .INIT_4C (INIT_4C)
2567 , .INIT_4D (INIT_4D)
2568 , .INIT_4E (INIT_4E)
2569 , .INIT_4F (INIT_4F)
2570 , .INIT_50 (INIT_50)
2571 , .INIT_51 (INIT_51)
2572 , .INIT_52 (INIT_52)
2573 , .INIT_53 (INIT_53)
2574 , .INIT_54 (INIT_54)
2575 , .INIT_55 (INIT_55)
2576 , .INIT_56 (INIT_56)
2577 , .INIT_57 (INIT_57)
2578 , .INIT_58 (INIT_58)
2579 , .INIT_59 (INIT_59)
2580 , .INIT_5A (INIT_5A)
2581 , .INIT_5B (INIT_5B)
2582 , .INIT_5C (INIT_5C)
2583 , .INIT_5D (INIT_5D)
2584 , .INIT_5E (INIT_5E)
2585 , .INIT_5F (INIT_5F)
2586 , .INIT_60 (INIT_60)
2587 , .INIT_61 (INIT_61)
2588 , .INIT_62 (INIT_62)
2589 , .INIT_63 (INIT_63)
2590 , .INIT_64 (INIT_64)
2591 , .INIT_65 (INIT_65)
2592 , .INIT_66 (INIT_66)
2593 , .INIT_67 (INIT_67)
2594 , .INIT_68 (INIT_68)
2595 , .INIT_69 (INIT_69)
2596 , .INIT_6A (INIT_6A)
2597 , .INIT_6B (INIT_6B)
2598 , .INIT_6C (INIT_6C)
2599 , .INIT_6D (INIT_6D)
2600 , .INIT_6E (INIT_6E)
2601 , .INIT_6F (INIT_6F)
2602 , .INIT_70 (INIT_70)
2603 , .INIT_71 (INIT_71)
2604 , .INIT_72 (INIT_72)
2605 , .INIT_73 (INIT_73)
2606 , .INIT_74 (INIT_74)
2607 , .INIT_75 (INIT_75)
2608 , .INIT_76 (INIT_76)
2609 , .INIT_77 (INIT_77)
2610 , .INIT_78 (INIT_78)
2611 , .INIT_79 (INIT_79)
2612 , .INIT_7A (INIT_7A)
2613 , .INIT_7B (INIT_7B)
2614 , .INIT_7C (INIT_7C)
2615 , .INIT_7D (INIT_7D)
2616 , .INIT_7E (INIT_7E)
2617 , .INIT_7F (INIT_7F)
2618 
2619  `endif
2620 
2621  ) RAMB36E1_i
2622  (
2623  // Port A (Read port in SDP mode):
2624  .DOADO (data_out32), // Port A data/LSB data[31:0], output
2625  .DOPADOP (datap_out4), // Port A parity/LSB parity[3:0], output
2626  .DIADI (data_in[31:0]), // Port A data/LSB data[31:0], input
2627  .DIPADIP (data_in[35:32]), // Port A parity/LSB parity[3:0], input
2628  .ADDRARDADDR ({1'b1,raddr,{LOG2WIDTH_RD{1'b1}}}), // Port A (read port in SDP) address [15:0]. used from [14] down, unused should be high, input
2629  .CLKARDCLK (rclk), // Port A (read port in SDP) clock, input
2630  .ENARDEN (ren), // Port A (read port in SDP) Enable, input
2631  .REGCEAREGCE (regen), // Port A (read port in SDP) register enable, input
2632  .RSTRAMARSTRAM (1'b0), // Port A (read port in SDP) set/reset, input
2633  .RSTREGARSTREG (1'b0), // Port A (read port in SDP) register set/reset, input
2634  .WEA (4'b0), // Port A (read port in SDP) Write Enable[3:0], input
2635  // Port B
2636  .DOBDO (), // Port B data/MSB data[31:0], output
2637  .DOPBDOP (), // Port B parity/MSB parity[3:0], output
2638  .DIBDI (data_in[67:36]), // Port B data/MSB data[31:0], input
2639  .DIPBDIP (data_in[71:68]), // Port B parity/MSB parity[3:0], input
2640  .ADDRBWRADDR({1'b1,waddr[8:0],6'b111111}), // Port B (write port in SDP) address [15:0]. used from [14] down, unused should be high, input
2641  .CLKBWRCLK (wclk), // Port B (write port in SDP) clock, input
2642  .ENBWREN (we), // Port B (write port in SDP) Enable, input
2643  .REGCEB (1'b0), // Port B (write port in SDP) register enable, input
2644  .RSTRAMB (1'b0), // Port B (write port in SDP) set/reset, input
2645  .RSTREGB (1'b0), // Port B (write port in SDP) register set/reset, input
2646  .WEBWE (web[7:0]), // Port B (write port in SDP) Write Enable[7:0], input
2647  // Error correction circuitry
2648  .SBITERR (), // Single bit error status, output
2649  .DBITERR (), // Double bit error status, output
2650  .ECCPARITY (), // Genearted error correction parity [7:0], output
2651  .RDADDRECC (), // ECC read address[8:0], output
2652  .INJECTSBITERR (1'b0), // inject a single-bit error, input
2653  .INJECTDBITERR (1'b0), // inject a double-bit error, input
2654  // Cascade signals to create 64Kx1
2655  .CASCADEOUTA (), // A-port cascade, output
2656  .CASCADEOUTB (), // B-port cascade, output
2657  .CASCADEINA (1'b0), // A-port cascade, input
2658  .CASCADEINB (1'b0) // B-port cascade, input
2659  );
2660 
2661 endmodule
2662 
2663 module ramp_dummy
2664 #(
2665  parameter integer LOG2WIDTH_RD = 5 // WIDTH= 1 << LOG2WIDTH
2666  )
2667  (
2668  output [(9 << (LOG2WIDTH_RD-3))-1:0] data_out // data out
2669  );
2670  assign data_out=0;
2671 endmodule
2672 
11986WIDTH_RDP1 << (LOG2WIDTH_RD-3
12027WIDTH_RD1 << LOG2WIDTH_RD
[14-LOG2WIDTH_WR:0] 11951waddr
integer 11969LOG2WIDTH_WR5
integer 12031LOG2WIDTH_RD5
[14-LOG2WIDTH_RD:0] 11972raddr
[9 << LOG2WIDTH_RD-3-1:0] 11975data_out
11984WIDTH_WRP1 << (LOG2WIDTH_WR-3
11990data_in32wire[31:0]
integer 11942LOG2WIDTH_WR6
[9 << LOG2WIDTH_WR-3-1:0] 11954data_in
[71:0] 11965data_in
RAMB36E1_i RAMB36E1
ram_i ramp_lt64w_64r[generate]
RAMB36E1_i RAMB36E1
integer 12013REGISTERS0
[9 << LOG2WIDTH_WR-3-1:0] 11980data_in
RAMB36E1_i RAMB36E1
12010data_in32wire[31:0]
12026PWIDTH_RD(LOG2WIDTH_RD > 2)? (9 << (LOG2WIDTH_RD - 3)): (1 << LOG2WIDTH_RD
12012datap_in4wire[3:0]
12011datap_in_extwire[WIDTH_WRP+3:0]
12009data_in_extwire[WIDTH_WR+31:0]
[9 << LOG2WIDTH_RD-3-1:0] 12019data_out
[14-LOG2WIDTH_WR:0] 12001waddr
[14-LOG2WIDTH_RD:0] 12016raddr
11981PWIDTH_WR(LOG2WIDTH_WR > 2)? (9 << (LOG2WIDTH_WR - 3)): (1 << LOG2WIDTH_WR
11985WIDTH_RD1 << LOG2WIDTH_RD
integer 11943LOG2WIDTH_RD6
12028WIDTH_RDP1 << (LOG2WIDTH_RD-3
[71:0] 11960data_out
ram_i ramp_lt64w_lt64r[generate]
12029data_out32wire[31:0]
11987data_out32wire[31:0]
ram_i ramp_64w_64r[generate]
11991datap_in_extwire[WIDTH_WRP+3:0]
[14-LOG2WIDTH_RD:0] 11946raddr
ramp_dummy_i ramp_dummy[generate]
integer 11941REGISTERS0
11989data_in_extwire[WIDTH_WR+31:0]
12030datap_out4wire[3:0]
11988datap_out4wire[3:0]
12007WIDTH_WR1 << LOG2WIDTH_WR
ram_i ramp_64w_lt64r[generate]
[9 << LOG2WIDTH_WR-3-1:0] 12004data_in
11982PWIDTH_RD(LOG2WIDTH_RD > 2)? (9 << (LOG2WIDTH_RD - 3)): (1 << LOG2WIDTH_RD
[ 8:0] 11962waddr
[14-LOG2WIDTH_WR:0] 11977waddr
11983WIDTH_WR1 << LOG2WIDTH_WR
12008WIDTH_WRP1 << (LOG2WIDTH_WR-3
[9 << LOG2WIDTH_RD-3-1:0] 11949data_out
[9 << LOG2WIDTH_RD-3-1:0] 12032data_out
12005PWIDTH_WR(LOG2WIDTH_WR > 2)? (9 << (LOG2WIDTH_WR - 3)): (1 << LOG2WIDTH_WR
integer 11993REGISTERS0