-
Notifications
You must be signed in to change notification settings - Fork 8
/
Config.h
188 lines (128 loc) · 4.99 KB
/
Config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#define NOTE(string)
NOTE("SIMTight SoC configuration")
NOTE("DRAM configuration")
NOTE("==================")
NOTE("Size of data field in DRAM request/response")
#define DRAMBeatBits 512
#define DRAMBeatBytes 64
#define DRAMBeatHalfs 32
#define DRAMBeatWords 16
#define DRAMBeatLogBytes 6
NOTE("Max burst size = 2^(DRAMBurstWidth-1)")
#define DRAMBurstWidth 4
NOTE("Size of DRAM in beats")
#define DRAMAddrWidth 26
NOTE("Maximum number of inflight requests supported by DRAM wrapper")
#define DRAMLogMaxInFlight 5
NOTE("SIMT configuration")
NOTE("==================")
NOTE("Number of lanes per SIMT core")
#define SIMTLanes 32
#define SIMTLogLanes 5
NOTE("Number of warps per SIMT core")
#define SIMTWarps 64
#define SIMTLogWarps 6
NOTE("Number of bits used to track divergence nesting level")
#define SIMTLogMaxNestLevel 5
NOTE("Stack size (in bytes) for each SIMT thread")
#define SIMTLogBytesPerStack 19
NOTE("Number of SRAM banks")
#define SIMTLogSRAMBanks 4
#define SIMTSRAMBanks 16
NOTE("Size of each SRAM bank (in words)")
#define SIMTLogWordsPerSRAMBank 10
NOTE("Enable SIMT stat counters")
#define SIMTEnableStatCounters 1
NOTE("Use full-throughput divider (rather than sequential divider)?")
#define SIMTUseFullDivider 0
NOTE("Latency of full-throughput divider (more latency = higher Fmax)")
#define SIMTFullDividerLatency 12
NOTE("Use shared full-throughput divider")
#define SIMTUseSharedDivUnit 0
NOTE("Use scalarising register file?")
#define SIMTEnableRegFileScalarisation 0
NOTE("Use affine scalarisation, or just plain uniform scalarisation?")
#define SIMTEnableAffineScalarisation 0
NOTE("Size of scalarising register file (number of vectors)")
#define SIMTRegFileSize 2048
NOTE("Use dedicated scalar unit, allowing parallel scalar/vector execution?")
#define SIMTEnableScalarUnit 0
NOTE("[EXPERIMENTAL] Enable scalarised vector store buffer?")
#define SIMTEnableSVStoreBuffer 0
NOTE("Size of scalarised vector store buffer")
#define SIMTSVStoreBufferLogSize 11
NOTE("Use LRU register spilling policy based on approx mean reg usage")
#define SIMTUseLRUSpill 0
NOTE("For LRU spill, how many bits to use for mean?")
#define SIMTRegCountBits 8
NOTE("Use round-robin register spilling policy")
#define SIMTUseRRSpill 0
NOTE("Prevent scalar detection in scalarising reg file")
#define SIMTRegFilePreventScalarDetection 0
NOTE("Total vector count sample rate")
#define SIMTTotalVecCountSampleRate 2048
NOTE("Enable floating-point (Zfinx) extension in both CPU and SIMT cores")
#define EnableFP 0
NOTE("Disable use of hard DSP blocks")
#define DisableHardDSPBlocks 0
NOTE("CPU configuration")
NOTE("=================")
NOTE("Size of tightly coupled instruction memory")
#define CPUInstrMemLogWords 13
NOTE("Number of cache lines (line size == DRAM beat size)")
#define SBDCacheLogLines 9
NOTE("Use register forwarding for increased IPC (but possibly lower Fmax)?")
#define CPUEnableRegForwarding 0
NOTE("Size of CPU's stack")
#define CPUStackSize 1073741824
NOTE("Tagged memory")
NOTE("=============")
NOTE("Is tagged memory enabled? (Needed for CHERI)")
#define EnableTaggedMem 0
NOTE("Tag cache: line size")
#define TagCacheLogBeatsPerLine 1
NOTE("Tag cache: number of set-associative ways")
#define TagCacheLogNumWays 2
NOTE("Tag cache: number of sets")
#define TagCacheLogSets 7
NOTE("Tag cache: max number of inflight memory requests")
#define TagCacheLogMaxInflight 5
NOTE("Tag cache: max number of pending requests per way")
#define TagCachePendingReqsPerWay 16
NOTE("Tag cache: optimise caching of large regions of zero tags")
#define TagCacheHierarchical 1
NOTE("CHERI support")
NOTE("=============")
NOTE("Is CHERI enabled? (If so, see UseClang and EnableTaggedMem settings)")
#define EnableCHERI 0
NOTE("Use scalarising register file for capability meta-data?")
#define SIMTEnableCapRegFileScalarisation 0
NOTE("Size of scalarising capability register file (number of vectors)")
#define SIMTCapRegFileSize 2048
NOTE("Use initial value optimisation in cap reg file?")
NOTE("This is a simple form of partial scalarisation")
#define SIMTCapRFUseInitValOpt 0
NOTE("The number of registers that hold partial scalars")
#define SIMTCapRFLogNumPartialMasks 0
NOTE("Use fixed immutable PCC meta-data for all threads in a warp?")
#define SIMTUseFixedPCC 0
NOTE("Use shared bounds unit")
#define SIMTUseSharedBoundsUnit 0
NOTE("Use shared vector scratchpad between int and cap reg files?")
#define SIMTUseSharedVecScratchpad 0
NOTE("When using shared vector spad, this is the spill threshold for caps")
#define SIMTSharedVecSpadCapThreshold 192
NOTE("Share an SRF port for reading cap meta-data, reducing storage")
#define SIMTShareCapSRFPort 0
NOTE("Compiler")
NOTE("========")
NOTE("Use clang rather than gcc? (Currently required if CHERI enabled)")
#define UseClang 0
NOTE("Tell compiler to use 16 regs instead of 32?")
#define UseRV32E 0
NOTE("Memory map")
NOTE("==========")
NOTE("Memory base (after tag bit region)")
#define MemBase 134217728
NOTE("Space reserved in instruction memory for boot loader")
#define MaxBootImageBytes 1024