-- $(lic)
-- $(help_generic)
-- $(help_local)
library ieee;
use ieee.std_logic_1164.all;
use work.config.all;
use work.cache_config.all;
use work.int.all;
use work.gencmem_lib.all;
-- PREFIX: kicl_xxx
package genic_lib is
type gicl_ctrl is record
burst : std_logic;
end record;
-- icache tag layout
-- addr: | tag | (tag)addr | line | 00 |
-- |
-- +-----------------------------+
-- | +---------------------+---------+
-- +>| CLTAG | CLVALID |
-- +---------------------+---------+
-- addr to cmem-tag fields/access layout
constant GICL_TTAG_D : integer := 2 + GCML_IC_TLINE_BSZ + GCML_IC_TADDR_BSZ;
constant GICL_TTAG_U : integer := (2 + GCML_IC_TLINE_BSZ + GCML_IC_TADDR_BSZ + GCML_IC_TTAG_BSZ) -1;
constant GICL_TADDR_D : integer := 2 + GCML_IC_TLINE_BSZ;
constant GICL_TADDR_U : integer := (2 + GCML_IC_TLINE_BSZ + GCML_IC_TADDR_BSZ) -1;
constant GICL_TLINE_D : integer := 2;
constant GICL_TLINE_U : integer := (2 + GCML_IC_TLINE_BSZ ) -1;
-- addr to cmem-data fields/access layout
constant GICL_DADDR_D : integer := 2 + GCML_IC_DLINE_BSZ;
constant GICL_DADDR_U : integer := (2 + GCML_IC_DLINE_BSZ + GCML_IC_DADDR_BSZ) -1;
constant GICL_DLINE_D : integer := 2;
constant GICL_DLINE_U : integer := (2 + GCML_IC_DLINE_BSZ ) -1;
function gicl_is_taghit (
addr : std_logic_vector(31 downto 0);
cline : gcml_ic_tline
) return boolean;
function gicl_is_linevalid (
addr : std_logic_vector(31 downto 0);
cline : gcml_ic_tline
) return boolean;
-- check weather next is last of line
function gicl_is_onetogo(
addr : std_logic_vector(31 downto 0)
) return boolean;
end genic_lib;
package body genic_lib is
function gicl_is_taghit (
addr : std_logic_vector(31 downto 0);
cline : gcml_ic_tline
) return boolean is
variable tmp : boolean;
variable tag : std_logic_vector(GICL_TTAG_U downto GICL_TTAG_D);
begin
tmp := false;
tag := addr(GICL_TTAG_U downto GICL_TTAG_D);
if (tag = cline.tag) then
tmp := true;
end if;
return tmp;
end;
function gicl_is_linevalid (
addr : std_logic_vector(31 downto 0);
cline : gcml_ic_tline
) return boolean is
variable tmp : boolean;
variable line : std_logic_vector(GICL_TLINE_U downto GICL_TLINE_D);
begin
tmp := false;
line := addr(GICL_TLINE_U downto GICL_TLINE_D);
if (cline.valid(lin_convint(line)) = '1')
then
tmp := true;
end if;
return tmp;
end;
constant lastaddr : std_logic_vector(GCML_IC_TLINE_BSZ-1 downto 0) := (others=>'1');
function gicl_is_onetogo (
addr : std_logic_vector(31 downto 0)
) return boolean is
variable tmp : boolean;
begin
tmp := false;
if addr(GICL_TLINE_U downto GICL_TLINE_D+1) = lastaddr(GCML_IC_TLINE_BSZ-1 downto 1) then
tmp := true;
end if;
return tmp;
end;
end genic_lib;
Enum rdatatype defined in /tmp/build_html/vhdl/sparc/mmu_icache.vhd |
Constant words defined in /tmp/build_html/vhdl/tech/tech_axcel.vhd |
Enum cache_replace_type defined in /tmp/build_html/vhdl/sparc/leon_target.vhd |
Enum astates defined in /tmp/build_html/vhdl/sparc/mmu_acache.vhd |
Enum cpins_type defined in /tmp/build_html/vhdl/sparc/fp1eu.vhd |
Enum dsnoop_type defined in /tmp/build_html/vhdl/sparc/leon_target.vhd |
Enum txfsmtype defined in /tmp/build_html/vhdl/sparc/dcom_uart.vhd |
Enum areatype defined in /tmp/build_html/vhdl/peripherals/mem/mctrl.vhd |
Enum fpu_state defined in /tmp/build_html/vhdl/sparc/fpu_lth.vhd |
Type cache_config_type defined in /tmp/build_html/vhdl/sparc/leon_target.vhd |
Constant cache_config defined in /tmp/build_html/vhdl/sparc/leon_device.vhd |
Type gicl_ctrl defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant lin_log2 defined in /tmp/build_html/vhdl/libs/int.vhd |
Constant CFG_IC_TLINE_SZ defined in /tmp/build_html/vhdl/mem/cache/cache_config.vhd |
Constant GCML_IC_TLINE_BSZ defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Constant CFG_IC_SET_SZ defined in /tmp/build_html/vhdl/mem/cache/cache_config.vhd |
Constant GCML_IC_TADDR_BSZ defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Constant GICL_TTAG_D defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant CFG_IC_ADDR_SZ defined in /tmp/build_html/vhdl/mem/cache/cache_config.vhd |
Constant GCML_IC_TTAG_BSZ defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Constant GICL_TTAG_U defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_TADDR_D defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_TADDR_U defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_TLINE_D defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_TLINE_U defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant CFG_IC_DLINE_SZ defined in /tmp/build_html/vhdl/mem/cache/cache_config.vhd |
Constant GCML_IC_DLINE_BSZ defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Constant GICL_DADDR_D defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GCML_IC_DADDR_BSZ defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Constant GICL_DADDR_U defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_DLINE_D defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant GICL_DLINE_U defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Type gcml_ic_tline defined in /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd |
Function gicl_is_linevalid defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Constant lastaddr defined in /tmp/build_html/vhdl/mem/cache/libs/kecs_libicache.vhd |
Function gicl_is_onetogo defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
Function gicl_is_taghit defined in /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd |
If you have question mail to: Konrad Eisele<eiselekd@web.de>, created: Wed Apr 14 13:07:33 WEDT 2004
;
This is part of the Core distribution