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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [mem/] [cache/] [config.pl] - Blame information for rev 6

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
#!/usr/bin/perl
2
 
3
%cache_cfg = (
4
 
5
    # icache 
6
    CFG_ICACHE_SZ => 2,
7
    CFG_ICACHE_LSZ => 16,
8
    CFG_ICACHE_ASSO => 1,
9
    CFG_ICACHE_ALGO => "rnd",
10
    CFG_ICACHE_LOCK => 0,
11
    CFG_ICACHE_REPL => cfg_repl_rnd,
12
 
13
    # dcache 
14
    CFG_DCACHE_TYPE => writethrough,
15
    CFG_DCACHE_ALLOCATE => 0,
16
    CFG_DCACHE_SZ => 1,
17
    CFG_DCACHE_LSZ => 16,
18
    CFG_DCACHE_ASSO => 1,
19
    CFG_DCACHE_ALGO => "rnd",
20
    CFG_DCACHE_WB => 2,
21
    CFG_DCACHE_LOCK => 0,
22
    CFG_DCACHE_REPL => cfg_repl_rnd
23
 
24
);
25
 
26
%cache_map =
27
   (
28
 
29
    # icache config 
30
    CFG_ICACHE_ASSO => [
31
        CONFIG_ICACHE_ASSO1 => 1,
32
        CONFIG_ICACHE_ASSO2 => 2,
33
        CONFIG_ICACHE_ASSO3 => 3,
34
        CONFIG_ICACHE_ASSO4 => 4
35
        ],
36
    CFG_ICACHE_ALGO => [
37
        CONFIG_ICACHE_ALGORND => "rnd"
38
        ],
39
 
40
    CFG_ICACHE_SZ => [
41
        CONFIG_ICACHE_SZ1 => 1,
42
        CONFIG_ICACHE_SZ2 => 2,
43
        CONFIG_ICACHE_SZ4 => 4,
44
        CONFIG_ICACHE_SZ8 => 8,
45
        CONFIG_ICACHE_SZ16 => 16,
46
        CONFIG_ICACHE_SZ32 => 32,
47
        CONFIG_ICACHE_SZ64 => 64
48
        ],
49
 
50
    CFG_ICACHE_LSZ => [
51
        CONFIG_ICACHE_LZ4 => 4,
52
        CONFIG_ICACHE_LZ8 => 8
53
        ],
54
 
55
    CFG_ICACHE_LOCK => [
56
        CONFIG_GENICACHE_LOCK => 1
57
        ],
58
 
59
    CFG_ICACHE_REPL =>  [
60
        CONFIG_ICACHE_ALGORND => "cfg_repl_rnd",
61
        CONFIG_ICACHE_ALGOLRR => "cfg_repl_lrr",
62
        CONFIG_ICACHE_ALGOLRU => "cfg_repl_lru"
63
        ],
64
 
65
    # dcache config 
66
    CFG_DCACHE_TYPE => [
67
        CONFIG_DCACHE_WRITEBACK => writeback,
68
        CONFIG_DCACHE_WRITETHROUGH => writethrough
69
        ],
70
 
71
    CFG_DCACHE_ALLOCATE => [
72
        CONFIG_DCACHE_ALLOCATEONSTORE => 1,
73
        ],
74
 
75
    CFG_DCACHE_SZ => [
76
        CONFIG_DCACHE_SZ1 => 1,
77
        CONFIG_DCACHE_SZ2 => 2,
78
        CONFIG_DCACHE_SZ4 => 4,
79
        CONFIG_DCACHE_SZ8 => 8,
80
        CONFIG_DCACHE_SZ16 => 16,
81
        CONFIG_DCACHE_SZ32 => 32,
82
        CONFIG_DCACHE_SZ64 => 64
83
        ],
84
 
85
    CFG_DCACHE_LSZ => [
86
        CONFIG_DCACHE_LZ4 => 4,
87
        CONFIG_DCACHE_LZ8 => 8
88
        ],
89
 
90
    CFG_DCACHE_ASSO => [
91
        CONFIG_DCACHE_ASSO1 => 1,
92
        CONFIG_DCACHE_ASSO2 => 2,
93
        CONFIG_DCACHE_ASSO3 => 3,
94
        CONFIG_DCACHE_ASSO4 => 4
95
        ],
96
 
97
    CFG_DCACHE_ALGO => [
98
        CONFIG_DCACHE_ALGORND => "rnd"
99
        ],
100
 
101
    CFG_DCACHE_WB => [
102
        CONFIG_DCACHE_WB_SZ1 => "1",
103
        CONFIG_DCACHE_WB_SZ2 => "2",
104
        CONFIG_DCACHE_WB_SZ4 => "4",
105
        CONFIG_DCACHE_WB_SZ8 => "8",
106
        CONFIG_DCACHE_WB_SZ16 => "16"
107
        ],
108
 
109
    CFG_DCACHE_LOCK => [
110
        CONFIG_GENDCACHE_LOCK => 1
111
        ],
112
 
113
    CFG_DCACHE_REPL =>  [
114
        CONFIG_DCACHE_ALGORND => "cfg_repl_rnd",
115
        CONFIG_DCACHE_ALGOLRR => "cfg_repl_lrr",
116
        CONFIG_DCACHE_ALGOLRU => "cfg_repl_lru"
117
        ]
118
 
119
 
120
);
121
 
122
sub cache_config_file {
123
 
124
    my ($pericfg) = @_;
125
    my %pericfg = %{$pericfg};
126
    my $fn = "vhdl/mem/cache/cache_config.vhd";
127
 
128
    if (-f $fn) {
129
        print STDERR ("Making backup of $fn\n");
130
        `cp $fn $fn.bck`;
131
    }
132
 
133
    foreach $k (keys %pericfg) {
134
        $v = $pericfg{$k};
135
        print ("$k:$v\n");
136
        $cache_config_file_data = cfg_replace ($k,$v,$cache_config_file_data);
137
    }
138
 
139
    if (open(FILEH, ">$fn")) {
140
        print FILEH $cache_config_file_data;
141
    } else {
142
        die ("opening \"$fn\": $!\n");
143
    }
144
}
145
 
146
$cache_config_file_data=<<CACHE_CONFIG_END;
147
 
148
library IEEE;
149
use IEEE.std_logic_1164.all;
150
use IEEE.std_logic_arith.all;
151
 
152
package cache_config is
153
 
154
-----------------------------------------------------------------------------
155
-- Automatically generated by vhdl/mem/cache/config.pl from of .config
156
-----------------------------------------------------------------------------
157
 
158
type cfg_repl_type is (cfg_repl_rnd, cfg_repl_lrr, cfg_repl_lru );
159
 
160
-- icache
161
constant CFG_IC_SETS     : integer range 1 to 4  := %CFG_ICACHE_ASSO%;  -- 1-4 sets
162
constant CFG_IC_SET_SZ   : integer range 1 to 64 := %CFG_ICACHE_SZ%;  -- 1-64 kb
163
constant CFG_IC_TLINE_SZ  : integer range 2 to 8  := %CFG_ICACHE_LSZ%; -- 2-8 words
164
constant CFG_IC_DLINE_SZ  : integer range 1 to 4  := 1; -- 1-4 words
165
constant CFG_IC_ADDR_SZ  : integer := 32;
166
constant CFG_IC_LOCK  : boolean := %CFG_ICACHE_LOCK%[b];
167
constant CFG_IC_REPL  : cfg_repl_type := %CFG_ICACHE_REPL%;
168
 
169
-- dcache
170
 
171
constant CFG_DC_SETS     : integer range 1 to 4  := %CFG_DCACHE_ASSO%;   -- 1-4 sets
172
constant CFG_DC_SET_SZ   : integer range 1 to 64 := %CFG_DCACHE_SZ%;   -- 1-64 kb
173
constant CFG_DC_TLINE_SZ  : integer range 2 to 8  := %CFG_DCACHE_LSZ%;  -- 2-8 words
174
constant CFG_DC_DLINE_SZ  : integer range 1 to 8 := 1;  -- 1-4 words
175
constant CFG_DC_ADDR_SZ  : integer := 32;
176
constant CFG_DC_LOCK  : boolean := %CFG_DCACHE_LOCK%[b];
177
constant CFG_DC_REPL  : cfg_repl_type := %CFG_DCACHE_REPL%;
178
 
179
 
180
-- writebuffer
181
constant CFG_WBBUF_SZ  : integer range 1 to 16  := %CFG_DCACHE_WB%;
182
 
183
-----------------------------------------------------------------------------
184
-- end of automatic configuration
185
-----------------------------------------------------------------------------
186
 
187
end cache_config;
188
 
189
CACHE_CONFIG_END
190
 
191
1;
192
 
193
 
194
 
195
 
196
 
197
 
198
 
199
 
200
 
201
 
202
 
203
 

powered by: WebSVN 2.1.0

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