22use ieee.std_logic_1164.
all;
25use unisim.vcomponents.
ALL;
63 report "assert(AWIDTH>=9 and AWIDTH<=14): unsupported BRAM from factor"
81 GL: for i in dw_mem/36-1 downto 0 generate
84 INIT_A => O"000000000000",
85 INIT_B => O"000000000000",
86 SRVAL_A => O"000000000000",
87 SRVAL_B => O"000000000000",
91 DOA =>
L_DOA(36*i+31
downto 36*i
),
92 DOB =>
L_DOB(36*i+31
downto 36*i
),
93 DOPA =>
L_DOA(36*i+35
downto 36*i+32
),
94 DOPB =>
L_DOB(36*i+35
downto 36*i+32
),
99 DIA =>
L_DIA(36*i+31
downto 36*i
),
100 DIB =>
L_DIB(36*i+31
downto 36*i
),
101 DIPA =>
L_DIA(36*i+35
downto 36*i+32
),
102 DIPB =>
L_DIB(36*i+35
downto 36*i+32
),
115 end generate AW_09_S36;
118 GL: for i in DWIDTH/32-1 downto 0 generate
121 INIT_A => X"00000000",
122 INIT_B => X"00000000",
123 SRVAL_A => X"00000000",
124 SRVAL_B => X"00000000",
128 DOA =>
DOA(32*i+31
downto 32*i
),
129 DOB =>
DOB(32*i+31
downto 32*i
),
136 DIA =>
DIA(32*i+31
downto 32*i
),
137 DIB =>
DIB(32*i+31
downto 32*i
),
148 end generate AW_09_S32;
165 GL: for i in dw_mem/18-1 downto 0 generate
170 SRVAL_A => O"000000",
171 SRVAL_B => O"000000",
175 DOA =>
L_DOA(18*i+15
downto 18*i
),
176 DOB =>
L_DOB(18*i+15
downto 18*i
),
177 DOPA =>
L_DOA(18*i+17
downto 18*i+16
),
178 DOPB =>
L_DOB(18*i+17
downto 18*i+16
),
183 DIA =>
L_DIA(18*i+15
downto 18*i
),
184 DIB =>
L_DIB(18*i+15
downto 18*i
),
185 DIPA =>
L_DIA(18*i+17
downto 18*i+16
),
186 DIPB =>
L_DIB(18*i+17
downto 18*i+16
),
199 end generate AW_10_S18;
202 GL: for i in DWIDTH/16-1 downto 0 generate
212 DOA =>
DOA(16*i+15
downto 16*i
),
213 DOB =>
DOB(16*i+15
downto 16*i
),
220 DIA =>
DIA(16*i+15
downto 16*i
),
221 DIB =>
DIB(16*i+15
downto 16*i
),
232 end generate AW_10_S16;
249 GL: for i in dw_mem/9-1 downto 0 generate
259 DOA =>
L_DOA(9*i+7
downto 9*i
),
260 DOB =>
L_DOB(9*i+7
downto 9*i
),
261 DOPA =>
L_DOA(9*i+8
downto 9*i+8
),
262 DOPB =>
L_DOB(9*i+8
downto 9*i+8
),
267 DIA =>
L_DIA(9*i+7
downto 9*i
),
268 DIB =>
L_DIB(9*i+7
downto 9*i
),
269 DIPA =>
L_DIA(9*i+8
downto 9*i+8
),
270 DIPB =>
L_DIB(9*i+8
downto 9*i+8
),
283 end generate AW_11_S9;
286 GL: for i in DWIDTH/8-1 downto 0 generate
296 DOA =>
DOA(8*i+7
downto 8*i
),
297 DOB =>
DOB(8*i+7
downto 8*i
),
304 DIA =>
DIA(8*i+7
downto 8*i
),
305 DIB =>
DIB(8*i+7
downto 8*i
),
316 end generate AW_11_S8;
318 AW_12_S4: if AWIDTH = 12 generate
333 GL: for i in dw_mem/4-1 downto 0 generate
343 DOA =>
L_DOA(4*i+3
downto 4*i
),
344 DOB =>
L_DOB(4*i+3
downto 4*i
),
349 DIA =>
L_DIA(4*i+3
downto 4*i
),
350 DIB =>
L_DIB(4*i+3
downto 4*i
),
363 end generate AW_12_S4;
365 AW_13_S2: if AWIDTH = 13 generate
380 GL: for i in dw_mem/2-1 downto 0 generate
390 DOA =>
L_DOA(2*i+1
downto 2*i
),
391 DOB =>
L_DOB(2*i+1
downto 2*i
),
396 DIA =>
L_DIA(2*i+1
downto 2*i
),
397 DIB =>
L_DIB(2*i+1
downto 2*i
),
410 end generate AW_13_S2;
412 AW_14_S1: if AWIDTH = 14 generate
413 GL: for i in DWIDTH-1 downto 0 generate
423 DOA =>
DOA(i
downto i
),
424 DOB =>
DOB(i
downto i
),
429 DIA =>
DIA(i
downto i
),
430 DIB =>
DIB(i
downto i
),
439 end generate AW_14_S1;
positive :=(( DWIDTH+ 35)/ 36)* 36 dw_mem
boolean :=( DWIDTHmod 16)= 0and(( DWIDTH+ 17)/ 18)=(( DWIDTH+ 16)/ 16) ok_mod16
boolean :=( DWIDTHmod 32)= 0and(( DWIDTH+ 8)/ 9)=(( DWIDTH+ 7)/ 8) ok_mod08
boolean :=( DWIDTHmod 32)= 0and(( DWIDTH+ 35)/ 36)=(( DWIDTH+ 31)/ 32) ok_mod32
slv( dw_mem- 1 downto 0) :=( others => '0') L_DIB
slv( dw_mem- 1 downto 0) :=( others => '0') L_DOA
slv( dw_mem- 1 downto 0) :=( others => '0') L_DIA
slv( dw_mem- 1 downto 0) :=( others => '0') L_DOB
in DIA slv( DWIDTH- 1 downto 0)
in ADDRB slv( AWIDTH- 1 downto 0)
WRITE_MODE string := "READ_FIRST"
in ADDRA slv( AWIDTH- 1 downto 0)
out DOB slv( DWIDTH- 1 downto 0)
in DIB slv( DWIDTH- 1 downto 0)
out DOA slv( DWIDTH- 1 downto 0)