punk@1
|
1 signature MemTypes where {
|
punk@1
|
2 import ¶Counter®¶;
|
punk@1
|
3
|
punk@1
|
4 import ¶FIFOF_®¶;
|
punk@1
|
5
|
punk@1
|
6 import ¶FIFOF®¶;
|
punk@1
|
7
|
punk@1
|
8 import ¶FIFO®¶;
|
punk@1
|
9
|
punk@1
|
10 import ¶Inout®¶;
|
punk@1
|
11
|
punk@1
|
12 import ¶List®¶;
|
punk@1
|
13
|
punk@1
|
14 import ¶Clocks®¶;
|
punk@1
|
15
|
punk@1
|
16 import ¶ListN®¶;
|
punk@1
|
17
|
punk@1
|
18 import ¶PrimArray®¶;
|
punk@1
|
19
|
punk@1
|
20 import ¶Vector®¶;
|
punk@1
|
21
|
punk@1
|
22 import ¶Connectable®¶;
|
punk@1
|
23
|
punk@1
|
24 import ¶GetPut®¶;
|
punk@1
|
25
|
punk@1
|
26 import ¶ClientServer®¶;
|
punk@1
|
27
|
punk@1
|
28 import Trace;
|
punk@1
|
29
|
punk@1
|
30 data (MemTypes.MemReq :: # -> # -> # -> *) addrSz tagSz dataSz =
|
punk@1
|
31 MemTypes.LoadReq (MemTypes.¶MemReq_$LoadReq¶ addrSz tagSz dataSz) |
|
punk@1
|
32 MemTypes.StoreReq (MemTypes.¶MemReq_$StoreReq¶ addrSz tagSz dataSz);
|
punk@1
|
33
|
punk@1
|
34 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.MemReq addrSz tagSz dataSz);
|
punk@1
|
35
|
punk@1
|
36 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.MemReq addrSz tagSz dataSz);
|
punk@1
|
37
|
punk@1
|
38 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶ (MemTypes.MemReq addrSz tagSz dataSz);
|
punk@1
|
39
|
punk@1
|
40 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.MemReq addrSz tagSz dataSz);
|
punk@1
|
41
|
punk@1
|
42 instance MemTypes (¶Prelude®¶.¶Add®¶ 1 _v103 _v100,
|
punk@1
|
43 ¶Prelude®¶.¶Max®¶ _v101 _v104 _v103,
|
punk@1
|
44 ¶Prelude®¶.¶Add®¶ _v105 _v104 _v103,
|
punk@1
|
45 ¶Prelude®¶.¶Add®¶ _v102 _v101 _v103,
|
punk@1
|
46 ¶Prelude®¶.¶Add®¶ addrSz _v106 _v104,
|
punk@1
|
47 ¶Prelude®¶.¶Add®¶ tagSz dataSz _v106,
|
punk@1
|
48 ¶Prelude®¶.¶Add®¶ addrSz tagSz _v101) =>
|
punk@1
|
49 ¶Prelude®¶.¶Bits®¶ (MemTypes.MemReq addrSz tagSz dataSz) _v100;
|
punk@1
|
50
|
punk@1
|
51 struct (MemTypes.¶MemReq_$LoadReq¶ :: # -> # -> # -> *) addrSz tagSz dataSz = {
|
punk@1
|
52 MemTypes.addr :: ¶Prelude®¶.¶Bit®¶ addrSz;
|
punk@1
|
53 MemTypes.tag :: ¶Prelude®¶.¶Bit®¶ tagSz
|
punk@1
|
54 };
|
punk@1
|
55
|
punk@1
|
56 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.¶MemReq_$LoadReq¶ addrSz tagSz dataSz);
|
punk@1
|
57
|
punk@1
|
58 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.¶MemReq_$LoadReq¶ addrSz tagSz dataSz);
|
punk@1
|
59
|
punk@1
|
60 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶
|
punk@1
|
61 (MemTypes.¶MemReq_$LoadReq¶ addrSz tagSz dataSz);
|
punk@1
|
62
|
punk@1
|
63 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.¶MemReq_$LoadReq¶ addrSz tagSz dataSz);
|
punk@1
|
64
|
punk@1
|
65 instance MemTypes (¶Prelude®¶.¶Add®¶ _v101 _v104 _v100) =>
|
punk@1
|
66 ¶Prelude®¶.¶Bits®¶ (MemTypes.¶MemReq_$LoadReq¶ _v101 _v104 dataSz) _v100;
|
punk@1
|
67
|
punk@1
|
68 struct (MemTypes.¶MemReq_$StoreReq¶ :: # -> # -> # -> *) addrSz tagSz dataSz = {
|
punk@1
|
69 MemTypes.addr :: ¶Prelude®¶.¶Bit®¶ addrSz;
|
punk@1
|
70 MemTypes.tag :: ¶Prelude®¶.¶Bit®¶ tagSz;
|
punk@1
|
71 MemTypes.¡data¡ :: ¶Prelude®¶.¶Bit®¶ dataSz
|
punk@1
|
72 };
|
punk@1
|
73
|
punk@1
|
74 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.¶MemReq_$StoreReq¶ addrSz tagSz dataSz);
|
punk@1
|
75
|
punk@1
|
76 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.¶MemReq_$StoreReq¶ addrSz tagSz dataSz);
|
punk@1
|
77
|
punk@1
|
78 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶
|
punk@1
|
79 (MemTypes.¶MemReq_$StoreReq¶ addrSz tagSz dataSz);
|
punk@1
|
80
|
punk@1
|
81 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.¶MemReq_$StoreReq¶ addrSz tagSz dataSz);
|
punk@1
|
82
|
punk@1
|
83 instance MemTypes (¶Prelude®¶.¶Add®¶ _v101 _v100 _v103, ¶Prelude®¶.¶Add®¶ _v104 _v107 _v100) =>
|
punk@1
|
84 ¶Prelude®¶.¶Bits®¶ (MemTypes.¶MemReq_$StoreReq¶ _v101 _v104 _v107) _v103;
|
punk@1
|
85
|
punk@1
|
86 data (MemTypes.MemResp :: # -> # -> *) tagSz dataSz =
|
punk@1
|
87 MemTypes.LoadResp (MemTypes.¶MemResp_$LoadResp¶ tagSz dataSz) |
|
punk@1
|
88 MemTypes.StoreResp (MemTypes.¶MemResp_$StoreResp¶ tagSz dataSz);
|
punk@1
|
89
|
punk@1
|
90 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.MemResp tagSz dataSz);
|
punk@1
|
91
|
punk@1
|
92 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.MemResp tagSz dataSz);
|
punk@1
|
93
|
punk@1
|
94 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶ (MemTypes.MemResp tagSz dataSz);
|
punk@1
|
95
|
punk@1
|
96 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.MemResp tagSz dataSz);
|
punk@1
|
97
|
punk@1
|
98 instance MemTypes (¶Prelude®¶.¶Add®¶ 1 _v103 _v100,
|
punk@1
|
99 ¶Prelude®¶.¶Max®¶ _v101 _v104 _v103,
|
punk@1
|
100 ¶Prelude®¶.¶Add®¶ _v105 _v104 _v103,
|
punk@1
|
101 ¶Prelude®¶.¶Add®¶ _v102 _v101 _v103,
|
punk@1
|
102 ¶Prelude®¶.¶Add®¶ _v104 dataSz _v101) =>
|
punk@1
|
103 ¶Prelude®¶.¶Bits®¶ (MemTypes.MemResp _v104 dataSz) _v100;
|
punk@1
|
104
|
punk@1
|
105 struct (MemTypes.¶MemResp_$LoadResp¶ :: # -> # -> *) tagSz dataSz = {
|
punk@1
|
106 MemTypes.tag :: ¶Prelude®¶.¶Bit®¶ tagSz;
|
punk@1
|
107 MemTypes.¡data¡ :: ¶Prelude®¶.¶Bit®¶ dataSz
|
punk@1
|
108 };
|
punk@1
|
109
|
punk@1
|
110 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.¶MemResp_$LoadResp¶ tagSz dataSz);
|
punk@1
|
111
|
punk@1
|
112 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.¶MemResp_$LoadResp¶ tagSz dataSz);
|
punk@1
|
113
|
punk@1
|
114 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶ (MemTypes.¶MemResp_$LoadResp¶ tagSz dataSz);
|
punk@1
|
115
|
punk@1
|
116 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.¶MemResp_$LoadResp¶ tagSz dataSz);
|
punk@1
|
117
|
punk@1
|
118 instance MemTypes (¶Prelude®¶.¶Add®¶ _v101 _v104 _v100) =>
|
punk@1
|
119 ¶Prelude®¶.¶Bits®¶ (MemTypes.¶MemResp_$LoadResp¶ _v101 _v104) _v100;
|
punk@1
|
120
|
punk@1
|
121 struct (MemTypes.¶MemResp_$StoreResp¶ :: # -> # -> *) tagSz dataSz = {
|
punk@1
|
122 MemTypes.tag :: ¶Prelude®¶.¶Bit®¶ tagSz
|
punk@1
|
123 };
|
punk@1
|
124
|
punk@1
|
125 instance MemTypes ¶Prelude®¶.¶PrimMakeUndefined®¶ (MemTypes.¶MemResp_$StoreResp¶ tagSz dataSz);
|
punk@1
|
126
|
punk@1
|
127 instance MemTypes ¶Prelude®¶.¶PrimDeepSeqCond®¶ (MemTypes.¶MemResp_$StoreResp¶ tagSz dataSz);
|
punk@1
|
128
|
punk@1
|
129 instance MemTypes ¶Prelude®¶.¶PrimMakeUninitialized®¶ (MemTypes.¶MemResp_$StoreResp¶ tagSz dataSz);
|
punk@1
|
130
|
punk@1
|
131 instance MemTypes ¶Prelude®¶.¶Eq®¶ (MemTypes.¶MemResp_$StoreResp¶ tagSz dataSz);
|
punk@1
|
132
|
punk@1
|
133 instance MemTypes ¶Prelude®¶.¶Bits®¶ (MemTypes.¶MemResp_$StoreResp¶ _v101 dataSz) _v101;
|
punk@1
|
134
|
punk@1
|
135 type (MemTypes.AddrSz :: #) = 32;
|
punk@1
|
136
|
punk@1
|
137 type (MemTypes.TagSz :: #) = 8;
|
punk@1
|
138
|
punk@1
|
139 type (MemTypes.DataSz :: #) = 32;
|
punk@1
|
140
|
punk@1
|
141 type (MemTypes.InstSz :: #) = 32;
|
punk@1
|
142
|
punk@1
|
143 type (MemTypes.HostDataSz :: #) = 32;
|
punk@1
|
144
|
punk@1
|
145 type (MemTypes.InstReq :: *) = MemTypes.MemReq MemTypes.AddrSz MemTypes.TagSz 0;
|
punk@1
|
146
|
punk@1
|
147 type (MemTypes.InstResp :: *) = MemTypes.MemResp MemTypes.TagSz MemTypes.InstSz;
|
punk@1
|
148
|
punk@1
|
149 type (MemTypes.DataReq :: *) = MemTypes.MemReq MemTypes.AddrSz MemTypes.TagSz MemTypes.DataSz;
|
punk@1
|
150
|
punk@1
|
151 type (MemTypes.DataResp :: *) = MemTypes.MemResp MemTypes.TagSz MemTypes.DataSz;
|
punk@1
|
152
|
punk@1
|
153 type (MemTypes.HostReq :: *) = MemTypes.MemReq MemTypes.AddrSz MemTypes.TagSz MemTypes.HostDataSz;
|
punk@1
|
154
|
punk@1
|
155 type (MemTypes.HostResp :: *) = MemTypes.MemResp MemTypes.TagSz MemTypes.HostDataSz;
|
punk@1
|
156
|
punk@1
|
157 type (MemTypes.MainMemAddrSz :: #) = 32;
|
punk@1
|
158
|
punk@1
|
159 type (MemTypes.MainMemTagSz :: #) = 8;
|
punk@1
|
160
|
punk@1
|
161 type (MemTypes.MainMemDataSz :: #) = 32;
|
punk@1
|
162
|
punk@1
|
163 type (MemTypes.MainMemReq :: *) =
|
punk@1
|
164 MemTypes.MemReq MemTypes.MainMemAddrSz MemTypes.MainMemTagSz MemTypes.MainMemDataSz;
|
punk@1
|
165
|
punk@1
|
166 type (MemTypes.MainMemResp :: *) = MemTypes.MemResp MemTypes.MainMemTagSz MemTypes.MainMemDataSz;
|
punk@1
|
167
|
punk@1
|
168 instance MemTypes Trace.Traceable (MemTypes.MemReq a b c);
|
punk@1
|
169
|
punk@1
|
170 instance MemTypes Trace.Traceable (MemTypes.MemResp a b)
|
punk@1
|
171 }
|