Skip to content

Commit a5ca851

Browse files
ezeliolicreinwar
andcommitted
Hybrid cache/spm: parametrization
Co-authored-by: Christopher Reinwardt <creinwar@iis.ee.ethz.ch>
1 parent cff0b01 commit a5ca851

21 files changed

Lines changed: 217 additions & 63 deletions

core/include/cv32a60x_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ package cva6_config_pkg;
2121
localparam CVA6ConfigAxiDataWidth = 64; // axi_pkg.sv
2222
localparam CVA6ConfigDataUserWidth = 32; // axi_pkg.sv
2323

24+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
25+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
26+
2427
localparam config_pkg::cva6_user_cfg_t cva6_cfg = '{
2528
XLEN: unsigned'(CVA6ConfigXlen),
2629
VLEN: unsigned'(32),
@@ -84,9 +87,9 @@ package cva6_config_pkg;
8487
NrNonIdempotentRules: unsigned'(0),
8588
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
8689
NonIdempotentLength: 1024'({64'b0, 64'b0}),
87-
NrExecuteRegionRules: unsigned'(0),
88-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
89-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
90+
NrExecuteRegionRules: unsigned'(4),
91+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
92+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
9093
NrCachedRegionRules: unsigned'(1),
9194
CachedRegionAddrBase: 1024'({64'h8000_0000}),
9295
CachedRegionLength: 1024'({64'h40000000}),
@@ -101,6 +104,10 @@ package cva6_config_pkg;
101104
IcacheByteSize: unsigned'(2048),
102105
IcacheSetAssoc: unsigned'(2),
103106
IcacheLineWidth: unsigned'(128),
107+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
108+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
109+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
110+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
104111
DCacheType: config_pkg::HPDCACHE_WT,
105112
DcacheByteSize: unsigned'(2028),
106113
DcacheSetAssoc: unsigned'(2),

core/include/cv32a65x_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ package cva6_config_pkg;
2121
localparam CVA6ConfigAxiDataWidth = 64; // axi_pkg.sv
2222
localparam CVA6ConfigDataUserWidth = 32; // axi_pkg.sv
2323

24+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
25+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
26+
2427
localparam config_pkg::cva6_user_cfg_t cva6_cfg = '{
2528
XLEN: unsigned'(CVA6ConfigXlen),
2629
VLEN: unsigned'(32),
@@ -85,9 +88,9 @@ package cva6_config_pkg;
8588
NrNonIdempotentRules: unsigned'(0),
8689
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
8790
NonIdempotentLength: 1024'({64'b0, 64'b0}),
88-
NrExecuteRegionRules: unsigned'(0),
89-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
90-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
91+
NrExecuteRegionRules: unsigned'(4),
92+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
93+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
9194
NrCachedRegionRules: unsigned'(1),
9295
CachedRegionAddrBase: 1024'({64'h8000_0000}),
9396
CachedRegionLength: 1024'({64'h40000000}),
@@ -102,6 +105,10 @@ package cva6_config_pkg;
102105
IcacheByteSize: unsigned'(2048),
103106
IcacheSetAssoc: unsigned'(2),
104107
IcacheLineWidth: unsigned'(128),
108+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
109+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
110+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
111+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
105112
DCacheType: config_pkg::HPDCACHE_WT,
106113
DcacheByteSize: unsigned'(2028),
107114
DcacheSetAssoc: unsigned'(2),

core/include/cv32a6_ima_sv32_fpga_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ package cva6_config_pkg;
4646
localparam CVA6ConfigDcacheSetAssoc = 2;
4747
localparam CVA6ConfigDcacheLineWidth = 128;
4848

49+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
50+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
51+
4952
localparam CVA6ConfigDcacheIdWidth = 1;
5053
localparam CVA6ConfigMemTidWidth = 2;
5154

@@ -137,9 +140,9 @@ package cva6_config_pkg;
137140
NrNonIdempotentRules: unsigned'(2),
138141
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
139142
NonIdempotentLength: 1024'({64'b0, 64'b0}),
140-
NrExecuteRegionRules: unsigned'(3),
141-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
142-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
143+
NrExecuteRegionRules: unsigned'(4),
144+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
145+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
143146
NrCachedRegionRules: unsigned'(1),
144147
CachedRegionAddrBase: 1024'({64'h8000_0000}),
145148
CachedRegionLength: 1024'({64'h40000000}),
@@ -154,6 +157,10 @@ package cva6_config_pkg;
154157
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
155158
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
156159
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
160+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
161+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
162+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
163+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
157164
DCacheType: CVA6ConfigDcacheType,
158165
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
159166
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv32a6_imac_sv32_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ package cva6_config_pkg;
4545
localparam CVA6ConfigDcacheSetAssoc = 8;
4646
localparam CVA6ConfigDcacheLineWidth = 128;
4747

48+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
49+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
50+
4851
localparam CVA6ConfigDcacheIdWidth = 3;
4952
localparam CVA6ConfigMemTidWidth = 4;
5053

@@ -136,9 +139,9 @@ package cva6_config_pkg;
136139
NrNonIdempotentRules: unsigned'(1),
137140
NonIdempotentAddrBase: 1024'({64'b0}),
138141
NonIdempotentLength: 1024'({64'h8000_0000}),
139-
NrExecuteRegionRules: unsigned'(3),
140-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
141-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
142+
NrExecuteRegionRules: unsigned'(4),
143+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
144+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
142145
NrCachedRegionRules: unsigned'(1),
143146
CachedRegionAddrBase: 1024'({64'h8000_0000}),
144147
CachedRegionLength: 1024'({64'h40000000}),
@@ -153,6 +156,10 @@ package cva6_config_pkg;
153156
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
154157
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
155158
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
159+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
160+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
161+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
162+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
156163
DCacheType: CVA6ConfigDcacheType,
157164
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
158165
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv64a60ax_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ package cva6_config_pkg;
2525
localparam CVA6ConfigAxiDataWidth = 128;
2626
localparam CVA6ConfigDataUserWidth = 12;
2727

28+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
29+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
30+
2831

2932
`ifndef __UVMA_AXI_MACROS_SV__
3033
`define __UVMA_AXI_MACROS_SV__
@@ -108,9 +111,9 @@ localparam config_pkg::cva6_user_cfg_t cva6_cfg = '{
108111
NrNonIdempotentRules: unsigned'(2),
109112
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
110113
NonIdempotentLength: 1024'({64'b0, 64'b0}),
111-
NrExecuteRegionRules: unsigned'(6),
112-
ExecuteRegionAddrBase: 1024'({64'h1_0000_0000, 64'h8000_0000, 64'h300_0000, 64'h0, 64'h2000_0000, 64'h8_0000_0000}),
113-
ExecuteRegionLength: 1024'({64'h2_0000_0000, 64'h1_0000, 64'h1000, 64'h1_0000, 64'h2000_0000, 64'h7_FFFF_FFFF}),
114+
NrExecuteRegionRules: unsigned'(7),
115+
ExecuteRegionAddrBase: 1024'({64'h1_0000_0000, 64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h300_0000, 64'h0, 64'h2000_0000, 64'h8_0000_0000}),
116+
ExecuteRegionLength: 1024'({64'h2_0000_0000, 64'h1_0000, 64'(CVA6ConfigIcacheByteSize), 64'h1000, 64'h1_0000, 64'h2000_0000, 64'h7_FFFF_FFFF}),
114117
NrCachedRegionRules: unsigned'(2),
115118
CachedRegionAddrBase: 1024'({64'h1_0000_0000, 64'h8000_0000}),
116119
CachedRegionLength: 1024'({64'h2_0000_0000, 64'h1_0000}),
@@ -125,6 +128,10 @@ localparam config_pkg::cva6_user_cfg_t cva6_cfg = '{
125128
IcacheByteSize: unsigned'(32768),
126129
IcacheSetAssoc: unsigned'(8),
127130
IcacheLineWidth: unsigned'(512),
131+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
132+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
133+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
134+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
128135
DCacheType: config_pkg::HPDCACHE_WT,
129136
DcacheByteSize: unsigned'(32768),
130137
DcacheSetAssoc: unsigned'(8),

core/include/cv64a6_imafdc_sv39_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ package cva6_config_pkg;
4646
localparam CVA6ConfigDcacheSetAssoc = 8;
4747
localparam CVA6ConfigDcacheLineWidth = 128;
4848

49+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
50+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
51+
4952
localparam CVA6ConfigDcacheFlushOnFence = 1'b0;
5053
localparam CVA6ConfigDcacheFlushOnFenceI = 1'b0;
5154
localparam CVA6ConfigDcacheInvalidateOnFlush = 1'b0;
@@ -141,9 +144,9 @@ package cva6_config_pkg;
141144
NrNonIdempotentRules: unsigned'(2),
142145
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
143146
NonIdempotentLength: 1024'({64'b0, 64'b0}),
144-
NrExecuteRegionRules: unsigned'(3),
145-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
146-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
147+
NrExecuteRegionRules: unsigned'(4),
148+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
149+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
147150
NrCachedRegionRules: unsigned'(1),
148151
CachedRegionAddrBase: 1024'({64'h8000_0000}),
149152
CachedRegionLength: 1024'({64'h40000000}),
@@ -158,6 +161,10 @@ package cva6_config_pkg;
158161
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
159162
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
160163
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
164+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
165+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
166+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
167+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
161168
DCacheType: CVA6ConfigDcacheType,
162169
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
163170
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv64a6_imafdc_sv39_hpdcache_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ package cva6_config_pkg;
5353
localparam CVA6ConfigDcacheSetAssoc = 8;
5454
localparam CVA6ConfigDcacheLineWidth = 128;
5555

56+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
57+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
58+
5659
localparam CVA6ConfigDcacheFlushOnFence = 1'b0;
5760
localparam CVA6ConfigDcacheFlushOnFenceI = 1'b0;
5861
localparam CVA6ConfigDcacheInvalidateOnFlush = 1'b0;
@@ -148,9 +151,9 @@ package cva6_config_pkg;
148151
NrNonIdempotentRules: unsigned'(2),
149152
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
150153
NonIdempotentLength: 1024'({64'b0, 64'b0}),
151-
NrExecuteRegionRules: unsigned'(3),
152-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
153-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
154+
NrExecuteRegionRules: unsigned'(4),
155+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
156+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
154157
NrCachedRegionRules: unsigned'(1),
155158
CachedRegionAddrBase: 1024'({64'h8000_0000}),
156159
CachedRegionLength: 1024'({64'h40000000}),
@@ -165,6 +168,10 @@ package cva6_config_pkg;
165168
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
166169
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
167170
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
171+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
172+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
173+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
174+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
168175
DCacheType: CVA6ConfigDcacheType,
169176
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
170177
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv64a6_imafdc_sv39_hpdcache_wb_config_pkg.sv

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ package cva6_config_pkg;
5252
localparam CVA6ConfigDcacheByteSize = 32768;
5353
localparam CVA6ConfigDcacheSetAssoc = 8;
5454
localparam CVA6ConfigDcacheLineWidth = 128;
55+
56+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
57+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
58+
5559
// do not flush Dcache for EVERY fence - dramatic performance impact
5660
// use RVZiCbom to synchronize caches with DMA devices instead
5761
// CAUTION - a configuration with CVA6ConfigDcacheFlushOnFence might be required for different SoCs, e.g., cache-coherent SMP configurations
@@ -150,9 +154,9 @@ package cva6_config_pkg;
150154
NrNonIdempotentRules: unsigned'(2),
151155
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
152156
NonIdempotentLength: 1024'({64'b0, 64'b0}),
153-
NrExecuteRegionRules: unsigned'(3),
154-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
155-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
157+
NrExecuteRegionRules: unsigned'(4),
158+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
159+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
156160
NrCachedRegionRules: unsigned'(1),
157161
CachedRegionAddrBase: 1024'({64'h8000_0000}),
158162
CachedRegionLength: 1024'({64'h40000000}),
@@ -167,6 +171,10 @@ package cva6_config_pkg;
167171
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
168172
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
169173
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
174+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
175+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
176+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
177+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
170178
DCacheType: CVA6ConfigDcacheType,
171179
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
172180
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv64a6_imafdc_sv39_openpiton_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ package cva6_config_pkg;
4646
localparam CVA6ConfigDcacheSetAssoc = 8;
4747
localparam CVA6ConfigDcacheLineWidth = 128;
4848

49+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
50+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
51+
4952
localparam CVA6ConfigDcacheFlushOnFence = 1'b0;
5053
localparam CVA6ConfigDcacheFlushOnFenceI = 1'b0;
5154
localparam CVA6ConfigDcacheInvalidateOnFlush = 1'b0;
@@ -141,9 +144,9 @@ package cva6_config_pkg;
141144
NrNonIdempotentRules: unsigned'(2),
142145
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
143146
NonIdempotentLength: 1024'({64'b0, 64'b0}),
144-
NrExecuteRegionRules: unsigned'(3),
145-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
146-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
147+
NrExecuteRegionRules: unsigned'(4),
148+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
149+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
147150
NrCachedRegionRules: unsigned'(1),
148151
CachedRegionAddrBase: 1024'({64'h8000_0000}),
149152
CachedRegionLength: 1024'({64'h40000000}),
@@ -158,6 +161,10 @@ package cva6_config_pkg;
158161
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
159162
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
160163
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
164+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
165+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
166+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
167+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
161168
DCacheType: CVA6ConfigDcacheType,
162169
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
163170
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

core/include/cv64a6_imafdc_sv39_wb_config_pkg.sv

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ package cva6_config_pkg;
4646
localparam CVA6ConfigDcacheSetAssoc = 8;
4747
localparam CVA6ConfigDcacheLineWidth = 128;
4848

49+
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
50+
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
51+
4952
localparam CVA6ConfigDcacheFlushOnFence = 1'b0;
5053
localparam CVA6ConfigDcacheFlushOnFenceI = 1'b1;
5154
localparam CVA6ConfigDcacheInvalidateOnFlush = 1'b0;
@@ -141,9 +144,9 @@ package cva6_config_pkg;
141144
NrNonIdempotentRules: unsigned'(2),
142145
NonIdempotentAddrBase: 1024'({64'b0, 64'b0}),
143146
NonIdempotentLength: 1024'({64'b0, 64'b0}),
144-
NrExecuteRegionRules: unsigned'(3),
145-
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'h1_0000, 64'h0}),
146-
ExecuteRegionLength: 1024'({64'h40000000, 64'h10000, 64'h1000}),
147+
NrExecuteRegionRules: unsigned'(4),
148+
ExecuteRegionAddrBase: 1024'({64'h8000_0000, 64'(CVA6ConfigICacheSpmAddrBase), 64'h1_0000, 64'h0}),
149+
ExecuteRegionLength: 1024'({64'h40000000, 64'(CVA6ConfigIcacheByteSize), 64'h10000, 64'h1000}),
147150
NrCachedRegionRules: unsigned'(1),
148151
CachedRegionAddrBase: 1024'({64'h8000_0000}),
149152
CachedRegionLength: 1024'({64'h40000000}),
@@ -158,6 +161,10 @@ package cva6_config_pkg;
158161
IcacheByteSize: unsigned'(CVA6ConfigIcacheByteSize),
159162
IcacheSetAssoc: unsigned'(CVA6ConfigIcacheSetAssoc),
160163
IcacheLineWidth: unsigned'(CVA6ConfigIcacheLineWidth),
164+
ICacheSpmAddrBase: 56'(CVA6ConfigICacheSpmAddrBase),
165+
ICacheSpmLength: 56'(CVA6ConfigIcacheByteSize),
166+
DCacheSpmAddrBase: 56'(CVA6ConfigDCacheSpmAddrBase),
167+
DCacheSpmLength: 56'(CVA6ConfigDcacheByteSize),
161168
DCacheType: CVA6ConfigDcacheType,
162169
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
163170
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),

0 commit comments

Comments
 (0)