Skip to content

Commit 4a22d71

Browse files
committed
cv64a6_rt_config: adopt HPDCache and tune parameters
1 parent c8d66b5 commit 4a22d71

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

core/include/cv64a6_rt_config_pkg.sv

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ package cva6_config_pkg;
2525
localparam CVA6ConfigZcmpExtEn = 0;
2626
localparam CVA6ConfigAExtEn = 1;
2727
localparam CVA6ConfigHExtEn = 1;
28-
localparam CVA6ConfigBExtEn = 0;
28+
localparam CVA6ConfigBExtEn = 1;
2929
localparam CVA6ConfigVExtEn = 0;
3030
localparam CVA6ConfigRVZiCond = 1;
3131
localparam CVA6ConfigSclicExtEn = 1;
@@ -49,20 +49,23 @@ package cva6_config_pkg;
4949
localparam CVA6ConfigICacheSpmAddrBase = 56'h01A0_0000;
5050
localparam CVA6ConfigDCacheSpmAddrBase = 56'h0180_0000;
5151

52-
localparam CVA6ConfigDcacheFlushOnFence = 1'b1;
52+
// do not flush Dcache for EVERY fence - dramatic performance impact
53+
// use RVZiCbom to synchronize caches with DMA devices instead
54+
// CAUTION - a configuration with CVA6ConfigDcacheFlushOnFence might be required for different SoCs, e.g., cache-coherent SMP configurations
55+
localparam CVA6ConfigDcacheFlushOnFence = 1'b0;
5356
localparam CVA6ConfigDcacheFlushOnFenceI = 1'b1;
5457
localparam CVA6ConfigDcacheInvalidateOnFlush = 1'b0;
5558

56-
localparam CVA6ConfigDcacheIdWidth = 1; // Must be >= $clog2(CVA6Cfg.NrLoadBufEntries)
59+
localparam CVA6ConfigDcacheIdWidth = 3;
5760
localparam CVA6ConfigMemTidWidth = CVA6ConfigAxiIdWidth;
5861

59-
localparam CVA6ConfigWtDcacheWbufDepth = 8;
62+
localparam CVA6ConfigWtDcacheWbufDepth = 7;
6063

6164
localparam CVA6ConfigNrScoreboardEntries = 8;
6265

6366
localparam CVA6ConfigNrLoadPipeRegs = 1;
6467
localparam CVA6ConfigNrStorePipeRegs = 0;
65-
localparam CVA6ConfigNrLoadBufEntries = 2;
68+
localparam CVA6ConfigNrLoadBufEntries = 8;
6669

6770
localparam CVA6ConfigRASDepth = 2;
6871
localparam CVA6ConfigBTBEntries = 32;
@@ -74,7 +77,7 @@ package cva6_config_pkg;
7477

7578
localparam CVA6ConfigPerfCounterEn = 1;
7679

77-
localparam config_pkg::cache_type_t CVA6ConfigDcacheType = config_pkg::WB;
80+
localparam config_pkg::cache_type_t CVA6ConfigDcacheType = config_pkg::HPDCACHE_WB;
7881

7982
localparam CVA6ConfigMmuPresent = 1;
8083

@@ -102,7 +105,7 @@ package cva6_config_pkg;
102105
XF8: bit'(CVA6ConfigF8En),
103106
RVA: bit'(CVA6ConfigAExtEn),
104107
RVB: bit'(CVA6ConfigBExtEn),
105-
ZKN: bit'(0),
108+
ZKN: bit'(1),
106109
RVV: bit'(CVA6ConfigVExtEn),
107110
RVC: bit'(CVA6ConfigCExtEn),
108111
RVH: bit'(CVA6ConfigHExtEn),
@@ -169,9 +172,9 @@ package cva6_config_pkg;
169172
DcacheByteSize: unsigned'(CVA6ConfigDcacheByteSize),
170173
DcacheSetAssoc: unsigned'(CVA6ConfigDcacheSetAssoc),
171174
DcacheLineWidth: unsigned'(CVA6ConfigDcacheLineWidth),
172-
DcacheFlushOnFence: unsigned'(CVA6ConfigDcacheFlushOnFence),
175+
DcacheFlushOnFence: bit'(CVA6ConfigDcacheFlushOnFence),
173176
DcacheFlushOnFenceI: unsigned'(CVA6ConfigDcacheFlushOnFenceI),
174-
DcacheInvalidateOnFlush: unsigned'(CVA6ConfigDcacheInvalidateOnFlush),
177+
DcacheInvalidateOnFlush: bit'(CVA6ConfigDcacheInvalidateOnFlush),
175178
DataUserEn: unsigned'(CVA6ConfigDataUserEn),
176179
WtDcacheWbufDepth: int'(CVA6ConfigWtDcacheWbufDepth),
177180
FetchUserWidth: unsigned'(CVA6ConfigFetchUserWidth),

0 commit comments

Comments
 (0)