Virtex-E 1.8 V Extended Memory Field Programmable Gate Arrays
DS025-2 (v3.0) March 21, 2014
Module 2 of 4
29
R
— OBSOLETE — OBSOLETE — OBSOLETE — OBSOLETE —
Initialization
The block SelectRAM+ memory can initialize during the
device configuration sequence. The 16 initialization properties
of 64 hex values each (a total of 4096 bits) set the initialization
of each RAM. These properties appear in
Table 17. Any initial-
ization properties not explicitly set configure as zeros. Partial
initialization strings pad with zeros. Initialization strings
greater than 64 hex values generate an error. The RAMs can
be simulated with the initialization values using generics in
VHDL simulators and parameters in Verilog simulators.
Initialization in VHDL and Synopsys
The block SelectRAM+ structures can be initialized in VHDL
for both simulation and synthesis for inclusion in the EDIF
output file. The simulation of the VHDL code uses a generic
to pass the initialization. Synopsys FPGA compiler does not
presently support generics. The initialization values instead
attach as attributes to the RAM by a built-in Synopsys
dc_script. The translate_off statement stops synthesis
translation of the generic statements. The following code
illustrates a module that employs these techniques.
Initialization in Verilog and Synopsys
The block SelectRAM+ structures can be initialized in Verilog
for both simulation and synthesis for inclusion in the EDIF
output file. The simulation of the Verilog code uses a def-
param to pass the initialization. The Synopsys FPGA com-
piler does not presently support defparam. The initialization
values instead attach as attributes to the RAM by a built-in
Synopsys dc_script. The translate_off statement stops syn-
thesis translation of the defparam statements. The following
code illustrates a module that employs these techniques.
Design Examples
Creating a 32-bit Single-Port RAM
The true dual-read/write port functionality of the block
SelectRAM+ memory allows a single port, 128 deep by
32-bit wide RAM to be created using a single block
Interleaving the memory space, setting the LSB of the
address bus of Port A to 1 (VCC), and the LSB of the
address bus of Port B to 0 (GND), allows a 32-bit wide sin-
gle port RAM to be created.
Creating Two Single-Port RAMs
The true dual-read/write port functionality of the block
SelectRAM+ memory allows a single RAM to be split into two
single port memories of 2K bits each as shown in
Figure 36.In this example, a 512K x 4 RAM (Port A) and a 128 x 16
RAM (Port B) are created out of a single block SelectRAM+.
The address space for the RAM is split by fixing the MSB of
Port A to 1 (VCC) for the upper 2K bits and the MSB of Port
B to 0 (GND) for the lower 2K bits.
Block Memory Generation
The CoreGen program generates memory structures using
the block SelectRAM+ features. This program outputs
VHDL or Verilog simulation code templates and an EDIF file
for inclusion in a design.
Table 17:
RAM Initialization Properties
Property
Memory Cells
INIT_00
255 to 0
INIT_01
511 to 256
INIT_02
767 to 512
INIT_03
1023 to 768
INIT_04
1279 to 1024
INIT_05
1535 to 1280
INIT_06
1791 to 2047
INIT_07
2047 to 1792
INIT_08
2303 to 2048
INIT_09
2559 to 2304
INIT_0a
2815 to 2560
INIT_0b
3071 to 2816
INIT_0c
3327 to 3072
INIT_0d
3583 to 3328
INIT_0e
3839 to 3584
INIT_0f
4095 to 3840
Figure 35: Single Port 128 x 32 RAM
Figure 36: 512 x 4 RAM and 128 x 16 RAM
WEB
ENB
RSTB
CLKB
ADDRB[7:0]
DIB[15:0]
WEA
ENA
RSTA
CLKA
ADDRA[7:0]
DIA[15:0]
ADDR[6:0], V
CC
CLK
EN
RST
WE
CLK
EN
RST
WE
DI[31:16]
ADDR[6:0], GND
DI[15:0]
DOA[15:0]
DO[31:16]
DO[15:0]
DOB[15:0]
RAMB4_S16_S16
ds022_036_121399
WEB
ENB
RSTB
CLKB
ADDRB[7:0]
DIB[15:0]
WEA
ENA
RSTA
CLKA
ADDRA[9:0]
DIA[3:0]
V
CC, ADDR1[8:0]
DI1[3:0]
WE1
EN1
RST1
CLK1
WE2
EN2
RST2
CLK2
GND, ADDR2[6:0]
DI2[15:0]
DOA[3:0]
DO1[3:0]
DO2[15:0]
DOB[15:0]
RAMB4_S4_S16
ds022_037_121399