OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [mem/] [cache/] [libs/] [setrepl_lib.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
-- $(lic)
2
-- $(help_generic)
3
-- $(help_local)
4
 
5
library ieee;
6
use ieee.std_logic_1164.all;
7
use work.cache_config.all;
8
 
9
-- PREFIX: srpl_xxx
10
package setrepl_lib is
11
 
12
-- 3-way set permutations
13
-- s012 => set 0 - least recently used
14
--         set 2 - most recently used
15
constant s012 : std_logic_vector(2 downto 0) := "000";
16
constant s021 : std_logic_vector(2 downto 0) := "001";
17
constant s102 : std_logic_vector(2 downto 0) := "010";
18
constant s120 : std_logic_vector(2 downto 0) := "011";
19
constant s201 : std_logic_vector(2 downto 0) := "100";
20
constant s210 : std_logic_vector(2 downto 0) := "101";
21
 
22
 
23
-- 4-way set permutations
24
-- s0123 => set 0 - least recently used
25
--          set 3 - most recently used
26
constant s0123 : std_logic_vector(4 downto 0) := "00000";
27
constant s0132 : std_logic_vector(4 downto 0) := "00001";
28
constant s0213 : std_logic_vector(4 downto 0) := "00010";
29
constant s0231 : std_logic_vector(4 downto 0) := "00011";
30
constant s0312 : std_logic_vector(4 downto 0) := "00100";
31
constant s0321 : std_logic_vector(4 downto 0) := "00101";
32
constant s1023 : std_logic_vector(4 downto 0) := "00110";
33
constant s1032 : std_logic_vector(4 downto 0) := "00111";
34
constant s1203 : std_logic_vector(4 downto 0) := "01000";
35
constant s1230 : std_logic_vector(4 downto 0) := "01001";
36
constant s1302 : std_logic_vector(4 downto 0) := "01010";
37
constant s1320 : std_logic_vector(4 downto 0) := "01011";
38
constant s2013 : std_logic_vector(4 downto 0) := "01100";
39
constant s2031 : std_logic_vector(4 downto 0) := "01101";
40
constant s2103 : std_logic_vector(4 downto 0) := "01110";
41
constant s2130 : std_logic_vector(4 downto 0) := "01111";
42
constant s2301 : std_logic_vector(4 downto 0) := "10000";
43
constant s2310 : std_logic_vector(4 downto 0) := "10001";
44
constant s3012 : std_logic_vector(4 downto 0) := "10010";
45
constant s3021 : std_logic_vector(4 downto 0) := "10011";
46
constant s3102 : std_logic_vector(4 downto 0) := "10100";
47
constant s3120 : std_logic_vector(4 downto 0) := "10101";
48
constant s3201 : std_logic_vector(4 downto 0) := "10110";
49
constant s3210 : std_logic_vector(4 downto 0) := "10111";
50
 
51
type lru_3set_table_vector_type is array(0 to 2) of std_logic_vector(2 downto 0);
52
type lru_3set_table_type is array (0 to 7) of lru_3set_table_vector_type;
53
 
54
constant lru_3set_table : lru_3set_table_type :=
55
  ( (s120, s021, s012),                   -- s012
56
    (s210, s021, s012),                   -- s021
57
    (s120, s021, s102),                   -- s102
58
    (s120, s201, s102),                   -- s120
59
    (s210, s201, s012),                   -- s201
60
    (s210, s201, s102),                   -- s210
61
    (s210, s201, s102),                   -- dummy
62
    (s210, s201, s102)                    -- dummy
63
  );
64
 
65
type lru_4set_table_vector_type is array(0 to 3) of std_logic_vector(4 downto 0);
66
type lru_4set_table_type is array(0 to 31) of lru_4set_table_vector_type;
67
 
68
constant lru_4set_table : lru_4set_table_type :=
69
  ( (s1230, s0231, s0132, s0123),       -- s0123
70
    (s1320, s0321, s0132, s0123),       -- s0132
71
    (s2130, s0231, s0132, s0213),       -- s0213
72
    (s2310, s0231, s0312, s0213),       -- s0231
73
    (s3120, s0321, s0312, s0123),       -- s0312    
74
    (s3210, s0321, s0312, s0213),       -- s0321
75
    (s1230, s0231, s1032, s1023),       -- s1023
76
    (s1320, s0321, s1032, s1023),       -- s1032
77
    (s1230, s2031, s1032, s1203),       -- s1203
78
    (s1230, s2301, s1302, s1203),       -- s1230
79
    (s1320, s3021, s1302, s1023),       -- s1302
80
    (s1320, s3201, s1302, s1203),       -- s1320
81
    (s2130, s2031, s0132, s2013),       -- s2013
82
    (s2310, s2031, s0312, s2013),       -- s2031
83
    (s2130, s2031, s1032, s2103),       -- s2103
84
    (s2130, s2301, s1302, s2103),       -- s2130      
85
    (s2310, s2301, s3012, s2013),       -- s2301
86
    (s2310, s2301, s3102, s2103),       -- s2310
87
    (s3120, s3021, s3012, s0123),       -- s3012
88
    (s3210, s3021, s3012, s0213),       -- s3021
89
    (s3120, s3021, s3102, s1023),       -- s3102
90
    (s3120, s3201, s3102, s1203),       -- s3120
91
    (s3210, s3201, s3012, s2013),       -- s3201
92
    (s3210, s3201, s3102, s2103),       -- s3210
93
    (s3210, s3201, s3102, s2103),        -- dummy
94
    (s3210, s3201, s3102, s2103),        -- dummy
95
    (s3210, s3201, s3102, s2103),        -- dummy
96
    (s3210, s3201, s3102, s2103),        -- dummy
97
    (s3210, s3201, s3102, s2103),        -- dummy
98
    (s3210, s3201, s3102, s2103),        -- dummy
99
    (s3210, s3201, s3102, s2103),        -- dummy
100
    (s3210, s3201, s3102, s2103)         -- dummy
101
  );
102
 
103
type lru3_repl_table_single_type is array(0 to 2) of integer range 0 to 2;
104
type lru3_repl_table_type is array(0 to 7) of lru3_repl_table_single_type;
105
 
106
constant lru3_repl_table : lru3_repl_table_type :=
107
  ( (0, 1, 2),      -- s012
108
    (0, 2, 2),      -- s021
109
    (1, 1, 2),      -- s102
110
    (1, 1, 2),      -- s120
111
    (2, 2, 2),      -- s201
112
    (2, 2, 2),      -- s210
113
    (2, 2, 2),      -- dummy
114
    (2, 2, 2)       -- dummy
115
  );
116
 
117
type lru4_repl_table_single_type is array(0 to 3) of integer range 0 to 3;
118
type lru4_repl_table_type is array(0 to 31) of lru4_repl_table_single_type;
119
 
120
constant lru4_repl_table : lru4_repl_table_type :=
121
  ( (0, 1, 2, 3), -- s0123
122
    (0, 1, 3, 3), -- s0132
123
    (0, 2, 2, 3), -- s0213
124
    (0, 2, 2, 3), -- s0231
125
    (0, 3, 3, 3), -- s0312
126
    (0, 3, 3, 3), -- s0321
127
    (1, 1, 2, 3), -- s1023
128
    (1, 1, 3, 3), -- s1032
129
    (1, 1, 2, 3), -- s1203
130
    (1, 1, 2, 3), -- s1230
131
    (1, 1, 3, 3), -- s1302
132
    (1, 1, 3, 3), -- s1320
133
    (2, 2, 2, 3), -- s2013
134
    (2, 2, 2, 3), -- s2031
135
    (2, 2, 2, 3), -- s2103
136
    (2, 2, 2, 3), -- s2130
137
    (2, 2, 2, 3), -- s2301
138
    (2, 2, 2, 3), -- s2310
139
    (3, 3, 3, 3), -- s3012
140
    (3, 3, 3, 3), -- s3021
141
    (3, 3, 3, 3), -- s3102
142
    (3, 3, 3, 3), -- s3120
143
    (3, 3, 3, 3), -- s3201
144
    (3, 3, 3, 3), -- s3210
145
    (0, 0, 0, 0), -- dummy
146
    (0, 0, 0, 0), -- dummy
147
    (0, 0, 0, 0), -- dummy
148
    (0, 0, 0, 0), -- dummy
149
    (0, 0, 0, 0), -- dummy
150
    (0, 0, 0, 0), -- dummy
151
    (0, 0, 0, 0), -- dummy
152
    (0, 0, 0, 0)  -- dummy
153
  );
154
 
155
end setrepl_lib;
156
 
157
 
158
package body setrepl_lib is
159
 
160
 
161
end setrepl_lib;

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.