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
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
|
; RUN: firrtl -i %s -o %s.v -X verilog -p c | tee %s.out | FileCheck %s
;CHECK: Done!
circuit Core :
module ALU :
input B : UInt<32>
output out : UInt<32>
output sum : UInt<32>
input A : UInt<32>
input alu_op : UInt<4>
node shamt = bits(B, 4, 0)
node T_1224 = add-wrap(A, B)
node T_1225 = sub-wrap(A, B)
node T_1226 = convert(A)
node T_1227 = dshr(T_1226, shamt)
node T_1228 = as-UInt(T_1227)
node T_1229 = dshr(A, shamt)
node T_1230 = dshl(A, shamt)
node T_1231 = bits(T_1230, 31, 0)
node T_1232 = convert(A)
node T_1233 = convert(B)
node T_1234 = lt(T_1232, T_1233)
node T_1235 = as-UInt(T_1234)
node T_1236 = lt(A, B)
node T_1237 = as-UInt(T_1236)
node T_1238 = bit-and(A, B)
node T_1239 = bit-or(A, B)
node T_1240 = bit-xor(A, B)
node T_1241 = eq(UInt<4>(10), alu_op)
node T_1242 = mux(T_1241, A, B)
node T_1243 = eq(UInt<4>(4), alu_op)
node T_1244 = mux(T_1243, T_1240, T_1242)
node T_1245 = eq(UInt<4>(3), alu_op)
node T_1246 = mux(T_1245, T_1239, T_1244)
node T_1247 = eq(UInt<4>(2), alu_op)
node T_1248 = mux(T_1247, T_1238, T_1246)
node T_1249 = eq(UInt<4>(7), alu_op)
node T_1250 = mux(T_1249, T_1237, T_1248)
node T_1251 = eq(UInt<4>(5), alu_op)
node T_1252 = mux(T_1251, T_1235, T_1250)
node T_1253 = eq(UInt<4>(6), alu_op)
node T_1254 = mux(T_1253, T_1231, T_1252)
node T_1255 = eq(UInt<4>(8), alu_op)
node T_1256 = mux(T_1255, T_1229, T_1254)
node T_1257 = eq(UInt<4>(9), alu_op)
node T_1258 = mux(T_1257, T_1228, T_1256)
node T_1259 = eq(UInt<4>(1), alu_op)
node T_1260 = mux(T_1259, T_1225, T_1258)
node T_1261 = eq(UInt<4>(0), alu_op)
node oot = mux(T_1261, T_1224, T_1260)
node T_1262 = bits(oot, 31, 0)
out := T_1262
node T_1263 = bit(alu_op, 0)
node T_1264 = sub-wrap(UInt<1>(0), B)
node T_1265 = mux(T_1263, T_1264, B)
node T_1266 = add-wrap(A, T_1265)
sum := T_1266
module BrCond :
input br_type : UInt<3>
input rs1 : UInt<32>
input rs2 : UInt<32>
output taken : UInt<1>
node eq = eq(rs1, rs2)
node neq = bit-not(eq)
node T_1267 = convert(rs1)
node T_1268 = convert(rs2)
node lt = lt(T_1267, T_1268)
node ge = bit-not(lt)
node ltu = lt(rs1, rs2)
node geu = bit-not(ltu)
node T_1269 = eq(br_type, UInt<3>(2))
node T_1270 = bit-and(T_1269, eq)
node T_1271 = eq(br_type, UInt<3>(6))
node T_1272 = bit-and(T_1271, neq)
node T_1273 = bit-or(T_1270, T_1272)
node T_1274 = eq(br_type, UInt<3>(1))
node T_1275 = bit-and(T_1274, lt)
node T_1276 = bit-or(T_1273, T_1275)
node T_1277 = eq(br_type, UInt<3>(5))
node T_1278 = bit-and(T_1277, ge)
node T_1279 = bit-or(T_1276, T_1278)
node T_1280 = eq(br_type, UInt<3>(0))
node T_1281 = bit-and(T_1280, ltu)
node T_1282 = bit-or(T_1279, T_1281)
node T_1283 = eq(br_type, UInt<3>(4))
node T_1284 = bit-and(T_1283, geu)
node T_1285 = bit-or(T_1282, T_1284)
taken := T_1285
module RegFile :
input raddr1 : UInt<5>
input raddr2 : UInt<5>
output rdata1 : UInt<32>
output rdata2 : UInt<32>
input wen : UInt<1>
input waddr : UInt<5>
input wdata : UInt<32>
cmem regs : UInt<32>[32]
node T_1286 = eq(raddr1, UInt<1>(0))
node T_1287 = bit-not(T_1286)
accessor T_1288 = regs[raddr1]
node T_1289 = mux(T_1287, T_1288, UInt<1>(0))
rdata1 := T_1289
node T_1290 = eq(raddr2, UInt<1>(0))
node T_1291 = bit-not(T_1290)
accessor T_1292 = regs[raddr2]
node T_1293 = mux(T_1291, T_1292, UInt<1>(0))
rdata2 := T_1293
node T_1294 = eq(waddr, UInt<1>(0))
node T_1295 = bit-not(T_1294)
node T_1296 = bit-and(wen, T_1295)
when T_1296 :
accessor T_1297 = regs[waddr]
T_1297 := wdata
module ImmGenWire :
output out : UInt<32>
input sel : UInt<3>
input inst : UInt<32>
node T_1298 = bits(inst, 31, 20)
node Iimm = convert(T_1298)
node T_1299 = bits(inst, 31, 25)
node T_1300 = bits(inst, 11, 7)
node T_1301 = cat(T_1299, T_1300)
node Simm = convert(T_1301)
node T_1302 = bit(inst, 31)
node T_1303 = bit(inst, 7)
node T_1304 = bits(inst, 30, 25)
node T_1305 = bits(inst, 11, 8)
node T_1306 = cat(T_1302, T_1303)
node T_1307 = cat(T_1305, UInt<1>(0))
node T_1308 = cat(T_1304, T_1307)
node T_1309 = cat(T_1306, T_1308)
node Bimm = convert(T_1309)
node T_1310 = bits(inst, 31, 12)
node T_1311 = cat(T_1310, UInt<12>(0))
node Uimm = convert(T_1311)
node T_1312 = bit(inst, 31)
node T_1313 = bits(inst, 19, 12)
node T_1314 = bit(inst, 20)
node T_1315 = bits(inst, 30, 25)
node T_1316 = bits(inst, 24, 21)
node T_1317 = cat(T_1313, T_1314)
node T_1318 = cat(T_1312, T_1317)
node T_1319 = cat(T_1316, UInt<1>(0))
node T_1320 = cat(T_1315, T_1319)
node T_1321 = cat(T_1318, T_1320)
node Jimm = convert(T_1321)
node T_1322 = bits(inst, 19, 15)
node T_1323 = pad(T_1322, 32)
node Zimm = convert(T_1323)
node T_1324 = eq(UInt<3>(3), sel)
node T_1325 = mux(T_1324, Jimm, Zimm)
node T_1326 = eq(UInt<3>(2), sel)
node T_1327 = mux(T_1326, Uimm, T_1325)
node T_1328 = eq(UInt<3>(4), sel)
node T_1329 = mux(T_1328, Bimm, T_1327)
node T_1330 = eq(UInt<3>(1), sel)
node T_1331 = mux(T_1330, Simm, T_1329)
node T_1332 = eq(UInt<3>(0), sel)
node T_1333 = mux(T_1332, Iimm, T_1331)
node T_1334 = as-UInt(T_1333)
out := T_1334
module CSR :
output host : {status : UInt<32>, flip hid : UInt<1>, tohost : UInt<32>}
input src : UInt<32>
input cmd : UInt<2>
output data : UInt<32>
input addr : UInt<12>
reg reg_tohost : UInt<32>
on-reset reg_tohost := UInt<32>(0)
reg reg_status : UInt<32>
on-reset reg_status := UInt<32>(0)
host.tohost := reg_tohost
host.status := reg_status
node T_1335 = eq(UInt<12>(1291), addr)
node T_1336 = mux(T_1335, host.hid, UInt<1>(0))
node T_1337 = eq(UInt<12>(1290), addr)
node T_1338 = mux(T_1337, reg_status, T_1336)
node T_1339 = eq(UInt<12>(1310), addr)
node T_1340 = mux(T_1339, reg_tohost, T_1338)
data := T_1340
node T_1341 = eq(cmd, UInt<2>(1))
when T_1341 :
node T_1342 = eq(addr, UInt<12>(1310))
when T_1342 : reg_tohost := src
node T_1343 = eq(addr, UInt<12>(1290))
when T_1343 : reg_status := src
node T_1344 = eq(cmd, UInt<2>(2))
node T_1345 = neq(src, UInt<1>(0))
node T_1346 = bit-and(T_1344, T_1345)
when T_1346 :
node T_1347 = eq(addr, UInt<12>(1310))
when T_1347 :
node T_1348 = dshl(UInt<1>(1), src)
node T_1349 = bit-or(data, T_1348)
reg_tohost := T_1349
node T_1350 = eq(addr, UInt<12>(1290))
when T_1350 :
node T_1351 = dshl(UInt<1>(1), src)
node T_1352 = bit-or(data, T_1351)
reg_status := T_1352
node T_1353 = eq(cmd, UInt<2>(3))
node T_1354 = neq(src, UInt<1>(0))
node T_1355 = bit-and(T_1353, T_1354)
when T_1355 :
node T_1356 = eq(addr, UInt<12>(1310))
when T_1356 :
node T_1357 = dshl(UInt<1>(0), src)
node T_1358 = bit-and(data, T_1357)
reg_tohost := T_1358
node T_1359 = eq(addr, UInt<12>(1290))
when T_1359 :
node T_1360 = dshl(UInt<1>(0), src)
node T_1361 = bit-and(data, T_1360)
reg_status := T_1361
module Datapath :
output host : {status : UInt<32>, flip hid : UInt<1>, tohost : UInt<32>}
input ctrl : {flip inst : UInt<32>, flip stall : UInt<1>, pc_sel : UInt<1>, inst_re : UInt<1>, inst_type : UInt<1>, A_sel : UInt<1>, B_sel : UInt<1>, imm_sel : UInt<3>, alu_op : UInt<4>, br_type : UInt<3>, data_re : UInt<1>, st_type : UInt<2>, ld_type : UInt<3>, wb_sel : UInt<2>, wb_en : UInt<1>, csr_cmd : UInt<2>}
output icache : {re : UInt<1>, addr : UInt<32>, flip dout : UInt<32>, we : UInt<4>, din : UInt<32>}
output dcache : {re : UInt<1>, addr : UInt<32>, flip dout : UInt<32>, we : UInt<4>, din : UInt<32>}
input stall : UInt<1>
inst alu of ALU
inst brCond of BrCond
inst regFile of RegFile
inst immGen of ImmGenWire
reg fe_inst : UInt<32>
on-reset fe_inst := UInt<32>(0)
reg fe_pc : UInt
reg ew_inst : UInt<32>
on-reset ew_inst := UInt<32>(0)
reg ew_pc : UInt
reg ew_alu : UInt
node T_1362 = sub-wrap(UInt<14>(8192), UInt<32>(4))
reg pc : UInt<32>
on-reset pc := T_1362
node T_1363 = eq(ctrl.pc_sel, UInt<1>(1))
node T_1364 = bit-or(T_1363, brCond.taken)
node T_1365 = add-wrap(pc, UInt<3>(4))
node iaddr = mux(T_1364, alu.sum, T_1365)
node T_1366 = eq(ctrl.inst_type, UInt<1>(1))
node T_1367 = bit-or(T_1366, brCond.taken)
node inst = mux(T_1367, UInt<32>(19), icache.dout)
icache.we := UInt<1>(0)
icache.din := UInt<1>(0)
icache.addr := iaddr
icache.re := ctrl.inst_re
node T_1368 = eq(dcache.we, UInt<1>(0))
node T_1369 = bit-not(T_1368)
node T_1370 = bit-not(T_1369)
node T_1371 = bit-and(icache.re, T_1370)
node T_1372 = mux(T_1371, iaddr, pc)
pc := T_1372
node T_1373 = bit-not(stall)
when T_1373 :
fe_pc := pc
fe_inst := inst
ctrl.inst := fe_inst
ctrl.stall := stall
node rd_addr = bits(fe_inst, 11, 7)
node rs1_addr = bits(fe_inst, 19, 15)
node rs2_addr = bits(fe_inst, 24, 20)
regFile.raddr1 := rs1_addr
regFile.raddr2 := rs2_addr
immGen.inst := fe_inst
immGen.sel := ctrl.imm_sel
node T_1374 = eq(rs1_addr, UInt<1>(0))
node rs1NotZero = bit-not(T_1374)
node T_1375 = eq(rs2_addr, UInt<1>(0))
node rs2NotZero = bit-not(T_1375)
node T_1376 = eq(ctrl.wb_sel, UInt<2>(0))
node alutype = bit-and(ctrl.wb_en, T_1376)
node ex_rd_addr = bits(ew_inst, 11, 7)
node T_1377 = bit-and(alutype, rs1NotZero)
node T_1378 = eq(rs1_addr, ex_rd_addr)
node T_1379 = bit-and(T_1377, T_1378)
node rs1 = mux(T_1379, ew_alu, regFile.rdata1)
node T_1380 = bit-and(alutype, rs2NotZero)
node T_1381 = eq(rs2_addr, ex_rd_addr)
node T_1382 = bit-and(T_1380, T_1381)
node rs2 = mux(T_1382, ew_alu, regFile.rdata2)
node T_1383 = eq(ctrl.A_sel, UInt<1>(0))
node T_1384 = mux(T_1383, rs1, fe_pc)
alu.A := T_1384
node T_1385 = eq(ctrl.B_sel, UInt<1>(0))
node T_1386 = mux(T_1385, rs2, immGen.out)
alu.B := T_1386
alu.alu_op := ctrl.alu_op
brCond.rs1 := rs1
brCond.rs2 := rs2
brCond.br_type := ctrl.br_type
node T_1387 = bit(alu.sum, 1)
node T_1388 = dshl(T_1387, UInt<3>(4))
node T_1389 = bit(alu.sum, 0)
node T_1390 = dshl(T_1389, UInt<2>(3))
node woffset = bit-or(T_1388, T_1390)
dcache.re := ctrl.data_re
node T_1391 = mux(stall, ew_alu, alu.sum)
dcache.addr := T_1391
node T_1392 = bits(alu.sum, 1, 0)
node T_1393 = dshl(UInt<2>(3), T_1392)
node T_1394 = bits(T_1393, 3, 0)
node T_1395 = bits(alu.sum, 1, 0)
node T_1396 = dshl(UInt<1>(1), T_1395)
node T_1397 = bits(T_1396, 3, 0)
node T_1398 = eq(UInt<2>(2), ctrl.st_type)
node T_1399 = mux(T_1398, T_1397, UInt<4>(0))
node T_1400 = eq(UInt<2>(1), ctrl.st_type)
node T_1401 = mux(T_1400, T_1394, T_1399)
node T_1402 = eq(UInt<2>(0), ctrl.st_type)
node T_1403 = mux(T_1402, UInt<4>(15), T_1401)
node T_1404 = mux(stall, UInt<4>(0), T_1403)
dcache.we := T_1404
node T_1405 = dshl(rs2, woffset)
node T_1406 = bits(T_1405, 31, 0)
dcache.din := T_1406
node T_1407 = bit-not(stall)
when T_1407 :
ew_pc := fe_pc
ew_inst := fe_inst
ew_alu := alu.out
node T_1408 = bit(ew_alu, 1)
node T_1409 = dshl(T_1408, UInt<3>(4))
node T_1410 = bit(ew_alu, 0)
node T_1411 = dshl(T_1410, UInt<2>(3))
node loffset = bit-or(T_1409, T_1411)
node lshift = dshr(dcache.dout, loffset)
node T_1412 = bits(lshift, 15, 0)
node T_1413 = convert(T_1412)
node T_1414 = pad(T_1413, 32)
node T_1415 = as-UInt(T_1414)
node T_1416 = bits(lshift, 7, 0)
node T_1417 = convert(T_1416)
node T_1418 = pad(T_1417, 32)
node T_1419 = as-UInt(T_1418)
node T_1420 = bits(lshift, 15, 0)
node T_1421 = bits(lshift, 7, 0)
node T_1422 = eq(UInt<3>(4), ctrl.ld_type)
node T_1423 = mux(T_1422, T_1421, dcache.dout)
node T_1424 = eq(UInt<3>(3), ctrl.ld_type)
node T_1425 = mux(T_1424, T_1420, T_1423)
node T_1426 = eq(UInt<3>(2), ctrl.ld_type)
node T_1427 = mux(T_1426, T_1419, T_1425)
node T_1428 = eq(UInt<3>(1), ctrl.ld_type)
node load = mux(T_1428, T_1415, T_1427)
inst csr of CSR
host := csr.host
csr.src := ew_alu
node T_1429 = bits(ew_inst, 31, 20)
csr.addr := T_1429
csr.cmd := ctrl.csr_cmd
node T_1430 = add-wrap(ew_pc, UInt<3>(4))
node T_1431 = eq(UInt<2>(3), ctrl.wb_sel)
node T_1432 = mux(T_1431, csr.data, ew_alu)
node T_1433 = eq(UInt<2>(2), ctrl.wb_sel)
node T_1434 = mux(T_1433, T_1430, T_1432)
node T_1435 = eq(UInt<2>(1), ctrl.wb_sel)
node regWrite = mux(T_1435, load, T_1434)
regFile.wen := ctrl.wb_en
regFile.waddr := ex_rd_addr
regFile.wdata := regWrite
module Control :
output ctrl : {flip inst : UInt<32>, flip stall : UInt<1>, pc_sel : UInt<1>, inst_re : UInt<1>, inst_type : UInt<1>, A_sel : UInt<1>, B_sel : UInt<1>, imm_sel : UInt<3>, alu_op : UInt<4>, br_type : UInt<3>, data_re : UInt<1>, st_type : UInt<2>, ld_type : UInt<3>, wb_sel : UInt<2>, wb_en : UInt<1>, csr_cmd : UInt<2>}
node T_1436 = bit-and(UInt<7>(127), ctrl.inst)
node T_1437 = eq(T_1436, UInt<6>(55))
node T_1438 = bit-and(UInt<7>(127), ctrl.inst)
node T_1439 = eq(T_1438, UInt<5>(23))
node T_1440 = bit-and(UInt<7>(127), ctrl.inst)
node T_1441 = eq(T_1440, UInt<7>(111))
node T_1442 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1443 = eq(T_1442, UInt<7>(103))
node T_1444 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1445 = eq(T_1444, UInt<7>(99))
node T_1446 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1447 = eq(T_1446, UInt<13>(4195))
node T_1448 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1449 = eq(T_1448, UInt<15>(16483))
node T_1450 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1451 = eq(T_1450, UInt<15>(20579))
node T_1452 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1453 = eq(T_1452, UInt<15>(24675))
node T_1454 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1455 = eq(T_1454, UInt<15>(28771))
node T_1456 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1457 = eq(T_1456, UInt<2>(3))
node T_1458 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1459 = eq(T_1458, UInt<13>(4099))
node T_1460 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1461 = eq(T_1460, UInt<14>(8195))
node T_1462 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1463 = eq(T_1462, UInt<15>(16387))
node T_1464 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1465 = eq(T_1464, UInt<15>(20483))
node T_1466 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1467 = eq(T_1466, UInt<6>(35))
node T_1468 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1469 = eq(T_1468, UInt<13>(4131))
node T_1470 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1471 = eq(T_1470, UInt<14>(8227))
node T_1472 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1473 = eq(T_1472, UInt<5>(19))
node T_1474 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1475 = eq(T_1474, UInt<14>(8211))
node T_1476 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1477 = eq(T_1476, UInt<14>(12307))
node T_1478 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1479 = eq(T_1478, UInt<15>(16403))
node T_1480 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1481 = eq(T_1480, UInt<15>(24595))
node T_1482 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1483 = eq(T_1482, UInt<15>(28691))
node T_1484 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1485 = eq(T_1484, UInt<13>(4115))
node T_1486 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1487 = eq(T_1486, UInt<15>(20499))
node T_1488 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1489 = eq(T_1488, UInt<31>(1073762323))
node T_1490 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1491 = eq(T_1490, UInt<6>(51))
node T_1492 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1493 = eq(T_1492, UInt<31>(1073741875))
node T_1494 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1495 = eq(T_1494, UInt<13>(4147))
node T_1496 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1497 = eq(T_1496, UInt<14>(8243))
node T_1498 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1499 = eq(T_1498, UInt<14>(12339))
node T_1500 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1501 = eq(T_1500, UInt<15>(16435))
node T_1502 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1503 = eq(T_1502, UInt<15>(20531))
node T_1504 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1505 = eq(T_1504, UInt<31>(1073762355))
node T_1506 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1507 = eq(T_1506, UInt<15>(24627))
node T_1508 = bit-and(UInt<32>(4261441663), ctrl.inst)
node T_1509 = eq(T_1508, UInt<15>(28723))
node T_1510 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1511 = eq(T_1510, UInt<13>(4211))
node T_1512 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1513 = eq(T_1512, UInt<14>(8307))
node T_1514 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1515 = eq(T_1514, UInt<14>(12403))
node T_1516 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1517 = eq(T_1516, UInt<15>(20595))
node T_1518 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1519 = eq(T_1518, UInt<15>(24691))
node T_1520 = bit-and(UInt<15>(28799), ctrl.inst)
node T_1521 = eq(T_1520, UInt<15>(28787))
node T_1522 = mux(T_1521, UInt<1>(0), UInt<1>(0))
node T_1523 = mux(T_1519, UInt<1>(0), T_1522)
node T_1524 = mux(T_1517, UInt<1>(0), T_1523)
node T_1525 = mux(T_1515, UInt<1>(0), T_1524)
node T_1526 = mux(T_1513, UInt<1>(0), T_1525)
node T_1527 = mux(T_1511, UInt<1>(0), T_1526)
node T_1528 = mux(T_1509, UInt<1>(0), T_1527)
node T_1529 = mux(T_1507, UInt<1>(0), T_1528)
node T_1530 = mux(T_1505, UInt<1>(0), T_1529)
node T_1531 = mux(T_1503, UInt<1>(0), T_1530)
node T_1532 = mux(T_1501, UInt<1>(0), T_1531)
node T_1533 = mux(T_1499, UInt<1>(0), T_1532)
node T_1534 = mux(T_1497, UInt<1>(0), T_1533)
node T_1535 = mux(T_1495, UInt<1>(0), T_1534)
node T_1536 = mux(T_1493, UInt<1>(0), T_1535)
node T_1537 = mux(T_1491, UInt<1>(0), T_1536)
node T_1538 = mux(T_1489, UInt<1>(0), T_1537)
node T_1539 = mux(T_1487, UInt<1>(0), T_1538)
node T_1540 = mux(T_1485, UInt<1>(0), T_1539)
node T_1541 = mux(T_1483, UInt<1>(0), T_1540)
node T_1542 = mux(T_1481, UInt<1>(0), T_1541)
node T_1543 = mux(T_1479, UInt<1>(0), T_1542)
node T_1544 = mux(T_1477, UInt<1>(0), T_1543)
node T_1545 = mux(T_1475, UInt<1>(0), T_1544)
node T_1546 = mux(T_1473, UInt<1>(0), T_1545)
node T_1547 = mux(T_1471, UInt<1>(0), T_1546)
node T_1548 = mux(T_1469, UInt<1>(0), T_1547)
node T_1549 = mux(T_1467, UInt<1>(0), T_1548)
node T_1550 = mux(T_1465, UInt<1>(0), T_1549)
node T_1551 = mux(T_1463, UInt<1>(0), T_1550)
node T_1552 = mux(T_1461, UInt<1>(0), T_1551)
node T_1553 = mux(T_1459, UInt<1>(0), T_1552)
node T_1554 = mux(T_1457, UInt<1>(0), T_1553)
node T_1555 = mux(T_1455, UInt<1>(0), T_1554)
node T_1556 = mux(T_1453, UInt<1>(0), T_1555)
node T_1557 = mux(T_1451, UInt<1>(0), T_1556)
node T_1558 = mux(T_1449, UInt<1>(0), T_1557)
node T_1559 = mux(T_1447, UInt<1>(0), T_1558)
node T_1560 = mux(T_1445, UInt<1>(0), T_1559)
node T_1561 = mux(T_1443, UInt<1>(1), T_1560)
node T_1562 = mux(T_1441, UInt<1>(1), T_1561)
node T_1563 = mux(T_1439, UInt<1>(0), T_1562)
node T_1564 = mux(T_1437, UInt<1>(0), T_1563)
node T_1565 = mux(T_1521, UInt<1>(1), UInt<1>(1))
node T_1566 = mux(T_1519, UInt<1>(1), T_1565)
node T_1567 = mux(T_1517, UInt<1>(1), T_1566)
node T_1568 = mux(T_1515, UInt<1>(0), T_1567)
node T_1569 = mux(T_1513, UInt<1>(0), T_1568)
node T_1570 = mux(T_1511, UInt<1>(0), T_1569)
node T_1571 = mux(T_1509, UInt<1>(0), T_1570)
node T_1572 = mux(T_1507, UInt<1>(0), T_1571)
node T_1573 = mux(T_1505, UInt<1>(0), T_1572)
node T_1574 = mux(T_1503, UInt<1>(0), T_1573)
node T_1575 = mux(T_1501, UInt<1>(0), T_1574)
node T_1576 = mux(T_1499, UInt<1>(0), T_1575)
node T_1577 = mux(T_1497, UInt<1>(0), T_1576)
node T_1578 = mux(T_1495, UInt<1>(0), T_1577)
node T_1579 = mux(T_1493, UInt<1>(0), T_1578)
node T_1580 = mux(T_1491, UInt<1>(0), T_1579)
node T_1581 = mux(T_1489, UInt<1>(0), T_1580)
node T_1582 = mux(T_1487, UInt<1>(0), T_1581)
node T_1583 = mux(T_1485, UInt<1>(0), T_1582)
node T_1584 = mux(T_1483, UInt<1>(0), T_1583)
node T_1585 = mux(T_1481, UInt<1>(0), T_1584)
node T_1586 = mux(T_1479, UInt<1>(0), T_1585)
node T_1587 = mux(T_1477, UInt<1>(0), T_1586)
node T_1588 = mux(T_1475, UInt<1>(0), T_1587)
node T_1589 = mux(T_1473, UInt<1>(0), T_1588)
node T_1590 = mux(T_1471, UInt<1>(0), T_1589)
node T_1591 = mux(T_1469, UInt<1>(0), T_1590)
node T_1592 = mux(T_1467, UInt<1>(0), T_1591)
node T_1593 = mux(T_1465, UInt<1>(0), T_1592)
node T_1594 = mux(T_1463, UInt<1>(0), T_1593)
node T_1595 = mux(T_1461, UInt<1>(0), T_1594)
node T_1596 = mux(T_1459, UInt<1>(0), T_1595)
node T_1597 = mux(T_1457, UInt<1>(0), T_1596)
node T_1598 = mux(T_1455, UInt<1>(1), T_1597)
node T_1599 = mux(T_1453, UInt<1>(1), T_1598)
node T_1600 = mux(T_1451, UInt<1>(1), T_1599)
node T_1601 = mux(T_1449, UInt<1>(1), T_1600)
node T_1602 = mux(T_1447, UInt<1>(1), T_1601)
node T_1603 = mux(T_1445, UInt<1>(1), T_1602)
node T_1604 = mux(T_1443, UInt<1>(0), T_1603)
node T_1605 = mux(T_1441, UInt<1>(1), T_1604)
node T_1606 = mux(T_1439, UInt<1>(1), T_1605)
node T_1607 = mux(T_1437, UInt<1>(1), T_1606)
node T_1608 = mux(T_1521, UInt<1>(1), UInt<1>(0))
node T_1609 = mux(T_1519, UInt<1>(1), T_1608)
node T_1610 = mux(T_1517, UInt<1>(1), T_1609)
node T_1611 = mux(T_1515, UInt<1>(0), T_1610)
node T_1612 = mux(T_1513, UInt<1>(0), T_1611)
node T_1613 = mux(T_1511, UInt<1>(0), T_1612)
node T_1614 = mux(T_1509, UInt<1>(0), T_1613)
node T_1615 = mux(T_1507, UInt<1>(0), T_1614)
node T_1616 = mux(T_1505, UInt<1>(0), T_1615)
node T_1617 = mux(T_1503, UInt<1>(0), T_1616)
node T_1618 = mux(T_1501, UInt<1>(0), T_1617)
node T_1619 = mux(T_1499, UInt<1>(0), T_1618)
node T_1620 = mux(T_1497, UInt<1>(0), T_1619)
node T_1621 = mux(T_1495, UInt<1>(0), T_1620)
node T_1622 = mux(T_1493, UInt<1>(0), T_1621)
node T_1623 = mux(T_1491, UInt<1>(0), T_1622)
node T_1624 = mux(T_1489, UInt<1>(1), T_1623)
node T_1625 = mux(T_1487, UInt<1>(1), T_1624)
node T_1626 = mux(T_1485, UInt<1>(1), T_1625)
node T_1627 = mux(T_1483, UInt<1>(1), T_1626)
node T_1628 = mux(T_1481, UInt<1>(1), T_1627)
node T_1629 = mux(T_1479, UInt<1>(1), T_1628)
node T_1630 = mux(T_1477, UInt<1>(1), T_1629)
node T_1631 = mux(T_1475, UInt<1>(1), T_1630)
node T_1632 = mux(T_1473, UInt<1>(1), T_1631)
node T_1633 = mux(T_1471, UInt<1>(1), T_1632)
node T_1634 = mux(T_1469, UInt<1>(1), T_1633)
node T_1635 = mux(T_1467, UInt<1>(1), T_1634)
node T_1636 = mux(T_1465, UInt<1>(1), T_1635)
node T_1637 = mux(T_1463, UInt<1>(1), T_1636)
node T_1638 = mux(T_1461, UInt<1>(1), T_1637)
node T_1639 = mux(T_1459, UInt<1>(1), T_1638)
node T_1640 = mux(T_1457, UInt<1>(1), T_1639)
node T_1641 = mux(T_1455, UInt<1>(1), T_1640)
node T_1642 = mux(T_1453, UInt<1>(1), T_1641)
node T_1643 = mux(T_1451, UInt<1>(1), T_1642)
node T_1644 = mux(T_1449, UInt<1>(1), T_1643)
node T_1645 = mux(T_1447, UInt<1>(1), T_1644)
node T_1646 = mux(T_1445, UInt<1>(1), T_1645)
node T_1647 = mux(T_1443, UInt<1>(1), T_1646)
node T_1648 = mux(T_1441, UInt<1>(1), T_1647)
node T_1649 = mux(T_1439, UInt<1>(1), T_1648)
node T_1650 = mux(T_1437, UInt<1>(1), T_1649)
node T_1651 = mux(T_1521, UInt<3>(5), UInt<3>(7))
node T_1652 = mux(T_1519, UInt<3>(5), T_1651)
node T_1653 = mux(T_1517, UInt<3>(5), T_1652)
node T_1654 = mux(T_1515, UInt<3>(5), T_1653)
node T_1655 = mux(T_1513, UInt<3>(5), T_1654)
node T_1656 = mux(T_1511, UInt<3>(5), T_1655)
node T_1657 = mux(T_1509, UInt<3>(7), T_1656)
node T_1658 = mux(T_1507, UInt<3>(7), T_1657)
node T_1659 = mux(T_1505, UInt<3>(7), T_1658)
node T_1660 = mux(T_1503, UInt<3>(7), T_1659)
node T_1661 = mux(T_1501, UInt<3>(7), T_1660)
node T_1662 = mux(T_1499, UInt<3>(7), T_1661)
node T_1663 = mux(T_1497, UInt<3>(7), T_1662)
node T_1664 = mux(T_1495, UInt<3>(7), T_1663)
node T_1665 = mux(T_1493, UInt<3>(7), T_1664)
node T_1666 = mux(T_1491, UInt<3>(7), T_1665)
node T_1667 = mux(T_1489, UInt<3>(0), T_1666)
node T_1668 = mux(T_1487, UInt<3>(0), T_1667)
node T_1669 = mux(T_1485, UInt<3>(0), T_1668)
node T_1670 = mux(T_1483, UInt<3>(0), T_1669)
node T_1671 = mux(T_1481, UInt<3>(0), T_1670)
node T_1672 = mux(T_1479, UInt<3>(0), T_1671)
node T_1673 = mux(T_1477, UInt<3>(0), T_1672)
node T_1674 = mux(T_1475, UInt<3>(0), T_1673)
node T_1675 = mux(T_1473, UInt<3>(0), T_1674)
node T_1676 = mux(T_1471, UInt<3>(1), T_1675)
node T_1677 = mux(T_1469, UInt<3>(1), T_1676)
node T_1678 = mux(T_1467, UInt<3>(1), T_1677)
node T_1679 = mux(T_1465, UInt<3>(0), T_1678)
node T_1680 = mux(T_1463, UInt<3>(0), T_1679)
node T_1681 = mux(T_1461, UInt<3>(0), T_1680)
node T_1682 = mux(T_1459, UInt<3>(0), T_1681)
node T_1683 = mux(T_1457, UInt<3>(0), T_1682)
node T_1684 = mux(T_1455, UInt<3>(4), T_1683)
node T_1685 = mux(T_1453, UInt<3>(4), T_1684)
node T_1686 = mux(T_1451, UInt<3>(4), T_1685)
node T_1687 = mux(T_1449, UInt<3>(4), T_1686)
node T_1688 = mux(T_1447, UInt<3>(4), T_1687)
node T_1689 = mux(T_1445, UInt<3>(4), T_1688)
node T_1690 = mux(T_1443, UInt<3>(0), T_1689)
node T_1691 = mux(T_1441, UInt<3>(3), T_1690)
node T_1692 = mux(T_1439, UInt<3>(2), T_1691)
node T_1693 = mux(T_1437, UInt<3>(2), T_1692)
node T_1694 = mux(T_1521, UInt<4>(11), UInt<4>(15))
node T_1695 = mux(T_1519, UInt<4>(11), T_1694)
node T_1696 = mux(T_1517, UInt<4>(11), T_1695)
node T_1697 = mux(T_1515, UInt<4>(10), T_1696)
node T_1698 = mux(T_1513, UInt<4>(10), T_1697)
node T_1699 = mux(T_1511, UInt<4>(10), T_1698)
node T_1700 = mux(T_1509, UInt<4>(2), T_1699)
node T_1701 = mux(T_1507, UInt<4>(3), T_1700)
node T_1702 = mux(T_1505, UInt<4>(9), T_1701)
node T_1703 = mux(T_1503, UInt<4>(8), T_1702)
node T_1704 = mux(T_1501, UInt<4>(4), T_1703)
node T_1705 = mux(T_1499, UInt<4>(7), T_1704)
node T_1706 = mux(T_1497, UInt<4>(5), T_1705)
node T_1707 = mux(T_1495, UInt<4>(6), T_1706)
node T_1708 = mux(T_1493, UInt<4>(1), T_1707)
node T_1709 = mux(T_1491, UInt<4>(0), T_1708)
node T_1710 = mux(T_1489, UInt<4>(9), T_1709)
node T_1711 = mux(T_1487, UInt<4>(8), T_1710)
node T_1712 = mux(T_1485, UInt<4>(6), T_1711)
node T_1713 = mux(T_1483, UInt<4>(2), T_1712)
node T_1714 = mux(T_1481, UInt<4>(3), T_1713)
node T_1715 = mux(T_1479, UInt<4>(4), T_1714)
node T_1716 = mux(T_1477, UInt<4>(7), T_1715)
node T_1717 = mux(T_1475, UInt<4>(5), T_1716)
node T_1718 = mux(T_1473, UInt<4>(0), T_1717)
node T_1719 = mux(T_1471, UInt<4>(0), T_1718)
node T_1720 = mux(T_1469, UInt<4>(0), T_1719)
node T_1721 = mux(T_1467, UInt<4>(0), T_1720)
node T_1722 = mux(T_1465, UInt<4>(0), T_1721)
node T_1723 = mux(T_1463, UInt<4>(0), T_1722)
node T_1724 = mux(T_1461, UInt<4>(0), T_1723)
node T_1725 = mux(T_1459, UInt<4>(0), T_1724)
node T_1726 = mux(T_1457, UInt<4>(0), T_1725)
node T_1727 = mux(T_1455, UInt<4>(0), T_1726)
node T_1728 = mux(T_1453, UInt<4>(0), T_1727)
node T_1729 = mux(T_1451, UInt<4>(0), T_1728)
node T_1730 = mux(T_1449, UInt<4>(0), T_1729)
node T_1731 = mux(T_1447, UInt<4>(0), T_1730)
node T_1732 = mux(T_1445, UInt<4>(0), T_1731)
node T_1733 = mux(T_1443, UInt<4>(0), T_1732)
node T_1734 = mux(T_1441, UInt<4>(0), T_1733)
node T_1735 = mux(T_1439, UInt<4>(0), T_1734)
node T_1736 = mux(T_1437, UInt<4>(11), T_1735)
node T_1737 = mux(T_1521, UInt<3>(7), UInt<3>(7))
node T_1738 = mux(T_1519, UInt<3>(7), T_1737)
node T_1739 = mux(T_1517, UInt<3>(7), T_1738)
node T_1740 = mux(T_1515, UInt<3>(7), T_1739)
node T_1741 = mux(T_1513, UInt<3>(7), T_1740)
node T_1742 = mux(T_1511, UInt<3>(7), T_1741)
node T_1743 = mux(T_1509, UInt<3>(7), T_1742)
node T_1744 = mux(T_1507, UInt<3>(7), T_1743)
node T_1745 = mux(T_1505, UInt<3>(7), T_1744)
node T_1746 = mux(T_1503, UInt<3>(7), T_1745)
node T_1747 = mux(T_1501, UInt<3>(7), T_1746)
node T_1748 = mux(T_1499, UInt<3>(7), T_1747)
node T_1749 = mux(T_1497, UInt<3>(7), T_1748)
node T_1750 = mux(T_1495, UInt<3>(7), T_1749)
node T_1751 = mux(T_1493, UInt<3>(7), T_1750)
node T_1752 = mux(T_1491, UInt<3>(7), T_1751)
node T_1753 = mux(T_1489, UInt<3>(7), T_1752)
node T_1754 = mux(T_1487, UInt<3>(7), T_1753)
node T_1755 = mux(T_1485, UInt<3>(7), T_1754)
node T_1756 = mux(T_1483, UInt<3>(7), T_1755)
node T_1757 = mux(T_1481, UInt<3>(7), T_1756)
node T_1758 = mux(T_1479, UInt<3>(7), T_1757)
node T_1759 = mux(T_1477, UInt<3>(7), T_1758)
node T_1760 = mux(T_1475, UInt<3>(7), T_1759)
node T_1761 = mux(T_1473, UInt<3>(7), T_1760)
node T_1762 = mux(T_1471, UInt<3>(7), T_1761)
node T_1763 = mux(T_1469, UInt<3>(7), T_1762)
node T_1764 = mux(T_1467, UInt<3>(7), T_1763)
node T_1765 = mux(T_1465, UInt<3>(7), T_1764)
node T_1766 = mux(T_1463, UInt<3>(7), T_1765)
node T_1767 = mux(T_1461, UInt<3>(7), T_1766)
node T_1768 = mux(T_1459, UInt<3>(7), T_1767)
node T_1769 = mux(T_1457, UInt<3>(7), T_1768)
node T_1770 = mux(T_1455, UInt<3>(4), T_1769)
node T_1771 = mux(T_1453, UInt<3>(0), T_1770)
node T_1772 = mux(T_1451, UInt<3>(5), T_1771)
node T_1773 = mux(T_1449, UInt<3>(1), T_1772)
node T_1774 = mux(T_1447, UInt<3>(6), T_1773)
node T_1775 = mux(T_1445, UInt<3>(2), T_1774)
node T_1776 = mux(T_1443, UInt<3>(7), T_1775)
node T_1777 = mux(T_1441, UInt<3>(7), T_1776)
node T_1778 = mux(T_1439, UInt<3>(7), T_1777)
node T_1779 = mux(T_1437, UInt<3>(7), T_1778)
node T_1780 = mux(T_1521, UInt<1>(0), UInt<1>(0))
node T_1781 = mux(T_1519, UInt<1>(0), T_1780)
node T_1782 = mux(T_1517, UInt<1>(0), T_1781)
node T_1783 = mux(T_1515, UInt<1>(0), T_1782)
node T_1784 = mux(T_1513, UInt<1>(0), T_1783)
node T_1785 = mux(T_1511, UInt<1>(0), T_1784)
node T_1786 = mux(T_1509, UInt<1>(0), T_1785)
node T_1787 = mux(T_1507, UInt<1>(0), T_1786)
node T_1788 = mux(T_1505, UInt<1>(0), T_1787)
node T_1789 = mux(T_1503, UInt<1>(0), T_1788)
node T_1790 = mux(T_1501, UInt<1>(0), T_1789)
node T_1791 = mux(T_1499, UInt<1>(0), T_1790)
node T_1792 = mux(T_1497, UInt<1>(0), T_1791)
node T_1793 = mux(T_1495, UInt<1>(0), T_1792)
node T_1794 = mux(T_1493, UInt<1>(0), T_1793)
node T_1795 = mux(T_1491, UInt<1>(0), T_1794)
node T_1796 = mux(T_1489, UInt<1>(0), T_1795)
node T_1797 = mux(T_1487, UInt<1>(0), T_1796)
node T_1798 = mux(T_1485, UInt<1>(0), T_1797)
node T_1799 = mux(T_1483, UInt<1>(0), T_1798)
node T_1800 = mux(T_1481, UInt<1>(0), T_1799)
node T_1801 = mux(T_1479, UInt<1>(0), T_1800)
node T_1802 = mux(T_1477, UInt<1>(0), T_1801)
node T_1803 = mux(T_1475, UInt<1>(0), T_1802)
node T_1804 = mux(T_1473, UInt<1>(0), T_1803)
node T_1805 = mux(T_1471, UInt<1>(0), T_1804)
node T_1806 = mux(T_1469, UInt<1>(0), T_1805)
node T_1807 = mux(T_1467, UInt<1>(0), T_1806)
node T_1808 = mux(T_1465, UInt<1>(0), T_1807)
node T_1809 = mux(T_1463, UInt<1>(0), T_1808)
node T_1810 = mux(T_1461, UInt<1>(0), T_1809)
node T_1811 = mux(T_1459, UInt<1>(0), T_1810)
node T_1812 = mux(T_1457, UInt<1>(0), T_1811)
node T_1813 = mux(T_1455, UInt<1>(0), T_1812)
node T_1814 = mux(T_1453, UInt<1>(0), T_1813)
node T_1815 = mux(T_1451, UInt<1>(0), T_1814)
node T_1816 = mux(T_1449, UInt<1>(0), T_1815)
node T_1817 = mux(T_1447, UInt<1>(0), T_1816)
node T_1818 = mux(T_1445, UInt<1>(0), T_1817)
node T_1819 = mux(T_1443, UInt<1>(1), T_1818)
node T_1820 = mux(T_1441, UInt<1>(1), T_1819)
node T_1821 = mux(T_1439, UInt<1>(0), T_1820)
node T_1822 = mux(T_1437, UInt<1>(0), T_1821)
node T_1823 = mux(T_1521, UInt<2>(3), UInt<2>(3))
node T_1824 = mux(T_1519, UInt<2>(3), T_1823)
node T_1825 = mux(T_1517, UInt<2>(3), T_1824)
node T_1826 = mux(T_1515, UInt<2>(3), T_1825)
node T_1827 = mux(T_1513, UInt<2>(3), T_1826)
node T_1828 = mux(T_1511, UInt<2>(3), T_1827)
node T_1829 = mux(T_1509, UInt<2>(3), T_1828)
node T_1830 = mux(T_1507, UInt<2>(3), T_1829)
node T_1831 = mux(T_1505, UInt<2>(3), T_1830)
node T_1832 = mux(T_1503, UInt<2>(3), T_1831)
node T_1833 = mux(T_1501, UInt<2>(3), T_1832)
node T_1834 = mux(T_1499, UInt<2>(3), T_1833)
node T_1835 = mux(T_1497, UInt<2>(3), T_1834)
node T_1836 = mux(T_1495, UInt<2>(3), T_1835)
node T_1837 = mux(T_1493, UInt<2>(3), T_1836)
node T_1838 = mux(T_1491, UInt<2>(3), T_1837)
node T_1839 = mux(T_1489, UInt<2>(3), T_1838)
node T_1840 = mux(T_1487, UInt<2>(3), T_1839)
node T_1841 = mux(T_1485, UInt<2>(3), T_1840)
node T_1842 = mux(T_1483, UInt<2>(3), T_1841)
node T_1843 = mux(T_1481, UInt<2>(3), T_1842)
node T_1844 = mux(T_1479, UInt<2>(3), T_1843)
node T_1845 = mux(T_1477, UInt<2>(3), T_1844)
node T_1846 = mux(T_1475, UInt<2>(3), T_1845)
node T_1847 = mux(T_1473, UInt<2>(3), T_1846)
node T_1848 = mux(T_1471, UInt<2>(0), T_1847)
node T_1849 = mux(T_1469, UInt<2>(1), T_1848)
node T_1850 = mux(T_1467, UInt<2>(2), T_1849)
node T_1851 = mux(T_1465, UInt<2>(3), T_1850)
node T_1852 = mux(T_1463, UInt<2>(3), T_1851)
node T_1853 = mux(T_1461, UInt<2>(3), T_1852)
node T_1854 = mux(T_1459, UInt<2>(3), T_1853)
node T_1855 = mux(T_1457, UInt<2>(3), T_1854)
node T_1856 = mux(T_1455, UInt<2>(3), T_1855)
node T_1857 = mux(T_1453, UInt<2>(3), T_1856)
node T_1858 = mux(T_1451, UInt<2>(3), T_1857)
node T_1859 = mux(T_1449, UInt<2>(3), T_1858)
node T_1860 = mux(T_1447, UInt<2>(3), T_1859)
node T_1861 = mux(T_1445, UInt<2>(3), T_1860)
node T_1862 = mux(T_1443, UInt<2>(3), T_1861)
node T_1863 = mux(T_1441, UInt<2>(3), T_1862)
node T_1864 = mux(T_1439, UInt<2>(3), T_1863)
node T_1865 = mux(T_1437, UInt<2>(3), T_1864)
node T_1866 = mux(T_1521, UInt<3>(7), UInt<3>(7))
node T_1867 = mux(T_1519, UInt<3>(7), T_1866)
node T_1868 = mux(T_1517, UInt<3>(7), T_1867)
node T_1869 = mux(T_1515, UInt<3>(7), T_1868)
node T_1870 = mux(T_1513, UInt<3>(7), T_1869)
node T_1871 = mux(T_1511, UInt<3>(7), T_1870)
node T_1872 = mux(T_1509, UInt<3>(7), T_1871)
node T_1873 = mux(T_1507, UInt<3>(7), T_1872)
node T_1874 = mux(T_1505, UInt<3>(7), T_1873)
node T_1875 = mux(T_1503, UInt<3>(7), T_1874)
node T_1876 = mux(T_1501, UInt<3>(7), T_1875)
node T_1877 = mux(T_1499, UInt<3>(7), T_1876)
node T_1878 = mux(T_1497, UInt<3>(7), T_1877)
node T_1879 = mux(T_1495, UInt<3>(7), T_1878)
node T_1880 = mux(T_1493, UInt<3>(7), T_1879)
node T_1881 = mux(T_1491, UInt<3>(7), T_1880)
node T_1882 = mux(T_1489, UInt<3>(7), T_1881)
node T_1883 = mux(T_1487, UInt<3>(7), T_1882)
node T_1884 = mux(T_1485, UInt<3>(7), T_1883)
node T_1885 = mux(T_1483, UInt<3>(7), T_1884)
node T_1886 = mux(T_1481, UInt<3>(7), T_1885)
node T_1887 = mux(T_1479, UInt<3>(7), T_1886)
node T_1888 = mux(T_1477, UInt<3>(7), T_1887)
node T_1889 = mux(T_1475, UInt<3>(7), T_1888)
node T_1890 = mux(T_1473, UInt<3>(7), T_1889)
node T_1891 = mux(T_1471, UInt<3>(7), T_1890)
node T_1892 = mux(T_1469, UInt<3>(7), T_1891)
node T_1893 = mux(T_1467, UInt<3>(7), T_1892)
node T_1894 = mux(T_1465, UInt<3>(3), T_1893)
node T_1895 = mux(T_1463, UInt<3>(4), T_1894)
node T_1896 = mux(T_1461, UInt<3>(0), T_1895)
node T_1897 = mux(T_1459, UInt<3>(1), T_1896)
node T_1898 = mux(T_1457, UInt<3>(2), T_1897)
node T_1899 = mux(T_1455, UInt<3>(7), T_1898)
node T_1900 = mux(T_1453, UInt<3>(7), T_1899)
node T_1901 = mux(T_1451, UInt<3>(7), T_1900)
node T_1902 = mux(T_1449, UInt<3>(7), T_1901)
node T_1903 = mux(T_1447, UInt<3>(7), T_1902)
node T_1904 = mux(T_1445, UInt<3>(7), T_1903)
node T_1905 = mux(T_1443, UInt<3>(7), T_1904)
node T_1906 = mux(T_1441, UInt<3>(7), T_1905)
node T_1907 = mux(T_1439, UInt<3>(7), T_1906)
node T_1908 = mux(T_1437, UInt<3>(7), T_1907)
node T_1909 = mux(T_1521, UInt<2>(3), UInt<2>(0))
node T_1910 = mux(T_1519, UInt<2>(3), T_1909)
node T_1911 = mux(T_1517, UInt<2>(3), T_1910)
node T_1912 = mux(T_1515, UInt<2>(3), T_1911)
node T_1913 = mux(T_1513, UInt<2>(3), T_1912)
node T_1914 = mux(T_1511, UInt<2>(3), T_1913)
node T_1915 = mux(T_1509, UInt<2>(0), T_1914)
node T_1916 = mux(T_1507, UInt<2>(0), T_1915)
node T_1917 = mux(T_1505, UInt<2>(0), T_1916)
node T_1918 = mux(T_1503, UInt<2>(0), T_1917)
node T_1919 = mux(T_1501, UInt<2>(0), T_1918)
node T_1920 = mux(T_1499, UInt<2>(0), T_1919)
node T_1921 = mux(T_1497, UInt<2>(0), T_1920)
node T_1922 = mux(T_1495, UInt<2>(0), T_1921)
node T_1923 = mux(T_1493, UInt<2>(0), T_1922)
node T_1924 = mux(T_1491, UInt<2>(0), T_1923)
node T_1925 = mux(T_1489, UInt<2>(0), T_1924)
node T_1926 = mux(T_1487, UInt<2>(0), T_1925)
node T_1927 = mux(T_1485, UInt<2>(0), T_1926)
node T_1928 = mux(T_1483, UInt<2>(0), T_1927)
node T_1929 = mux(T_1481, UInt<2>(0), T_1928)
node T_1930 = mux(T_1479, UInt<2>(0), T_1929)
node T_1931 = mux(T_1477, UInt<2>(0), T_1930)
node T_1932 = mux(T_1475, UInt<2>(0), T_1931)
node T_1933 = mux(T_1473, UInt<2>(0), T_1932)
node T_1934 = mux(T_1471, UInt<2>(0), T_1933)
node T_1935 = mux(T_1469, UInt<2>(0), T_1934)
node T_1936 = mux(T_1467, UInt<2>(0), T_1935)
node T_1937 = mux(T_1465, UInt<2>(1), T_1936)
node T_1938 = mux(T_1463, UInt<2>(1), T_1937)
node T_1939 = mux(T_1461, UInt<2>(1), T_1938)
node T_1940 = mux(T_1459, UInt<2>(1), T_1939)
node T_1941 = mux(T_1457, UInt<2>(1), T_1940)
node T_1942 = mux(T_1455, UInt<2>(0), T_1941)
node T_1943 = mux(T_1453, UInt<2>(0), T_1942)
node T_1944 = mux(T_1451, UInt<2>(0), T_1943)
node T_1945 = mux(T_1449, UInt<2>(0), T_1944)
node T_1946 = mux(T_1447, UInt<2>(0), T_1945)
node T_1947 = mux(T_1445, UInt<2>(0), T_1946)
node T_1948 = mux(T_1443, UInt<2>(2), T_1947)
node T_1949 = mux(T_1441, UInt<2>(2), T_1948)
node T_1950 = mux(T_1439, UInt<2>(0), T_1949)
node T_1951 = mux(T_1437, UInt<2>(0), T_1950)
node T_1952 = mux(T_1521, UInt<1>(0), UInt<1>(0))
node T_1953 = mux(T_1519, UInt<1>(0), T_1952)
node T_1954 = mux(T_1517, UInt<1>(0), T_1953)
node T_1955 = mux(T_1515, UInt<1>(0), T_1954)
node T_1956 = mux(T_1513, UInt<1>(0), T_1955)
node T_1957 = mux(T_1511, UInt<1>(0), T_1956)
node T_1958 = mux(T_1509, UInt<1>(1), T_1957)
node T_1959 = mux(T_1507, UInt<1>(1), T_1958)
node T_1960 = mux(T_1505, UInt<1>(1), T_1959)
node T_1961 = mux(T_1503, UInt<1>(1), T_1960)
node T_1962 = mux(T_1501, UInt<1>(1), T_1961)
node T_1963 = mux(T_1499, UInt<1>(1), T_1962)
node T_1964 = mux(T_1497, UInt<1>(1), T_1963)
node T_1965 = mux(T_1495, UInt<1>(1), T_1964)
node T_1966 = mux(T_1493, UInt<1>(1), T_1965)
node T_1967 = mux(T_1491, UInt<1>(1), T_1966)
node T_1968 = mux(T_1489, UInt<1>(1), T_1967)
node T_1969 = mux(T_1487, UInt<1>(1), T_1968)
node T_1970 = mux(T_1485, UInt<1>(1), T_1969)
node T_1971 = mux(T_1483, UInt<1>(1), T_1970)
node T_1972 = mux(T_1481, UInt<1>(1), T_1971)
node T_1973 = mux(T_1479, UInt<1>(1), T_1972)
node T_1974 = mux(T_1477, UInt<1>(1), T_1973)
node T_1975 = mux(T_1475, UInt<1>(1), T_1974)
node T_1976 = mux(T_1473, UInt<1>(1), T_1975)
node T_1977 = mux(T_1471, UInt<1>(0), T_1976)
node T_1978 = mux(T_1469, UInt<1>(0), T_1977)
node T_1979 = mux(T_1467, UInt<1>(0), T_1978)
node T_1980 = mux(T_1465, UInt<1>(1), T_1979)
node T_1981 = mux(T_1463, UInt<1>(1), T_1980)
node T_1982 = mux(T_1461, UInt<1>(1), T_1981)
node T_1983 = mux(T_1459, UInt<1>(1), T_1982)
node T_1984 = mux(T_1457, UInt<1>(1), T_1983)
node T_1985 = mux(T_1455, UInt<1>(0), T_1984)
node T_1986 = mux(T_1453, UInt<1>(0), T_1985)
node T_1987 = mux(T_1451, UInt<1>(0), T_1986)
node T_1988 = mux(T_1449, UInt<1>(0), T_1987)
node T_1989 = mux(T_1447, UInt<1>(0), T_1988)
node T_1990 = mux(T_1445, UInt<1>(0), T_1989)
node T_1991 = mux(T_1443, UInt<1>(1), T_1990)
node T_1992 = mux(T_1441, UInt<1>(1), T_1991)
node T_1993 = mux(T_1439, UInt<1>(1), T_1992)
node T_1994 = mux(T_1437, UInt<1>(1), T_1993)
node T_1995 = mux(T_1521, UInt<2>(3), UInt<2>(0))
node T_1996 = mux(T_1519, UInt<2>(2), T_1995)
node T_1997 = mux(T_1517, UInt<2>(1), T_1996)
node T_1998 = mux(T_1515, UInt<2>(3), T_1997)
node T_1999 = mux(T_1513, UInt<2>(2), T_1998)
node T_2000 = mux(T_1511, UInt<2>(1), T_1999)
node T_2001 = mux(T_1509, UInt<2>(0), T_2000)
node T_2002 = mux(T_1507, UInt<2>(0), T_2001)
node T_2003 = mux(T_1505, UInt<2>(0), T_2002)
node T_2004 = mux(T_1503, UInt<2>(0), T_2003)
node T_2005 = mux(T_1501, UInt<2>(0), T_2004)
node T_2006 = mux(T_1499, UInt<2>(0), T_2005)
node T_2007 = mux(T_1497, UInt<2>(0), T_2006)
node T_2008 = mux(T_1495, UInt<2>(0), T_2007)
node T_2009 = mux(T_1493, UInt<2>(0), T_2008)
node T_2010 = mux(T_1491, UInt<2>(0), T_2009)
node T_2011 = mux(T_1489, UInt<2>(0), T_2010)
node T_2012 = mux(T_1487, UInt<2>(0), T_2011)
node T_2013 = mux(T_1485, UInt<2>(0), T_2012)
node T_2014 = mux(T_1483, UInt<2>(0), T_2013)
node T_2015 = mux(T_1481, UInt<2>(0), T_2014)
node T_2016 = mux(T_1479, UInt<2>(0), T_2015)
node T_2017 = mux(T_1477, UInt<2>(0), T_2016)
node T_2018 = mux(T_1475, UInt<2>(0), T_2017)
node T_2019 = mux(T_1473, UInt<2>(0), T_2018)
node T_2020 = mux(T_1471, UInt<2>(0), T_2019)
node T_2021 = mux(T_1469, UInt<2>(0), T_2020)
node T_2022 = mux(T_1467, UInt<2>(0), T_2021)
node T_2023 = mux(T_1465, UInt<2>(0), T_2022)
node T_2024 = mux(T_1463, UInt<2>(0), T_2023)
node T_2025 = mux(T_1461, UInt<2>(0), T_2024)
node T_2026 = mux(T_1459, UInt<2>(0), T_2025)
node T_2027 = mux(T_1457, UInt<2>(0), T_2026)
node T_2028 = mux(T_1455, UInt<2>(0), T_2027)
node T_2029 = mux(T_1453, UInt<2>(0), T_2028)
node T_2030 = mux(T_1451, UInt<2>(0), T_2029)
node T_2031 = mux(T_1449, UInt<2>(0), T_2030)
node T_2032 = mux(T_1447, UInt<2>(0), T_2031)
node T_2033 = mux(T_1445, UInt<2>(0), T_2032)
node T_2034 = mux(T_1443, UInt<2>(0), T_2033)
node T_2035 = mux(T_1441, UInt<2>(0), T_2034)
node T_2036 = mux(T_1439, UInt<2>(0), T_2035)
node T_2037 = mux(T_1437, UInt<2>(0), T_2036)
node rs1_addr = bits(ctrl.inst, 19, 15)
node rs2_addr = bits(ctrl.inst, 24, 20)
reg st_type : UInt<2>
reg ld_type : UInt<3>
reg wb_sel : UInt<2>
node T_2038 = bit(T_1994, 0)
reg wb_en : UInt<1>
reg csr_cmd : UInt<2>
ctrl.pc_sel := T_1564
node T_2039 = bit-not(ctrl.stall)
node T_2040 = bit-not(ctrl.data_re)
node T_2041 = bit-and(T_2039, T_2040)
ctrl.inst_re := T_2041
node T_2042 = neq(T_1908, UInt<3>(7))
node T_2043 = bit(T_1822, 0)
node T_2044 = bit-or(T_2042, T_2043)
node T_2045 = mux(T_2044, UInt<1>(1), UInt<1>(0))
ctrl.inst_type := T_2045
ctrl.A_sel := T_1607
ctrl.B_sel := T_1650
ctrl.imm_sel := T_1693
ctrl.alu_op := T_1736
ctrl.br_type := T_1779
ctrl.st_type := T_1865
node T_2046 = bit-not(ctrl.stall)
when T_2046 :
st_type := ctrl.st_type
ld_type := T_1908
wb_sel := T_1951
node T_2047 = bit(T_1994, 0)
wb_en := T_2047
csr_cmd := T_2037
node T_2048 = neq(ctrl.ld_type, UInt<3>(7))
node T_2049 = neq(T_1908, UInt<3>(7))
node T_2050 = mux(ctrl.stall, T_2048, T_2049)
ctrl.data_re := T_2050
ctrl.ld_type := ld_type
ctrl.wb_en := wb_en
ctrl.wb_sel := wb_sel
ctrl.csr_cmd := csr_cmd
module Core :
output host : {status : UInt<32>, flip hid : UInt<1>, tohost : UInt<32>}
output icache : {re : UInt<1>, addr : UInt<32>, flip dout : UInt<32>, we : UInt<4>, din : UInt<32>}
output dcache : {re : UInt<1>, addr : UInt<32>, flip dout : UInt<32>, we : UInt<4>, din : UInt<32>}
input stall : UInt<1>
inst dpath of Datapath
inst ctrl of Control
host := dpath.host
icache := dpath.icache
dcache := dpath.dcache
dpath.ctrl := ctrl.ctrl
dpath.stall := stall
|