This repository has been archived by the owner on Aug 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 177
/
ICache.fir
569 lines (567 loc) · 31.7 KB
/
ICache.fir
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
circuit ICache :
module ICache :
input clock : Clock
input reset : UInt<1>
output io : {flip req : {valid : UInt<1>, bits : {addr : UInt<39>}}, flip s1_paddr : UInt<32>, flip s1_kill : UInt<1>, flip s2_kill : UInt<1>, resp : {flip ready : UInt<1>, valid : UInt<1>, bits : {data : UInt<16>, datablock : UInt<64>}}, flip invalidate : UInt<1>, mem : {0 : {a : {flip ready : UInt<1>, valid : UInt<1>, bits : {opcode : UInt<3>, param : UInt<3>, size : UInt<4>, source : UInt<1>, address : UInt<32>, mask : UInt<8>, data : UInt<64>}}, flip b : {flip ready : UInt<1>, valid : UInt<1>, bits : {opcode : UInt<3>, param : UInt<2>, size : UInt<4>, source : UInt<1>, address : UInt<32>, mask : UInt<8>, data : UInt<64>}}, c : {flip ready : UInt<1>, valid : UInt<1>, bits : {opcode : UInt<3>, param : UInt<3>, size : UInt<4>, source : UInt<1>, address : UInt<32>, data : UInt<64>, error : UInt<1>}}, flip d : {flip ready : UInt<1>, valid : UInt<1>, bits : {opcode : UInt<3>, param : UInt<2>, size : UInt<4>, source : UInt<1>, sink : UInt<4>, addr_lo : UInt<3>, data : UInt<64>, error : UInt<1>}}, e : {flip ready : UInt<1>, valid : UInt<1>, bits : {sink : UInt<4>}}}}}
io is invalid
io is invalid
reg state : UInt<2>, clock with : (reset => (reset, UInt<2>("h00"))) @[ICache.scala 67:18]
reg invalidated : UInt<1>, clock @[ICache.scala 68:24]
node stall = eq(io.resp.ready, UInt<1>("h00")) @[ICache.scala 69:15]
reg refill_addr : UInt<32>, clock @[ICache.scala 71:24]
wire s1_any_tag_hit : UInt<1> @[ICache.scala 72:28]
s1_any_tag_hit is invalid @[ICache.scala 72:28]
reg s1_valid : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[ICache.scala 74:21]
node _T_221 = eq(io.s1_kill, UInt<1>("h00")) @[ICache.scala 75:31]
node _T_222 = and(s1_valid, _T_221) @[ICache.scala 75:28]
node _T_223 = eq(state, UInt<2>("h00")) @[ICache.scala 75:52]
node out_valid = and(_T_222, _T_223) @[ICache.scala 75:43]
node s1_idx = bits(io.s1_paddr, 11, 6) @[ICache.scala 76:27]
node s1_tag = bits(io.s1_paddr, 31, 12) @[ICache.scala 77:27]
node s1_hit = and(out_valid, s1_any_tag_hit) @[ICache.scala 78:26]
node _T_225 = eq(s1_any_tag_hit, UInt<1>("h00")) @[ICache.scala 79:30]
node s1_miss = and(out_valid, _T_225) @[ICache.scala 79:27]
node _T_226 = eq(state, UInt<2>("h00")) @[ICache.scala 81:40]
node _T_227 = and(io.req.valid, _T_226) @[ICache.scala 81:31]
node _T_228 = and(out_valid, stall) @[ICache.scala 81:67]
node _T_230 = eq(_T_228, UInt<1>("h00")) @[ICache.scala 81:55]
node s0_valid = and(_T_227, _T_230) @[ICache.scala 81:52]
node _T_231 = and(out_valid, stall) @[ICache.scala 84:37]
node _T_232 = or(s0_valid, _T_231) @[ICache.scala 84:24]
s1_valid <= _T_232 @[ICache.scala 84:12]
node _T_233 = eq(state, UInt<2>("h00")) @[ICache.scala 86:26]
node _T_234 = and(s1_miss, _T_233) @[ICache.scala 86:17]
when _T_234 : @[ICache.scala 86:39]
refill_addr <= io.s1_paddr @[ICache.scala 87:17]
skip @[ICache.scala 86:39]
node refill_tag = bits(refill_addr, 31, 12) @[ICache.scala 89:31]
node refill_idx = bits(refill_addr, 11, 6) @[ICache.scala 90:31]
node _T_235 = and(io.mem.0.d.ready, io.mem.0.d.valid) @[Decoupled.scala 30:37]
node _T_237 = asUInt(asSInt(UInt<8>("h0ff"))) @[package.scala 19:64]
node _T_238 = dshl(_T_237, io.mem.0.d.bits.size) @[package.scala 19:71]
node _T_239 = bits(_T_238, 7, 0) @[package.scala 19:76]
node _T_240 = not(_T_239) @[package.scala 19:40]
node _T_241 = shr(_T_240, 3) @[Edges.scala 198:59]
node _T_242 = bits(io.mem.0.d.bits.opcode, 0, 0) @[Edges.scala 90:36]
node _T_244 = mux(_T_242, _T_241, UInt<1>("h00")) @[Edges.scala 199:14]
reg _T_246 : UInt<5>, clock with : (reset => (reset, UInt<5>("h00"))) @[Reg.scala 26:44]
node _T_248 = sub(_T_246, UInt<1>("h01")) @[Edges.scala 208:28]
node _T_249 = asUInt(_T_248) @[Edges.scala 208:28]
node _T_250 = tail(_T_249, 1) @[Edges.scala 208:28]
node _T_252 = eq(_T_246, UInt<1>("h00")) @[Edges.scala 209:25]
node _T_254 = eq(_T_246, UInt<1>("h01")) @[Edges.scala 210:25]
node _T_256 = eq(_T_244, UInt<1>("h00")) @[Edges.scala 210:47]
node _T_257 = or(_T_254, _T_256) @[Edges.scala 210:37]
node refill_done = and(_T_257, _T_235) @[Edges.scala 211:22]
node _T_258 = not(_T_250) @[Edges.scala 212:27]
node refill_cnt = and(_T_244, _T_258) @[Edges.scala 212:25]
when _T_235 : @[Edges.scala 213:17]
node _T_259 = mux(_T_252, _T_244, _T_250) @[Edges.scala 214:21]
_T_246 <= _T_259 @[Edges.scala 214:15]
skip @[Edges.scala 213:17]
io.mem.0.d.ready <= UInt<1>("h01") @[ICache.scala 92:18]
reg _T_262 : UInt<16>, clock with : (reset => (reset, UInt<16>("h01"))) @[LFSR.scala 22:19]
when s1_miss : @[LFSR.scala 23:22]
node _T_263 = bits(_T_262, 0, 0) @[LFSR.scala 23:40]
node _T_264 = bits(_T_262, 2, 2) @[LFSR.scala 23:48]
node _T_265 = xor(_T_263, _T_264) @[LFSR.scala 23:43]
node _T_266 = bits(_T_262, 3, 3) @[LFSR.scala 23:56]
node _T_267 = xor(_T_265, _T_266) @[LFSR.scala 23:51]
node _T_268 = bits(_T_262, 5, 5) @[LFSR.scala 23:64]
node _T_269 = xor(_T_267, _T_268) @[LFSR.scala 23:59]
node _T_270 = bits(_T_262, 15, 1) @[LFSR.scala 23:73]
node _T_271 = cat(_T_269, _T_270) @[Cat.scala 30:58]
_T_262 <= _T_271 @[LFSR.scala 23:29]
skip @[LFSR.scala 23:22]
node repl_way = bits(_T_262, 1, 0) @[ICache.scala 95:56]
smem tag_array : UInt<20>[4][64] @[ICache.scala 97:25]
node _T_282 = bits(io.req.bits.addr, 11, 6) @[ICache.scala 98:42]
node _T_284 = eq(refill_done, UInt<1>("h00")) @[ICache.scala 98:70]
node _T_285 = and(_T_284, s0_valid) @[ICache.scala 98:83]
wire _T_287 : UInt
_T_287 is invalid
when _T_285 :
_T_287 <= _T_282
node _T_289 = or(_T_287, UInt<6>("h00"))
node _T_290 = bits(_T_289, 5, 0)
read mport tag_rdata = tag_array[_T_290], clock
skip
when refill_done : @[ICache.scala 99:22]
wire _T_304 : UInt<20>[4] @[ICache.scala 101:48]
_T_304 is invalid @[ICache.scala 101:48]
_T_304[0] <= refill_tag @[ICache.scala 101:48]
_T_304[1] <= refill_tag @[ICache.scala 101:48]
_T_304[2] <= refill_tag @[ICache.scala 101:48]
_T_304[3] <= refill_tag @[ICache.scala 101:48]
node _T_312 = eq(repl_way, UInt<1>("h00")) @[ICache.scala 101:84]
node _T_314 = eq(repl_way, UInt<1>("h01")) @[ICache.scala 101:84]
node _T_316 = eq(repl_way, UInt<2>("h02")) @[ICache.scala 101:84]
node _T_318 = eq(repl_way, UInt<2>("h03")) @[ICache.scala 101:84]
wire _T_321 : UInt<1>[4] @[ICache.scala 101:74]
_T_321 is invalid @[ICache.scala 101:74]
_T_321[0] <= _T_312 @[ICache.scala 101:74]
_T_321[1] <= _T_314 @[ICache.scala 101:74]
_T_321[2] <= _T_316 @[ICache.scala 101:74]
_T_321[3] <= _T_318 @[ICache.scala 101:74]
write mport _T_328 = tag_array[refill_idx], clock
when _T_321[0] :
_T_328[0] <= _T_304[0]
skip
when _T_321[1] :
_T_328[1] <= _T_304[1]
skip
when _T_321[2] :
_T_328[2] <= _T_304[2]
skip
when _T_321[3] :
_T_328[3] <= _T_304[3]
skip
skip @[ICache.scala 99:22]
reg vb_array : UInt<256>, clock with : (reset => (reset, UInt<256>("h00"))) @[ICache.scala 104:21]
node _T_342 = eq(invalidated, UInt<1>("h00")) @[ICache.scala 105:24]
node _T_343 = and(refill_done, _T_342) @[ICache.scala 105:21]
when _T_343 : @[ICache.scala 105:38]
node _T_344 = cat(repl_way, refill_idx) @[Cat.scala 30:58]
node _T_347 = dshl(UInt<1>("h01"), _T_344) @[ICache.scala 106:32]
node _T_348 = or(vb_array, _T_347) @[ICache.scala 106:32]
node _T_349 = not(vb_array) @[ICache.scala 106:32]
node _T_350 = or(_T_349, _T_347) @[ICache.scala 106:32]
node _T_351 = not(_T_350) @[ICache.scala 106:32]
node _T_352 = mux(UInt<1>("h01"), _T_348, _T_351) @[ICache.scala 106:32]
vb_array <= _T_352 @[ICache.scala 106:14]
skip @[ICache.scala 105:38]
when io.invalidate : @[ICache.scala 108:24]
vb_array <= UInt<1>("h00") @[ICache.scala 109:14]
invalidated <= UInt<1>("h01") @[ICache.scala 110:17]
skip @[ICache.scala 108:24]
wire s1_disparity : UInt<1>[4] @[ICache.scala 112:26]
s1_disparity is invalid @[ICache.scala 112:26]
node _T_364 = and(s1_valid, s1_disparity[0]) @[ICache.scala 114:20]
when _T_364 : @[ICache.scala 114:40]
node _T_366 = cat(UInt<1>("h00"), s1_idx) @[Cat.scala 30:58]
node _T_369 = dshl(UInt<1>("h01"), _T_366) @[ICache.scala 114:69]
node _T_370 = or(vb_array, _T_369) @[ICache.scala 114:69]
node _T_371 = not(vb_array) @[ICache.scala 114:69]
node _T_372 = or(_T_371, _T_369) @[ICache.scala 114:69]
node _T_373 = not(_T_372) @[ICache.scala 114:69]
node _T_374 = mux(UInt<1>("h00"), _T_370, _T_373) @[ICache.scala 114:69]
vb_array <= _T_374 @[ICache.scala 114:51]
skip @[ICache.scala 114:40]
node _T_375 = and(s1_valid, s1_disparity[1]) @[ICache.scala 114:20]
when _T_375 : @[ICache.scala 114:40]
node _T_377 = cat(UInt<1>("h01"), s1_idx) @[Cat.scala 30:58]
node _T_380 = dshl(UInt<1>("h01"), _T_377) @[ICache.scala 114:69]
node _T_381 = or(vb_array, _T_380) @[ICache.scala 114:69]
node _T_382 = not(vb_array) @[ICache.scala 114:69]
node _T_383 = or(_T_382, _T_380) @[ICache.scala 114:69]
node _T_384 = not(_T_383) @[ICache.scala 114:69]
node _T_385 = mux(UInt<1>("h00"), _T_381, _T_384) @[ICache.scala 114:69]
vb_array <= _T_385 @[ICache.scala 114:51]
skip @[ICache.scala 114:40]
node _T_386 = and(s1_valid, s1_disparity[2]) @[ICache.scala 114:20]
when _T_386 : @[ICache.scala 114:40]
node _T_388 = cat(UInt<2>("h02"), s1_idx) @[Cat.scala 30:58]
node _T_391 = dshl(UInt<1>("h01"), _T_388) @[ICache.scala 114:69]
node _T_392 = or(vb_array, _T_391) @[ICache.scala 114:69]
node _T_393 = not(vb_array) @[ICache.scala 114:69]
node _T_394 = or(_T_393, _T_391) @[ICache.scala 114:69]
node _T_395 = not(_T_394) @[ICache.scala 114:69]
node _T_396 = mux(UInt<1>("h00"), _T_392, _T_395) @[ICache.scala 114:69]
vb_array <= _T_396 @[ICache.scala 114:51]
skip @[ICache.scala 114:40]
node _T_397 = and(s1_valid, s1_disparity[3]) @[ICache.scala 114:20]
when _T_397 : @[ICache.scala 114:40]
node _T_399 = cat(UInt<2>("h03"), s1_idx) @[Cat.scala 30:58]
node _T_402 = dshl(UInt<1>("h01"), _T_399) @[ICache.scala 114:69]
node _T_403 = or(vb_array, _T_402) @[ICache.scala 114:69]
node _T_404 = not(vb_array) @[ICache.scala 114:69]
node _T_405 = or(_T_404, _T_402) @[ICache.scala 114:69]
node _T_406 = not(_T_405) @[ICache.scala 114:69]
node _T_407 = mux(UInt<1>("h00"), _T_403, _T_406) @[ICache.scala 114:69]
vb_array <= _T_407 @[ICache.scala 114:51]
skip @[ICache.scala 114:40]
wire s1_tag_match : UInt<1>[4] @[ICache.scala 116:26]
s1_tag_match is invalid @[ICache.scala 116:26]
wire s1_tag_hit : UInt<1>[4] @[ICache.scala 117:24]
s1_tag_hit is invalid @[ICache.scala 117:24]
wire s1_dout : UInt<64>[4] @[ICache.scala 118:21]
s1_dout is invalid @[ICache.scala 118:21]
reg s1_dout_valid : UInt<1>, clock @[Reg.scala 14:44]
s1_dout_valid <= s0_valid @[Reg.scala 14:44]
node _T_436 = eq(io.invalidate, UInt<1>("h00")) @[ICache.scala 122:17]
node _T_438 = bits(io.s1_paddr, 11, 6) @[ICache.scala 122:68]
node _T_439 = cat(UInt<1>("h00"), _T_438) @[Cat.scala 30:58]
node _T_440 = dshr(vb_array, _T_439) @[ICache.scala 122:43]
node _T_441 = bits(_T_440, 0, 0) @[ICache.scala 122:43]
node _T_442 = bits(_T_441, 0, 0) @[ICache.scala 122:97]
node _T_443 = and(_T_436, _T_442) @[ICache.scala 122:32]
node _T_446 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
reg _T_448 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_448 <= _T_446 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_449 = mux(s1_dout_valid, _T_446, _T_448) @[Package.scala 27:42]
node _T_450 = bits(tag_rdata[0], 19, 0) @[ICache.scala 125:32]
node _T_451 = eq(_T_450, s1_tag) @[ICache.scala 125:46]
reg _T_453 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_453 <= _T_451 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_454 = mux(s1_dout_valid, _T_451, _T_453) @[Package.scala 27:42]
s1_tag_match[0] <= _T_454 @[ICache.scala 125:21]
node _T_455 = and(_T_443, s1_tag_match[0]) @[ICache.scala 126:28]
s1_tag_hit[0] <= _T_455 @[ICache.scala 126:19]
node _T_458 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
node _T_459 = or(_T_449, _T_458) @[ICache.scala 127:51]
node _T_460 = and(_T_443, _T_459) @[ICache.scala 127:30]
s1_disparity[0] <= _T_460 @[ICache.scala 127:21]
node _T_462 = eq(io.invalidate, UInt<1>("h00")) @[ICache.scala 122:17]
node _T_464 = bits(io.s1_paddr, 11, 6) @[ICache.scala 122:68]
node _T_465 = cat(UInt<1>("h01"), _T_464) @[Cat.scala 30:58]
node _T_466 = dshr(vb_array, _T_465) @[ICache.scala 122:43]
node _T_467 = bits(_T_466, 0, 0) @[ICache.scala 122:43]
node _T_468 = bits(_T_467, 0, 0) @[ICache.scala 122:97]
node _T_469 = and(_T_462, _T_468) @[ICache.scala 122:32]
node _T_472 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
reg _T_474 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_474 <= _T_472 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_475 = mux(s1_dout_valid, _T_472, _T_474) @[Package.scala 27:42]
node _T_476 = bits(tag_rdata[1], 19, 0) @[ICache.scala 125:32]
node _T_477 = eq(_T_476, s1_tag) @[ICache.scala 125:46]
reg _T_479 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_479 <= _T_477 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_480 = mux(s1_dout_valid, _T_477, _T_479) @[Package.scala 27:42]
s1_tag_match[1] <= _T_480 @[ICache.scala 125:21]
node _T_481 = and(_T_469, s1_tag_match[1]) @[ICache.scala 126:28]
s1_tag_hit[1] <= _T_481 @[ICache.scala 126:19]
node _T_484 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
node _T_485 = or(_T_475, _T_484) @[ICache.scala 127:51]
node _T_486 = and(_T_469, _T_485) @[ICache.scala 127:30]
s1_disparity[1] <= _T_486 @[ICache.scala 127:21]
node _T_488 = eq(io.invalidate, UInt<1>("h00")) @[ICache.scala 122:17]
node _T_490 = bits(io.s1_paddr, 11, 6) @[ICache.scala 122:68]
node _T_491 = cat(UInt<2>("h02"), _T_490) @[Cat.scala 30:58]
node _T_492 = dshr(vb_array, _T_491) @[ICache.scala 122:43]
node _T_493 = bits(_T_492, 0, 0) @[ICache.scala 122:43]
node _T_494 = bits(_T_493, 0, 0) @[ICache.scala 122:97]
node _T_495 = and(_T_488, _T_494) @[ICache.scala 122:32]
node _T_498 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
reg _T_500 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_500 <= _T_498 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_501 = mux(s1_dout_valid, _T_498, _T_500) @[Package.scala 27:42]
node _T_502 = bits(tag_rdata[2], 19, 0) @[ICache.scala 125:32]
node _T_503 = eq(_T_502, s1_tag) @[ICache.scala 125:46]
reg _T_505 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_505 <= _T_503 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_506 = mux(s1_dout_valid, _T_503, _T_505) @[Package.scala 27:42]
s1_tag_match[2] <= _T_506 @[ICache.scala 125:21]
node _T_507 = and(_T_495, s1_tag_match[2]) @[ICache.scala 126:28]
s1_tag_hit[2] <= _T_507 @[ICache.scala 126:19]
node _T_510 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
node _T_511 = or(_T_501, _T_510) @[ICache.scala 127:51]
node _T_512 = and(_T_495, _T_511) @[ICache.scala 127:30]
s1_disparity[2] <= _T_512 @[ICache.scala 127:21]
node _T_514 = eq(io.invalidate, UInt<1>("h00")) @[ICache.scala 122:17]
node _T_516 = bits(io.s1_paddr, 11, 6) @[ICache.scala 122:68]
node _T_517 = cat(UInt<2>("h03"), _T_516) @[Cat.scala 30:58]
node _T_518 = dshr(vb_array, _T_517) @[ICache.scala 122:43]
node _T_519 = bits(_T_518, 0, 0) @[ICache.scala 122:43]
node _T_520 = bits(_T_519, 0, 0) @[ICache.scala 122:97]
node _T_521 = and(_T_514, _T_520) @[ICache.scala 122:32]
node _T_524 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
reg _T_526 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_526 <= _T_524 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_527 = mux(s1_dout_valid, _T_524, _T_526) @[Package.scala 27:42]
node _T_528 = bits(tag_rdata[3], 19, 0) @[ICache.scala 125:32]
node _T_529 = eq(_T_528, s1_tag) @[ICache.scala 125:46]
reg _T_531 : UInt<1>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_531 <= _T_529 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_532 = mux(s1_dout_valid, _T_529, _T_531) @[Package.scala 27:42]
s1_tag_match[3] <= _T_532 @[ICache.scala 125:21]
node _T_533 = and(_T_521, s1_tag_match[3]) @[ICache.scala 126:28]
s1_tag_hit[3] <= _T_533 @[ICache.scala 126:19]
node _T_536 = or(UInt<1>("h00"), UInt<1>("h00")) @[Ecc.scala 14:27]
node _T_537 = or(_T_527, _T_536) @[ICache.scala 127:51]
node _T_538 = and(_T_521, _T_537) @[ICache.scala 127:30]
s1_disparity[3] <= _T_538 @[ICache.scala 127:21]
node _T_539 = or(s1_tag_hit[0], s1_tag_hit[1]) @[ICache.scala 129:44]
node _T_540 = or(_T_539, s1_tag_hit[2]) @[ICache.scala 129:44]
node _T_541 = or(_T_540, s1_tag_hit[3]) @[ICache.scala 129:44]
node _T_542 = or(s1_disparity[0], s1_disparity[1]) @[ICache.scala 129:78]
node _T_543 = or(_T_542, s1_disparity[2]) @[ICache.scala 129:78]
node _T_544 = or(_T_543, s1_disparity[3]) @[ICache.scala 129:78]
node _T_546 = eq(_T_544, UInt<1>("h00")) @[ICache.scala 129:52]
node _T_547 = and(_T_541, _T_546) @[ICache.scala 129:49]
s1_any_tag_hit <= _T_547 @[ICache.scala 129:18]
smem _T_550 : UInt<64>[512] @[ICache.scala 132:28]
node _T_552 = eq(repl_way, UInt<1>("h00")) @[ICache.scala 133:42]
node _T_553 = and(io.mem.0.d.valid, _T_552) @[ICache.scala 133:30]
when _T_553 : @[ICache.scala 134:16]
node _T_554 = shl(refill_idx, 3) @[ICache.scala 136:36]
node _T_555 = or(_T_554, refill_cnt) @[ICache.scala 136:63]
write mport _T_556 = _T_550[_T_555], clock
_T_556 <= io.mem.0.d.bits.data
skip @[ICache.scala 134:16]
node _T_557 = bits(io.req.bits.addr, 11, 3) @[ICache.scala 138:28]
node _T_559 = eq(_T_553, UInt<1>("h00")) @[ICache.scala 139:45]
node _T_560 = and(_T_559, s0_valid) @[ICache.scala 139:50]
wire _T_562 : UInt
_T_562 is invalid
when _T_560 :
_T_562 <= _T_557
node _T_564 = or(_T_562, UInt<9>("h00"))
node _T_565 = bits(_T_564, 8, 0)
read mport _T_566 = _T_550[_T_565], clock
skip
reg _T_568 : UInt<64>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_568 <= _T_566 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_569 = mux(s1_dout_valid, _T_566, _T_568) @[Package.scala 27:42]
s1_dout[0] <= _T_569 @[ICache.scala 139:16]
smem _T_572 : UInt<64>[512] @[ICache.scala 132:28]
node _T_574 = eq(repl_way, UInt<1>("h01")) @[ICache.scala 133:42]
node _T_575 = and(io.mem.0.d.valid, _T_574) @[ICache.scala 133:30]
when _T_575 : @[ICache.scala 134:16]
node _T_576 = shl(refill_idx, 3) @[ICache.scala 136:36]
node _T_577 = or(_T_576, refill_cnt) @[ICache.scala 136:63]
write mport _T_578 = _T_572[_T_577], clock
_T_578 <= io.mem.0.d.bits.data
skip @[ICache.scala 134:16]
node _T_579 = bits(io.req.bits.addr, 11, 3) @[ICache.scala 138:28]
node _T_581 = eq(_T_575, UInt<1>("h00")) @[ICache.scala 139:45]
node _T_582 = and(_T_581, s0_valid) @[ICache.scala 139:50]
wire _T_584 : UInt
_T_584 is invalid
when _T_582 :
_T_584 <= _T_579
node _T_586 = or(_T_584, UInt<9>("h00"))
node _T_587 = bits(_T_586, 8, 0)
read mport _T_588 = _T_572[_T_587], clock
skip
reg _T_590 : UInt<64>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_590 <= _T_588 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_591 = mux(s1_dout_valid, _T_588, _T_590) @[Package.scala 27:42]
s1_dout[1] <= _T_591 @[ICache.scala 139:16]
smem _T_594 : UInt<64>[512] @[ICache.scala 132:28]
node _T_596 = eq(repl_way, UInt<2>("h02")) @[ICache.scala 133:42]
node _T_597 = and(io.mem.0.d.valid, _T_596) @[ICache.scala 133:30]
when _T_597 : @[ICache.scala 134:16]
node _T_598 = shl(refill_idx, 3) @[ICache.scala 136:36]
node _T_599 = or(_T_598, refill_cnt) @[ICache.scala 136:63]
write mport _T_600 = _T_594[_T_599], clock
_T_600 <= io.mem.0.d.bits.data
skip @[ICache.scala 134:16]
node _T_601 = bits(io.req.bits.addr, 11, 3) @[ICache.scala 138:28]
node _T_603 = eq(_T_597, UInt<1>("h00")) @[ICache.scala 139:45]
node _T_604 = and(_T_603, s0_valid) @[ICache.scala 139:50]
wire _T_606 : UInt
_T_606 is invalid
when _T_604 :
_T_606 <= _T_601
node _T_608 = or(_T_606, UInt<9>("h00"))
node _T_609 = bits(_T_608, 8, 0)
read mport _T_610 = _T_594[_T_609], clock
skip
reg _T_612 : UInt<64>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_612 <= _T_610 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_613 = mux(s1_dout_valid, _T_610, _T_612) @[Package.scala 27:42]
s1_dout[2] <= _T_613 @[ICache.scala 139:16]
smem _T_616 : UInt<64>[512] @[ICache.scala 132:28]
node _T_618 = eq(repl_way, UInt<2>("h03")) @[ICache.scala 133:42]
node _T_619 = and(io.mem.0.d.valid, _T_618) @[ICache.scala 133:30]
when _T_619 : @[ICache.scala 134:16]
node _T_620 = shl(refill_idx, 3) @[ICache.scala 136:36]
node _T_621 = or(_T_620, refill_cnt) @[ICache.scala 136:63]
write mport _T_622 = _T_616[_T_621], clock
_T_622 <= io.mem.0.d.bits.data
skip @[ICache.scala 134:16]
node _T_623 = bits(io.req.bits.addr, 11, 3) @[ICache.scala 138:28]
node _T_625 = eq(_T_619, UInt<1>("h00")) @[ICache.scala 139:45]
node _T_626 = and(_T_625, s0_valid) @[ICache.scala 139:50]
wire _T_628 : UInt
_T_628 is invalid
when _T_626 :
_T_628 <= _T_623
node _T_630 = or(_T_628, UInt<9>("h00"))
node _T_631 = bits(_T_630, 8, 0)
read mport _T_632 = _T_616[_T_631], clock
skip
reg _T_634 : UInt<64>, clock @[Reg.scala 34:16]
when s1_dout_valid : @[Reg.scala 35:19]
_T_634 <= _T_632 @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_635 = mux(s1_dout_valid, _T_632, _T_634) @[Package.scala 27:42]
s1_dout[3] <= _T_635 @[ICache.scala 139:16]
node _T_638 = eq(stall, UInt<1>("h00")) @[ICache.scala 148:51]
reg _T_639 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 26:44]
when _T_638 : @[Reg.scala 43:19]
_T_639 <= s1_hit @[Reg.scala 43:23]
skip @[Reg.scala 43:19]
node _T_641 = eq(stall, UInt<1>("h00")) @[ICache.scala 149:46]
reg _T_654 : UInt<1>[4], clock @[Reg.scala 34:16]
when _T_641 : @[Reg.scala 35:19]
_T_654 <- s1_tag_hit @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_672 = eq(stall, UInt<1>("h00")) @[ICache.scala 150:40]
reg _T_685 : UInt<64>[4], clock @[Reg.scala 34:16]
when _T_672 : @[Reg.scala 35:19]
_T_685 <- s1_dout @[Reg.scala 35:23]
skip @[Reg.scala 35:19]
node _T_703 = mux(_T_654[0], _T_685[0], UInt<1>("h00")) @[Mux.scala 19:72]
node _T_705 = mux(_T_654[1], _T_685[1], UInt<1>("h00")) @[Mux.scala 19:72]
node _T_707 = mux(_T_654[2], _T_685[2], UInt<1>("h00")) @[Mux.scala 19:72]
node _T_709 = mux(_T_654[3], _T_685[3], UInt<1>("h00")) @[Mux.scala 19:72]
node _T_711 = or(_T_703, _T_705) @[Mux.scala 19:72]
node _T_712 = or(_T_711, _T_707) @[Mux.scala 19:72]
node _T_713 = or(_T_712, _T_709) @[Mux.scala 19:72]
wire _T_715 : UInt<64> @[Mux.scala 19:72]
_T_715 is invalid @[Mux.scala 19:72]
_T_715 <= _T_713 @[Mux.scala 19:72]
io.resp.bits.datablock <= _T_715 @[ICache.scala 151:30]
io.resp.valid <= _T_639 @[ICache.scala 152:21]
node _T_716 = eq(state, UInt<2>("h01")) @[ICache.scala 154:27]
node _T_718 = eq(io.s2_kill, UInt<1>("h00")) @[ICache.scala 154:44]
node _T_719 = and(_T_716, _T_718) @[ICache.scala 154:41]
io.mem.0.a.valid <= _T_719 @[ICache.scala 154:18]
node _T_721 = shr(refill_addr, 6) @[ICache.scala 157:46]
node _T_722 = shl(_T_721, 6) @[ICache.scala 157:63]
node _T_726 = leq(UInt<1>("h00"), UInt<3>("h06")) @[Parameters.scala 63:32]
node _T_728 = leq(UInt<3>("h06"), UInt<3>("h06")) @[Parameters.scala 63:42]
node _T_729 = and(_T_726, _T_728) @[Parameters.scala 63:37]
node _T_730 = or(UInt<1>("h00"), _T_729) @[Parameters.scala 132:31]
node _T_732 = xor(_T_722, UInt<1>("h00")) @[Parameters.scala 117:31]
node _T_733 = cvt(_T_732) @[Parameters.scala 117:49]
node _T_735 = and(_T_733, asSInt(UInt<31>("h020000000"))) @[Parameters.scala 117:52]
node _T_736 = asSInt(_T_735) @[Parameters.scala 117:52]
node _T_738 = eq(_T_736, asSInt(UInt<1>("h00"))) @[Parameters.scala 117:67]
node _T_739 = and(_T_730, _T_738) @[Parameters.scala 132:56]
node _T_742 = leq(UInt<1>("h00"), UInt<3>("h06")) @[Parameters.scala 63:32]
node _T_744 = leq(UInt<3>("h06"), UInt<4>("h08")) @[Parameters.scala 63:42]
node _T_745 = and(_T_742, _T_744) @[Parameters.scala 63:37]
node _T_746 = or(UInt<1>("h00"), _T_745) @[Parameters.scala 132:31]
node _T_748 = xor(_T_722, UInt<30>("h020000000")) @[Parameters.scala 117:31]
node _T_749 = cvt(_T_748) @[Parameters.scala 117:49]
node _T_751 = and(_T_749, asSInt(UInt<31>("h020000000"))) @[Parameters.scala 117:52]
node _T_752 = asSInt(_T_751) @[Parameters.scala 117:52]
node _T_754 = eq(_T_752, asSInt(UInt<1>("h00"))) @[Parameters.scala 117:67]
node _T_755 = and(_T_746, _T_754) @[Parameters.scala 132:56]
node _T_757 = or(UInt<1>("h00"), _T_739) @[Parameters.scala 134:30]
node _T_758 = or(_T_757, _T_755) @[Parameters.scala 134:30]
wire _T_767 : {opcode : UInt<3>, param : UInt<3>, size : UInt<4>, source : UInt<1>, address : UInt<32>, mask : UInt<8>, data : UInt<64>} @[Edges.scala 342:17]
_T_767 is invalid @[Edges.scala 342:17]
_T_767.opcode <= UInt<3>("h04") @[Edges.scala 343:15]
_T_767.param <= UInt<1>("h00") @[Edges.scala 344:15]
_T_767.size <= UInt<3>("h06") @[Edges.scala 345:15]
_T_767.source <= UInt<1>("h00") @[Edges.scala 346:15]
_T_767.address <= _T_722 @[Edges.scala 347:15]
node _T_779 = dshl(UInt<1>("h01"), UInt<2>("h02")) @[OneHot.scala 49:12]
node _T_780 = bits(_T_779, 2, 0) @[OneHot.scala 49:37]
node _T_782 = geq(UInt<3>("h06"), UInt<2>("h03")) @[package.scala 41:21]
node _T_784 = bits(_T_780, 2, 2) @[package.scala 44:26]
node _T_785 = bits(_T_722, 2, 2) @[package.scala 45:26]
node _T_787 = eq(_T_785, UInt<1>("h00")) @[package.scala 46:20]
node _T_788 = and(UInt<1>("h01"), _T_787) @[package.scala 49:27]
node _T_789 = and(_T_784, _T_788) @[package.scala 50:38]
node _T_790 = or(_T_782, _T_789) @[package.scala 50:29]
node _T_791 = and(UInt<1>("h01"), _T_785) @[package.scala 49:27]
node _T_792 = and(_T_784, _T_791) @[package.scala 50:38]
node _T_793 = or(_T_782, _T_792) @[package.scala 50:29]
node _T_794 = bits(_T_780, 1, 1) @[package.scala 44:26]
node _T_795 = bits(_T_722, 1, 1) @[package.scala 45:26]
node _T_797 = eq(_T_795, UInt<1>("h00")) @[package.scala 46:20]
node _T_798 = and(_T_788, _T_797) @[package.scala 49:27]
node _T_799 = and(_T_794, _T_798) @[package.scala 50:38]
node _T_800 = or(_T_790, _T_799) @[package.scala 50:29]
node _T_801 = and(_T_788, _T_795) @[package.scala 49:27]
node _T_802 = and(_T_794, _T_801) @[package.scala 50:38]
node _T_803 = or(_T_790, _T_802) @[package.scala 50:29]
node _T_804 = and(_T_791, _T_797) @[package.scala 49:27]
node _T_805 = and(_T_794, _T_804) @[package.scala 50:38]
node _T_806 = or(_T_793, _T_805) @[package.scala 50:29]
node _T_807 = and(_T_791, _T_795) @[package.scala 49:27]
node _T_808 = and(_T_794, _T_807) @[package.scala 50:38]
node _T_809 = or(_T_793, _T_808) @[package.scala 50:29]
node _T_810 = bits(_T_780, 0, 0) @[package.scala 44:26]
node _T_811 = bits(_T_722, 0, 0) @[package.scala 45:26]
node _T_813 = eq(_T_811, UInt<1>("h00")) @[package.scala 46:20]
node _T_814 = and(_T_798, _T_813) @[package.scala 49:27]
node _T_815 = and(_T_810, _T_814) @[package.scala 50:38]
node _T_816 = or(_T_800, _T_815) @[package.scala 50:29]
node _T_817 = and(_T_798, _T_811) @[package.scala 49:27]
node _T_818 = and(_T_810, _T_817) @[package.scala 50:38]
node _T_819 = or(_T_800, _T_818) @[package.scala 50:29]
node _T_820 = and(_T_801, _T_813) @[package.scala 49:27]
node _T_821 = and(_T_810, _T_820) @[package.scala 50:38]
node _T_822 = or(_T_803, _T_821) @[package.scala 50:29]
node _T_823 = and(_T_801, _T_811) @[package.scala 49:27]
node _T_824 = and(_T_810, _T_823) @[package.scala 50:38]
node _T_825 = or(_T_803, _T_824) @[package.scala 50:29]
node _T_826 = and(_T_804, _T_813) @[package.scala 49:27]
node _T_827 = and(_T_810, _T_826) @[package.scala 50:38]
node _T_828 = or(_T_806, _T_827) @[package.scala 50:29]
node _T_829 = and(_T_804, _T_811) @[package.scala 49:27]
node _T_830 = and(_T_810, _T_829) @[package.scala 50:38]
node _T_831 = or(_T_806, _T_830) @[package.scala 50:29]
node _T_832 = and(_T_807, _T_813) @[package.scala 49:27]
node _T_833 = and(_T_810, _T_832) @[package.scala 50:38]
node _T_834 = or(_T_809, _T_833) @[package.scala 50:29]
node _T_835 = and(_T_807, _T_811) @[package.scala 49:27]
node _T_836 = and(_T_810, _T_835) @[package.scala 50:38]
node _T_837 = or(_T_809, _T_836) @[package.scala 50:29]
node _T_838 = cat(_T_819, _T_816) @[Cat.scala 30:58]
node _T_839 = cat(_T_825, _T_822) @[Cat.scala 30:58]
node _T_840 = cat(_T_839, _T_838) @[Cat.scala 30:58]
node _T_841 = cat(_T_831, _T_828) @[Cat.scala 30:58]
node _T_842 = cat(_T_837, _T_834) @[Cat.scala 30:58]
node _T_843 = cat(_T_842, _T_841) @[Cat.scala 30:58]
node _T_844 = cat(_T_843, _T_840) @[Cat.scala 30:58]
_T_767.mask <= _T_844 @[Edges.scala 348:15]
_T_767.data <= UInt<1>("h00") @[Edges.scala 349:15]
io.mem.0.a.bits <- _T_767 @[ICache.scala 155:17]
io.mem.0.c.valid <= UInt<1>("h00") @[ICache.scala 159:18]
io.mem.0.e.valid <= UInt<1>("h00") @[ICache.scala 160:18]
node _T_848 = eq(UInt<2>("h00"), state) @[Conditional.scala 29:28]
when _T_848 : @[Conditional.scala 29:59]
when s1_miss : @[ICache.scala 165:22]
state <= UInt<2>("h01") @[ICache.scala 165:30]
skip @[ICache.scala 165:22]
invalidated <= UInt<1>("h00") @[ICache.scala 166:19]
skip @[Conditional.scala 29:59]
node _T_850 = eq(UInt<2>("h01"), state) @[Conditional.scala 29:28]
when _T_850 : @[Conditional.scala 29:59]
when io.mem.0.a.ready : @[ICache.scala 169:29]
state <= UInt<2>("h02") @[ICache.scala 169:37]
skip @[ICache.scala 169:29]
when io.s2_kill : @[ICache.scala 170:25]
state <= UInt<2>("h00") @[ICache.scala 170:33]
skip @[ICache.scala 170:25]
skip @[Conditional.scala 29:59]
node _T_851 = eq(UInt<2>("h02"), state) @[Conditional.scala 29:28]
when _T_851 : @[Conditional.scala 29:59]
when io.mem.0.d.valid : @[ICache.scala 173:29]
state <= UInt<2>("h03") @[ICache.scala 173:37]
skip @[ICache.scala 173:29]
skip @[Conditional.scala 29:59]
node _T_852 = eq(UInt<2>("h03"), state) @[Conditional.scala 29:28]
when _T_852 : @[Conditional.scala 29:59]
when refill_done : @[ICache.scala 176:26]
state <= UInt<2>("h00") @[ICache.scala 176:34]
skip @[ICache.scala 176:26]
skip @[Conditional.scala 29:59]