punk@1
|
1 signature DataCacheBlocking where {
|
punk@1
|
2 import ¶Assert®¶;
|
punk@1
|
3
|
punk@1
|
4 import ¶Counter®¶;
|
punk@1
|
5
|
punk@1
|
6 import ¶FIFOF_®¶;
|
punk@1
|
7
|
punk@1
|
8 import ¶FIFOF®¶;
|
punk@1
|
9
|
punk@1
|
10 import ¶FIFO®¶;
|
punk@1
|
11
|
punk@1
|
12 import ¶Inout®¶;
|
punk@1
|
13
|
punk@1
|
14 import ¶List®¶;
|
punk@1
|
15
|
punk@1
|
16 import BFIFO;
|
punk@1
|
17
|
punk@1
|
18 import ¶Clocks®¶;
|
punk@1
|
19
|
punk@1
|
20 import ¶ListN®¶;
|
punk@1
|
21
|
punk@1
|
22 import ¶PrimArray®¶;
|
punk@1
|
23
|
punk@1
|
24 import ¶RegFile®¶;
|
punk@1
|
25
|
punk@1
|
26 import ¶Vector®¶;
|
punk@1
|
27
|
punk@1
|
28 import ¶Connectable®¶;
|
punk@1
|
29
|
punk@1
|
30 import ¶GetPut®¶;
|
punk@1
|
31
|
punk@1
|
32 import ¶ClientServer®¶;
|
punk@1
|
33
|
punk@1
|
34 import Trace;
|
punk@1
|
35
|
punk@1
|
36 import MemTypes;
|
punk@1
|
37
|
punk@1
|
38 import ProcTypes;
|
punk@1
|
39
|
punk@1
|
40 interface (DataCacheBlocking.DCacheStats :: *) = {
|
punk@1
|
41 DataCacheBlocking.num_accesses :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat;
|
punk@1
|
42 DataCacheBlocking.num_misses :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat;
|
punk@1
|
43 DataCacheBlocking.num_writebacks :: ¶GetPut®¶.¶Get®¶ ProcTypes.Stat
|
punk@1
|
44 };
|
punk@1
|
45
|
punk@1
|
46 instance DataCacheBlocking ¶Prelude®¶.¶PrimMakeUndefined®¶ DataCacheBlocking.DCacheStats;
|
punk@1
|
47
|
punk@1
|
48 instance DataCacheBlocking ¶Prelude®¶.¶PrimDeepSeqCond®¶ DataCacheBlocking.DCacheStats;
|
punk@1
|
49
|
punk@1
|
50 instance DataCacheBlocking ¶Prelude®¶.¶PrimMakeUninitialized®¶ DataCacheBlocking.DCacheStats;
|
punk@1
|
51
|
punk@1
|
52 interface (DataCacheBlocking.DCache :: * -> * -> *) req_t resp_t = {
|
punk@1
|
53 DataCacheBlocking.proc_server :: ¶ClientServer®¶.¶Server®¶ req_t resp_t;
|
punk@1
|
54 DataCacheBlocking.mmem_client :: ¶ClientServer®¶.¶Client®¶ MemTypes.MainMemReq MemTypes.MainMemResp;
|
punk@1
|
55 DataCacheBlocking.statsEn_put :: ¶GetPut®¶.¶Put®¶ ¶Prelude®¶.¶Bool®¶;
|
punk@1
|
56 DataCacheBlocking.stats :: DataCacheBlocking.DCacheStats
|
punk@1
|
57 };
|
punk@1
|
58
|
punk@1
|
59 instance DataCacheBlocking (¶Prelude®¶.¶PrimMakeUndefined®¶ resp_t) =>
|
punk@1
|
60 ¶Prelude®¶.¶PrimMakeUndefined®¶ (DataCacheBlocking.DCache req_t resp_t);
|
punk@1
|
61
|
punk@1
|
62 instance DataCacheBlocking (¶Prelude®¶.¶PrimDeepSeqCond®¶ resp_t) =>
|
punk@1
|
63 ¶Prelude®¶.¶PrimDeepSeqCond®¶ (DataCacheBlocking.DCache req_t resp_t);
|
punk@1
|
64
|
punk@1
|
65 instance DataCacheBlocking ¶Prelude®¶.¶PrimMakeUninitialized®¶
|
punk@1
|
66 (DataCacheBlocking.DCache req_t resp_t);
|
punk@1
|
67
|
punk@1
|
68 type (DataCacheBlocking.CacheLineIndexSz :: #) = 10;
|
punk@1
|
69
|
punk@1
|
70 type (DataCacheBlocking.CacheLineTagSz :: #) = 20;
|
punk@1
|
71
|
punk@1
|
72 type (DataCacheBlocking.CacheLineSz :: #) = 32;
|
punk@1
|
73
|
punk@1
|
74 type (DataCacheBlocking.CacheLineIndex :: *) = ¶Prelude®¶.¶Bit®¶ DataCacheBlocking.CacheLineIndexSz;
|
punk@1
|
75
|
punk@1
|
76 type (DataCacheBlocking.CacheLineTag :: *) = ¶Prelude®¶.¶Bit®¶ DataCacheBlocking.CacheLineTagSz;
|
punk@1
|
77
|
punk@1
|
78 type (DataCacheBlocking.CacheLine :: *) = ¶Prelude®¶.¶Bit®¶ DataCacheBlocking.CacheLineSz;
|
punk@1
|
79
|
punk@1
|
80 data (DataCacheBlocking.CacheStage :: *) =
|
punk@1
|
81 DataCacheBlocking.Init () |
|
punk@1
|
82 DataCacheBlocking.Access () |
|
punk@1
|
83 DataCacheBlocking.RefillReq () |
|
punk@1
|
84 DataCacheBlocking.RefillResp ();
|
punk@1
|
85
|
punk@1
|
86 instance DataCacheBlocking ¶Prelude®¶.¶PrimMakeUndefined®¶ DataCacheBlocking.CacheStage;
|
punk@1
|
87
|
punk@1
|
88 instance DataCacheBlocking ¶Prelude®¶.¶PrimDeepSeqCond®¶ DataCacheBlocking.CacheStage;
|
punk@1
|
89
|
punk@1
|
90 instance DataCacheBlocking ¶Prelude®¶.¶PrimMakeUninitialized®¶ DataCacheBlocking.CacheStage;
|
punk@1
|
91
|
punk@1
|
92 instance DataCacheBlocking ¶Prelude®¶.¶Eq®¶ DataCacheBlocking.CacheStage;
|
punk@1
|
93
|
punk@1
|
94 instance DataCacheBlocking ¶Prelude®¶.¶Bits®¶ DataCacheBlocking.CacheStage 2;
|
punk@1
|
95
|
punk@1
|
96 DataCacheBlocking.getAddr :: MemTypes.DataReq -> ¶Prelude®¶.¶Bit®¶ MemTypes.AddrSz;
|
punk@1
|
97
|
punk@1
|
98 DataCacheBlocking.getCacheLineIndex :: MemTypes.DataReq -> DataCacheBlocking.CacheLineIndex;
|
punk@1
|
99
|
punk@1
|
100 DataCacheBlocking.getCacheLineTag :: MemTypes.DataReq -> DataCacheBlocking.CacheLineTag;
|
punk@1
|
101
|
punk@1
|
102 DataCacheBlocking.getCacheLineAddr :: MemTypes.DataReq -> ¶Prelude®¶.¶Bit®¶ MemTypes.AddrSz;
|
punk@1
|
103
|
punk@1
|
104 DataCacheBlocking.mkDataCache :: (¶Prelude®¶.¶IsModule®¶ _m__ _c__) =>
|
punk@1
|
105 _m__ (DataCacheBlocking.DCache MemTypes.DataReq MemTypes.DataResp)
|
punk@1
|
106 }
|