@@ -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