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