22use ieee.std_logic_1164.
all;
25use unisim.vcomponents.
ALL;
57 report "assert(AWIDTH>=9 and AWIDTH<=14): unsupported BRAM from factor"
71 GL: for i in dw_mem/36-1 downto 0 generate
74 INIT => O"000000000000",
75 SRVAL => O"000000000000",
78 DO =>
L_DO(36*i+31
downto 36*i
),
79 DOP =>
L_DO(36*i+35
downto 36*i+32
),
82 DI =>
L_DI(36*i+31
downto 36*i
),
83 DIP =>
L_DI(36*i+35
downto 36*i+32
),
92 end generate AW_09_S36;
95 GL: for i in DWIDTH/32-1 downto 0 generate
102 DO =>
DO(32*i+31
downto 32*i
),
106 DI =>
DI(32*i+31
downto 32*i
),
113 end generate AW_09_S32;
126 GL: for i in dw_mem/18-1 downto 0 generate
133 DO =>
L_DO(18*i+15
downto 18*i
),
134 DOP =>
L_DO(18*i+17
downto 18*i+16
),
137 DI =>
L_DI(18*i+15
downto 18*i
),
138 DIP =>
L_DI(18*i+17
downto 18*i+16
),
147 end generate AW_10_S18;
150 GL: for i in DWIDTH/16-1 downto 0 generate
157 DO =>
DO(16*i+15
downto 16*i
),
161 DI =>
DI(16*i+15
downto 16*i
),
168 end generate AW_10_S16;
181 GL: for i in dw_mem/9-1 downto 0 generate
188 DO =>
L_DO(9*i+7
downto 9*i
),
189 DOP =>
L_DO(9*i+8
downto 9*i+8
),
192 DI =>
L_DI(9*i+7
downto 9*i
),
193 DIP =>
L_DI(9*i+8
downto 9*i+8
),
202 end generate AW_11_S9;
205 GL: for i in DWIDTH/8-1 downto 0 generate
212 DO =>
DO(8*i+7
downto 8*i
),
216 DI =>
DI(8*i+7
downto 8*i
),
223 end generate AW_11_S8;
225 AW_12_S4: if AWIDTH = 12 generate
236 GL: for i in dw_mem/4-1 downto 0 generate
243 DO =>
L_DO(4*i+3
downto 4*i
),
246 DI =>
L_DI(4*i+3
downto 4*i
),
255 end generate AW_12_S4;
257 AW_13_S2: if AWIDTH = 13 generate
268 GL: for i in dw_mem/2-1 downto 0 generate
275 DO =>
L_DO(2*i+1
downto 2*i
),
278 DI =>
L_DI(2*i+1
downto 2*i
),
287 end generate AW_13_S2;
289 AW_14_S1: if AWIDTH = 14 generate
290 GL: for i in DWIDTH-1 downto 0 generate
297 DO =>
DO(i
downto i
),
300 DI =>
DI(i
downto i
),
306 end generate AW_14_S1;
positive :=(( DWIDTH+ 35)/ 36)* 36 dw_mem
slv( dw_mem- 1 downto 0) :=( others => '0') L_DO
boolean :=( DWIDTHmod 16)= 0and(( DWIDTH+ 17)/ 18)=(( DWIDTH+ 16)/ 16) ok_mod16
boolean :=( DWIDTHmod 32)= 0and(( DWIDTH+ 8)/ 9)=(( DWIDTH+ 7)/ 8) ok_mod08
slv( dw_mem- 1 downto 0) :=( others => '0') L_DI
boolean :=( DWIDTHmod 32)= 0and(( DWIDTH+ 35)/ 36)=(( DWIDTH+ 31)/ 32) ok_mod32
in ADDR slv( AWIDTH- 1 downto 0)
out DO slv( DWIDTH- 1 downto 0)
in DI slv( DWIDTH- 1 downto 0)
WRITE_MODE string := "READ_FIRST"