The memory content can be initialized or cleared in the configuration
bitstream with the INIT_0000 - INIT_3FFF (1024) attributes or by reading
a file with the INIT_FILE attribute. Each INIT_XXX is a 72-digit hexadecimal-encoded
bit vector. The memory contents can be partially initialized and are
automatically completed with zeros. Each INIT_XXX attribute contains
32 bits of parity from bit locations 287:256 and 256 bits of data from
bit locations 255:0 as shown in the following tables. Used UltraRAM blocks
not initialized in the design are automatically initialized with 0 during
configuration and are not part of the bitstream. Therefore, the bitstream
size varies depending on the number of user-initialized UltraRAM blocks.
Table 1. UltraRAM INIT Attribute (General Format)
Attribute |
Parity Location |
Data Location |
|
X72 - D[71:64] * 4 |
X72 - D[63:0] * 4 |
|
X36 - D[35:32] * 8 |
X72 - D[31:0] * 8 |
|
X18 - D[17:16] * 16 |
X72 - D[15:0] * 16 |
|
X9 - D[8] * 32 |
X72 - D[7:0] * 32 |
|
|
|
INIT_001 |
287:256 |
255:000 |
INIT_000 |
575:544 |
543:288 |
.............. |
|
|
INIT_3FF |
294911:294889 |
294879:294624 |
Table 2. UltraRAM Detailed Initialization
INIT_000 |
x72 |
x36 |
x18 |
x9 |
Parity [287:256] A[15:3] = 12'h003
A[15:3] = 12'h002 A[15:3] = 12'h001
A[15:3] = 12'h000
|
D[71:64] |
A[2] = 1, D[35:32] |
A[2:1] = 11, D[17:16] |
A[2:0] = 111, D[8] |
A[2:0] = 110, D[8] |
A[2:1] = 10, D[17:16] |
A[2:0] = 101, D[8] |
A[2:0] = 100, D[8] |
A[2] = 0, D[35:32] |
A[2:1] = 01, D[17:16] |
A[2:0] = 011, D[8] |
A[2:0] = 010, D[8] |
A[2:1] = 00, D[17:16] |
A[2:0] = 001, D[8] |
A[2:0] = 000, D[8] |
Data [255:000] A[15:3] = 12'h003
A[15:3] = 12'h002 A[15:3] = 12'h001
A[15:3] = 12'h000
|
D[63:0] |
A[2] = 1, D[31:0] |
A[2:1] = 11, D[15:0] |
A[2:0] = 111, D[7:0] |
A[2:0] = 110, D[7:0] |
A[2:1] = 10, D[15:0] |
A[2:0] = 101, D[7:0] |
A[2:0] = 100, D[7:0] |
A[2] = 0, D[31:0] |
A[2:1] = 01, D[15:0] |
A[2:0] = 011, D[7:0] |
A[2:0] = 010, D[7:0] |
A[2:1] = 00, D[15:0] |
A[2:0] = 001, D[7:0] |
A[2:0] = 000, D[7:0] |