@@ -3,33 +3,73 @@ package treecorel2
33import chisel3 ._
44import chisel3 .util ._
55
6- class CacheReqIO extends Bundle {
7- //
8- // |--------- tag ---------|---index---|--offset--|
9- //
6+ object CacheConfig {
7+ val ICacheSize = (256 * 1024 )
8+ val DCacheSize = (256 * 1024 )
9+ val LineSize = 256
10+ val NWay = 4
11+ val NBAN = 4
12+ val IdLen = 1
13+ }
14+
15+ class CACHEREQIO extends Bundle {
1016 val addr = UInt (64 .W )
1117 val data = UInt (64 .W )
1218 val mask = UInt ((64 / 8 ).W )
1319 val op = UInt (1 .W ) // 0: rd 1: wr
1420}
1521
16- class CacheRespIO extends Bundle {
22+ class CACHERESPIO extends Bundle {
1723 val data = UInt (64 .W )
1824 val cmd = UInt (4 .W )
1925}
2026
21- class MemReq extends Bundle {
27+ class MEMREQIO extends Bundle {
2228 val addr = UInt (64 .W )
2329 val data = UInt (64 .W )
2430 val cmd = UInt (4 .W )
2531 val len = UInt (2 .W ) // 0: 1(64bits) 1: 2 2: 4 3: 8
26- val id = UInt (4 .W )
32+ val id = UInt (CacheConfig . IdLen .W )
2733}
2834
29- class MemResp extends Bundle {
35+ class MEMRESPIO extends Bundle {
3036 val data = UInt (64 .W )
3137 val cmd = UInt (4 .W )
32- val id = UInt (4 .W )
38+ val id = UInt (CacheConfig .IdLen .W )
39+ }
40+
41+ class WayIn (val tagWidth : Int , val idxWidth : Int , val offsetWidth : Int ) extends Bundle {
42+ val wt = Valid (new Bundle {
43+ val tag = UInt (tagWidth.W )
44+ val idx = UInt (idxWidth.W )
45+ val offset = UInt (offsetWidth.W )
46+ val v = UInt (1 .W )
47+ val d = UInt (1 .W )
48+ val mask = UInt (((CacheConfig .LineSize / CacheConfig .NBank ) / 8 ).W )
49+ val data = UInt (p(XLen ).W )
50+ val op = UInt (1 .W ) // must 1
51+ })
52+ val rd = Valid (new Bundle {
53+ val idx = UInt (idxWidth.W )
54+ val op = UInt (1 .W ) // must 0
55+ })
56+ }
57+
58+ class WayOut (val tagWidth : Int ) extends Bundle {
59+ val tag = UInt (tagWidth.W )
60+ val v = UInt (1 .W )
61+ val d = UInt (1 .W )
62+ val data = Vec (CacheConfig .NBank , UInt ((CacheConfig .LineSize / CacheConfig .NBank ).W ))
63+ }
64+
65+ class CACHE2CPUIO extends Bundle {
66+ val req = Flipped (Decoupled (new CACHEREQIO ))
67+ val resp = Valid (new CACHERESPIO )
68+ }
69+
70+ class CACHE2MEMIO extends Bundle {
71+ val req = Decoupled (new MEMREQIO )
72+ val resp = Flipped (Decoupled (new MEMRESPIO ))
3373}
3474
3575class Cache extends Module {}
0 commit comments