23use ieee.std_logic_1164.
all;
24use ieee.numeric_std.
all;
49 MONI : out sramif2migui_moni_type;
150 report "assert( BAWIDTH = 3 or 4 )"
220 if rising_edge(CLK) then
228 end process proc_regs;
237 variable iga : integer := 0;
238 variable ireqena : slbit := '0';
239 variable iackw : slbit := '0';
240 variable imoni : sramif2migui_moni_type := sramif2migui_moni_init;
242 variable iwrbuf : slv(dwidth-1 downto 0) := (others=>'0');
243 variable ireqdi : slv(rfwidth-1 downto 0) := (others=>'0');
253 imoni := sramif2migui_moni_init;
269 if r.actr='0' and r.actw='0' then
282 imoni.wrflush := '1';
293 iga := to_integer(unsigned(r.req_addr(sa_f_ga)));
298 if r.req_be(0) = '1' then
299 n.wrbuf(32*iga+ 7 downto 32*iga ) := r.req_di( 7 downto 0);
301 if r.req_be(1) = '1' then
302 n.wrbuf(32*iga+15 downto 32*iga+ 8) := r.req_di(15 downto 8);
304 if r.req_be(2) = '1' then
305 n.wrbuf(32*iga+23 downto 32*iga+16) := r.req_di(23 downto 16);
307 if r.req_be(3) ='1' then
308 n.wrbuf(32*iga+31 downto 32*iga+24) := r.req_di(31 downto 24);
311 n.wrtag := r.req_addr(sa_f_ta);
312 n.wrpend(4*iga+3 downto 4*iga) :=
313 n.wrpend(4*iga+3 downto 4*iga) or r.req_be;
315 if r.rdtag = r.req_addr(sa_f_ta) then
330 if r.rdtag=r.req_addr(sa_f_ta) and r.rdval='1' then
331 n.res_do := r.rdbuf(32*iga+31 downto 32*iga);
335 imoni.rdrhit := not r.rdnew;
340 imoni.wrflush := '1';
341 elsif r.rdpend = '0' then
344 n.rdtag := r.req_addr(sa_f_ta);
375 end process proc_next;
406 end process proc_req2app;
412 end process proc_app2res;
std_logic_vector( 19 downto 0) slv20
std_logic_vector( 3 downto 0) slv4
std_logic_vector( 2 downto 0) slv3
std_logic_vector( 31 downto 0) slv32
positive := dwidth+ mwidth+ tawidth+ 1 rfwidth
integer range dwidth+ mwidth+ tawidth downto MWIDTH+ tawidth+ 1 rf_f_data
integer range BAWIDTH- 3 downto 0 sa_f_ga
integer range 20- 1 downto BAWIDTH- 2 sa_f_ta
slv( rfwidth- 1 downto 0) :=( others => '0') REQ_DI
positive := 8* mwidth dwidth
positive := 20-( BAWIDTH- 2) tawidth
positive := 2** BAWIDTH mwidth
slv4 :=( others => '0') REQ_SIZE
slv( dwidth- 1 downto 0) :=( others => '0') RES_DI
slbit := '0' APP_WDF_RDY_CLK
slv( mwidth- 1 downto 0) :=( others => '0') pendzero
regs_type := regs_init R_REGS
integer range tawidth downto 1 rf_f_addr
integer range mwidth+ tawidth downto tawidth+ 1 rf_f_mask
slv( dwidth- 1 downto 0) :=( others => '0') RES_DO
positive := 2**( BAWIDTH- 2) ngrp
slv( rfwidth- 1 downto 0) :=( others => '0') REQ_DO
integer range 22- 1 downto BAWIDTH ma_f_ta
regs_type :=( '0', '0', '0',( others => '0'),( others => '0'),( others => '0'),( others => '0'), bufzero, tagzero, '0', '0', '0', bufzero, tagzero, pendzero) regs_init
slbit := '0' MIGUIRST_CLK
slv( dwidth- 1 downto 0) :=( others => '0') bufzero
slv( tawidth- 1 downto 0) :=( others => '0') tagzero
in APP_RD_DATA_VALID slbit
in INIT_CALIB_COMPLETE slbit
out MONI sramif2migui_moni_type
in APP_RD_DATA slv( 8*( 2** BAWIDTH)- 1 downto 0)
out APP_WDF_DATA slv( 8*( 2** BAWIDTH)- 1 downto 0)
out APP_ADDR slv( MAWIDTH- 1 downto 0)
out APP_WDF_MASK slv(( 2** BAWIDTH)- 1 downto 0)