Added CSR TID/WID reads

This commit is contained in:
felsabbagh3 2019-10-21 02:10:05 -04:00
parent 405926f66f
commit 84f5ccb484
25 changed files with 2339 additions and 2241 deletions

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,405 +1,404 @@
:0200000480007A
:1000000013058000731005021305400073101502DC
:10001000731040F17310103037F1FF7FEF10900B29
:1000200073000000938B0600130D0700130F0100EF
:100030009303050013051000635C75001301018034
:10004000130305006B500300130515006FF0DFFE6E
:100050001300000013000000130000001300000054
:10006000130000001300000013010F00130500002F
:10007000930F0600938D030013000000130000008F
:100080001300000013000000130000001300000024
:100090001300000013000000EBE0BF01130000009C
:1000A0001300000013000000130000001300000004
:1000B00013000000170500001305451B6B400500E9
:1000C00017030000130343F66B0003006780000072
:1000D000170200011302022423200200232212002F
:1000E000232422002326320023284200232A520000
:1000F000232C6200232E72002320820223229202EC
:100100002324A2022326B2022328C202232AD202D7
:10011000232CE202232EF2022320020523221205C1
:10012000232422052326320523284205232A5205AB
:10013000232C6205232E7205232082072322920797
:100140002324A2072326B2072328C207232AD20783
:10015000232CE207232EF207130210006780000011
:10016000170200011302021B032002008320420039
:10017000032182008321C200032202018322420163
:10018000032382018323C201032402028324420247
:10019000032582028325C20203260203832642032B
:1001A000032782038327C20303280204832842040F
:1001B000032982048329C204032A0205832A4205F3
:1001C000032B8205832BC205032C0206832C4206D7
:1001D000032D8206832DC206032E0207832E4207BB
:1001E000032F8207832FC2071302000067800000DD
:1001F00073250002678000007325100267800000ED
:10020000130101FE232E1100232C8100130401028F
:10021000232604FE6F0040030327C4FEB717000027
:10022000938747973307F702B70700819387074102
:10023000B307F70013850700EF0000448327C4FECF
:10024000938717002326F4FE0327C4FE9307F001CB
:10025000E3D4E7FC130000008320C10103248101E3
:100260001301010267800000130101FD2326110222
:10027000232481022322A10313040103130000009D
:1002800013070D00B7170000938747973307F7024E
:10029000B707008193870741B307F700138507006D
:1002A000EF00405093070500638A070213070D0013
:1002B000B70700811317270093878726B307F70036
:1002C0001307100023A0E70093070D0063960700B3
:1002D000EFF01FE96F00C0057300000013070D0069
:1002E000B7170000938747973307F702B7070081D6
:1002F00093870741B307F700130784FD93050700B1
:1003000013850700EF000040832704FE13810700D8
:100310008327C4FD832584FD032644FE832684FEB3
:100320000327C4FE13850700EFF0DFCF7300000042
:100330008320C10203248102032D41021301010322
:1003400067800000130101FB23261104232481048C
:1003500013040105EFF0DFE92324A4FE9309010053
:10036000930710002326F4FE6F00C0080327C4FE85
:10037000B7170000938747973307F702B707008145
:1003800093870741B307F70013850700EF0080410B
:1003900093070500639A07040327C4FEB7170000FC
:1003A000938747973307F702B70700819387074181
:1003B000B307F700130704FD930507001385070033
:1003C000EF004034832784FD13810700832744FD19
:1003D000832504FD0326C4FD832604FE032744FE73
:1003E00013850700EFF0DFCD8327C4FE9387170046
:1003F0002326F4FE8327C4FE032784FEE3E8E7F602
:1004000013810900EFF0DFCC930702006388070433
:10041000B707008113850741EF00C0389307050037
:10042000639E0702930784FB93850700B70700814B
:1004300013850741EF00002D832704FC138107007B
:100440008327C4FB832584FB032644FC832684FC8A
:100450000327C4FC13850700EFF0DFBC1300000086
:100460008320C10403248104130101056780000077
:10047000130101FB23261104232481041304010525
:10048000232EA4FA232CB4FA232AC4FA2328D4FA5C
:10049000EFF01FD7EFF0DFD52322A4FE13090100F0
:1004A000232604FE232404FE6F000009B709FFFF82
:1004B00033013101832784FE2326F4FC832784FB48
:1004C0002328F4FC93070100232AF4FC832744FB30
:1004D000232CF4FC832704FB232EF4FC8327C4FE87
:1004E0002320F4FE0327C4FEB71700009387479725
:1004F0003307F702B707008193870741B307F70077
:100500001307C4FC9305070013850700EF000019CB
:100510008327C4FE938717002326F4FE8327C4FE97
:10052000032744FE63E4E700232604FE832784FEBA
:10053000938717002324F4FE032784FE8327C4FB3C
:10054000E366F7F613010900EFF0DFDF13000000A8
:100550008320C10403248104130101056780000086
:10056000130101FD23261102232481021304010338
:10057000232EA4FC8325C4FDB7070081138507043F
:10058000EF004035EFF0DFC62320A4FE232604FE53
:100590006F008006930710002326F4FE232404FE38
:1005A0006F00C003B7070081032784FE13172700DD
:1005B00093878726B307F70003A707009307100068
:1005C0006318F7008327C4FE938717002326F4FEE1
:1005D000832784FE938717002324F4FE032784FED9
:1005E0009307F001E3D0E7FC8325C4FEB707008141
:1005F0001385C704EF00002E0327C4FE8327C4FD24
:10060000E36AF7F8232204FE6F008002B707008137
:10061000032744FE1317270093878726B307F700A5
:1006200023A00700832744FE938717002322F4FEAC
:10063000832744FE032704FEE3EAE7FC13000000DF
:100640008320C1020324810213010103678000009B
:10065000130101FF232681002324710113040101EA
:1006600093870B00138507000324C100832B8100AF
:1006700013010101678000009302050013030000CD
:100680009303700023A0620023A2620023A46200EF
:1006900023A6720023A86200678000009302050071
:1006A00003A382001303130023A4620013834201F7
:1006B00083AE420093935E003303730003AE0500E4
:1006C0002320C30103AE45002322C30103AE8500EE
:1006D0002324C30103AEC5002326C30103AE0501D5
:1006E0002328C30103AE4501232AC301938E1E00B4
:1006F000130F20036394EE01930E000023A2D20196
:10070000678000009302050003A38200130000002D
:10071000130000001300000013000000130000008D
:10072000130000001303F3FF23A4620013834201AC
:1007300083AE0200930F2003138F0E00130F1F00D0
:100740006314FF01130F000023A0E20193935E00E6
:1007500033037300032E030023A0C501032E4300BF
:1007600023A2C501032E830023A4C501032EC300C9
:1007700023A6C501032E030123A8C501032E4301AF
:1007800023AAC501678000009302050003A382002D
:1007900013050000130E200363146E0013051500EB
:1007A000678000009302050003A382001305000088
:1007B000130E000063146E0013051500678000001F
:1007C0009302050003A3C20083A3020133B56300B3
:1007D00067800000130141FF232011002322B10094
:1007E0008345050063880500EF00C001130515006F
:1007F0006FF01FFF83200100832541001301C1001A
:1008000067800000B708010023A0B80067800000DF
:10081000130101FD23261102232481021304010385
:10082000232EA4FC0327C4FD9307F00063E4E70232
:10083000B70700810327C4FD131727009387871A82
:10084000B307F70083A7070013850700EFF09FF8B1
:100850006F004007930700022326F4FEA30504FE61
:100860008327C4FE9387C7FF0327C4FDB357F70050
:1008700093F7F7002322F4FE832744FE63860700E4
:1008800093071000A305F4FE8347B4FE63820702BA
:10089000B7070081032744FE131727009387871AA1
:1008A000B307F70083A7070013850700EFF09FF257
:1008B0008327C4FE9387C7FF2326F4FE8327C4FE45
:1008C000E340F0FA8320C1020324810213010103F3
:1008D00067800000130101FE232E1100232C8100EC
:1008E000130401022326A4FE2324B4FE0325C4FE20
:1008F000EFF05FEE032584FEEFF09FF1B707008174
:1009000013854709EFF01FED130000008320C1019C
:10091000032481011301010267800000130101FD1E
:10092000232611022324810213040103232EA4FC95
:10093000232CB4FC232AC4FC2328D4FCB7670281EF
:100940000327C4FD23ACE71AB76702819387871B8F
:10095000032784FD23A2E700B76702819387871BE3
:10096000032744FD23A4E700B76702819387871B11
:10097000032704FD23A6E700EFF01F882324A4FE2D
:10098000032704FD832784FEB357F7022326F4FED2
:10099000032704FD832784FEB377F70263880700EB
:1009A0008327C4FE938717002326F4FEB7670281CE
:1009B0009387871B0327C4FE23A8E700032704FDB2
:1009C000832784FE6362F702B76702819386871BE1
:1009D000B7170080138607A4832584FE032504FD32
:1009E000EFF01FA96F000002B76702819386871B93
:1009F000B7170080138607A4832504FD032504FD93
:100A0000EFF01FA7EFF0CFFE2322A4FE032704FD83
:100A1000832744FE63F8E700032544FEEFF05FB44C
:100A20006F00C000032504FDEFF09FB3130000002A
:100A30008320C102032481021301010367800000A7
:100A4000130101FA232E1104232C8104130401063F
:100A50002326A4FA2324B4FAEFF09FBF232CA4FC8E
:100A6000832784FD83A70700232AF4FC832784FDC2
:100A700083A747002328F4FC832784FD83A78700EE
:100A80002326F4FC832784FD83A707012326F4FE95
:100A90000327C4FE8327C4FAB307F7022324F4FE16
:100AA0008327C4FE639A0700930710002326F4FEF1
:100AB0008327C4FA2324F4FE832784FD83A7C70079
:100AC0002324F4FC232204FE6F00800D232004FE67
:100AD000232E04FC6F008007032784FA832784FCFD
:100AE000B307F7020327C4FDB307F7002322F4FC82
:100AF000032784FC8327C4FDB307F702032784FE82
:100B0000B307F7002320F4FC832744FC93972700C6
:100B1000032744FDB307F70003A70700832704FC5E
:100B200093972700832604FDB387F60083A7070069
:100B3000B307F702032704FEB307F7002320F4FEF0
:100B40008327C4FD93871700232EF4FC0327C4FDDD
:100B5000832784FCE362F7F8032784FA832784FC65
:100B60003307F702832784FEB307F700232EF4FA36
:100B70008327C4FB939727000327C4FCB307F70020
:100B8000032704FE23A0E700832784FE9387170032
:100B90002324F4FE832744FE938717002322F4FEC8
:100BA000832744FE0327C4FEE3E2E7F213000000BC
:100BB0008320C1050324810513010106678000001D
:100BC000130101FC232E1102232C810213040104C2
:100BD000232EA4FC232CB4FC232AC4FC2328D4FCFD
:100BE0002326E4FCB76702810327C4FD23A6E71C84
:100BF000B76702819387C71C032784FD23A2E70000
:100C0000B76702819387C71C032744FD23A4E7002D
:100C1000B76702819387C71C0327C4FC23A6E7009C
:100C2000B76702819387C71C032704FD23A8E70049
:100C3000EFF08FDC2324A4FE0327C4FC832784FE6B
:100C4000B357F7022326F4FE0327C4FC832784FE50
:100C5000B377F702638807008327C4FE93871700E2
:100C60002326F4FEB76702819387C71C0327C4FEBF
:100C700023AAE7000327C4FC832784FE6362F702EC
:100C8000B76702819386C71CB7170080138687CF8A
:100C9000832584FE032504FDEFF08FFD6F00000225
:100CA000B76702819386C71CB7170080138687CF6A
:100CB0008325C4FC032504FDEFF08FFBEFF04FD339
:100CC0002322A4FE032704FD832744FE63F8E700E4
:100CD000032544FEEFF0DF886F00C000032504FD0C
:100CE000EFF01F88130000008320C1030324810359
:100CF0001301010467800000130101FB2326110486
:100D00002324810413040105232EA4FA232CB4FA0E
:100D1000EFF01F942320A4FE832704FE83A707007F
:100D2000232EF4FC832704FE83A74700232CF4FC26
:100D3000832704FE83A78700232AF4FC832704FE6D
:100D400083A747012326F4FE0327C4FE8327C4FBA1
:100D5000B307F7022324F4FE8327C4FE639A070037
:100D6000930710002326F4FE8327C4FB2324F4FEFC
:100D7000832704FE83A7C7002328F4FC232204FE54
:100D80006F00000C032784FB832704FD3307F70261
:100D9000832784FEB307F7002326F4FC032784FE91
:100DA000832704FDB337F70093F7F70F2324F4FCF0
:100DB000832784FC93B71700A303F4FC834774FCD8
:100DC000138F0700B7170080938FC7E26B200F00C7
:100DD0007B70FF018327C4FC939727000327C4FD82
:100DE000B307F70083A607008327C4FC9397270067
:100DF000032784FDB307F70003A707008327C4FC7C
:100E000093972700032644FDB307F6003387E600D7
:100E100023A0E700832784FE938717002324F4FE92
:100E2000B7170080138E07E367000E001300000061
:100E30006B300000832744FE938717002322F4FEC3
:100E4000832744FE0327C4FEE3EEE7F2130000000D
:100E50008320C1040324810413010105678000007D
:100E6000130101FC232E1102232C8102130401041F
:100E7000232EA4FC232CB4FC232AC4FC2328D4FC5A
:100E80002326E4FCB76702810327C4FD23A6E71CE1
:100E9000B76702819387C71C032784FD23A2E7005D
:100EA000B76702819387C71C032744FD23A4E7008B
:100EB000B76702819387C71C0327C4FC23A6E700FA
:100EC000B76702819387C71C032704FD23A8E700A7
:100ED000EFF08FB22324A4FE0327C4FC832784FEF3
:100EE000B357F7022326F4FE0327C4FC832784FEAE
:100EF000B377F702638807008327C4FE9387170040
:100F00002326F4FEB76702819387C71C0327C4FE1C
:100F100023AAE7000327C4FC832784FE6362F70249
:100F2000B76702819386C71CB7170080138687F9BD
:100F3000832584FE032504FDEFF08FD36F000002AC
:100F4000B76702819386C71CB7170080138687F99D
:100F50008325C4FC032504FDEFF08FD1EFF04FA9EA
:100F60002322A4FE032704FD832744FE63F8E70041
:100F7000032544FEEFF0CFDE6F00C000032504FD23
:100F8000EFF00FDE130000008320C1030324810370
:100F90001301010467800000130101FB23261104E3
:100FA0002324810413040105232EA4FA232CB4FA6C
:100FB000EFF00FEA2320A4FE832704FE83A7070097
:100FC000232EF4FC832704FE83A74700232CF4FC84
:100FD000832704FE83A78700232AF4FC832704FECB
:100FE00083A747012326F4FE0327C4FE8327C4FBFF
:100FF000B307F7022324F4FE8327C4FE639A070095
:10100000930710002326F4FE8327C4FB2324F4FE59
:10101000832704FE83A7C7002328F4FC232204FEB1
:101020006F00000C032784FB832704FD3307F702BE
:10103000832784FEB307F7002326F4FC032784FEEE
:10104000832704FDB337F70093F7F70F2324F4FC4D
:10105000832784FC93B71700A303F4FC834774FC35
:10106000138F0700B7170080938FC70C6B200F00FA
:101070007B70FF018327C4FC939727000327C4FDDF
:10108000B307F70083A607008327C4FC93972700C4
:10109000032784FDB307F70003A707008327C4FCD9
:1010A00093972700032644FDB307F6003387E640F5
:1010B00023A0E700832784FE938717002324F4FEF0
:1010C000B7170080138E070D67000E001300000095
:1010D0006B300000832744FE938717002322F4FE21
:1010E000832744FE0327C4FEE3EEE7F2130000006B
:1010F0008320C104032481041301010567800000DB
:10110000130101FC232E1102232C8102130401047C
:10111000232EA4FC232CB4FC232AC4FC2328D4FCB7
:101120002326E4FCB76702810327C4FD23A2E71E40
:10113000B76702819387471E032784FD23A2E70038
:10114000B76702819387471E032744FD23A4E70066
:10115000B76702819387471E0327C4FC23A6E700D5
:10116000B76702819387471E032704FD23A8E70082
:10117000EFF08F882324A4FE0327C4FC832784FE7A
:10118000B357F7022326F4FE0327C4FC832784FE0B
:10119000B377F702638807008327C4FE938717009D
:1011A0002326F4FEB76702819387471E0327C4FEF8
:1011B00023AAE7000327C4FC832784FE6362F702A7
:1011C000B76702819386471EB7170080138687236F
:1011D000832584FE032504FDEFF08FA96F00000234
:1011E000B76702819386471EB7170080138687234F
:1011F0008325C4FC032504FDEFF08FA7EFE05FFF1C
:101200002322A4FE032704FD832744FE63F8E7009E
:10121000032544FEEFF0CFB46F00C000032504FDAA
:10122000EFF00FB4130000008320C10303248103F7
:101230001301010467800000130101FB2326110440
:101240002324810413040105232EA4FA232CB4FAC9
:10125000EFF00FC02320A4FE832704FE83A707001E
:10126000232EF4FC832704FE83A7470083A70700EF
:10127000232CF4FC832704FE83A78700232AF4FC95
:10128000832704FE83A747012326F4FE0327C4FE19
:101290008327C4FBB307F7022324F4FE8327C4FE8D
:1012A000639A0700930710002326F4FE8327C4FBEC
:1012B0002324F4FE832704FE83A7C7002328F4FC1D
:1012C000232204FE6F00000B032784FB832704FD09
:1012D0003307F702832784FEB307F7002326F4FCC5
:1012E000032784FE832704FDB337F70093F7F70F36
:1012F0002324F4FC832784FC93B71700A303F4FC96
:10130000834774FC138F0700B7170080938F07364D
:101310006B200F007B70FF018327C4FC939727008D
:101320000327C4FDB307F70083A607008327C4FC87
:1013300093972700032744FDB307F700032784FD95
:101340003387E60023A0E700832784FE93871700F6
:101350002324F4FEB7170080138E473667000E0073
:10136000130000006B300000832744FE93871700B2
:101370002322F4FE832744FE0327C4FEE3E6E7F4BA
:10138000130000008320C10403248104130101051C
:1013900067800000130101FC232E1102232C81021F
:1013A00013040104232EA4FC232CB4FC232AC4FC24
:1013B0002328D4FC2326E4FCB76702810327C4FD5D
:1013C00023A2E71EB76702819387471E032784FD88
:1013D00023A2E700B76702819387471E032744FDD6
:1013E00023A4E700B76702819387471E0327C4FC45
:1013F00023A6E700B76702819387471E032704FDF2
:1014000023A8E700EFE05FDF2324A4FE0327C4FC4A
:10141000832784FEB357F7022326F4FE0327C4FC78
:10142000832784FEB377F702638807008327C4FE0F
:10143000938717002326F4FEB76702819387471E20
:101440000327C4FE23AAE7000327C4FC832784FEE6
:101450006362F702B76702819386471EB717008061
:101460001386C74C832584FE032504FDEFF04F80CF
:101470006F000002B76702819386471EB71700808E
:101480001386C74C8325C4FC032504FDEFE05FFEF3
:10149000EFE01FD62322A4FE032704FD832744FE8A
:1014A00063F8E700032544FEEFF08F8B6F00C00068
:1014B000032504FDEFF0CF8A130000008320C10351
:1014C000032481031301010467800000130101FB61
:1014D000232611042324810413040105232EA4FAD6
:1014E000232CB4FAEFF0CF962320A4FE832704FE2A
:1014F00083A70700232EF4FC832704FE83A747005D
:1015000083A70700232CF4FC832704FE83A787000E
:10151000232AF4FC832704FE83A747012326F4FE35
:101520000327C4FE8327C4FBB307F7022324F4FE7A
:101530008327C4FE639A0700930710002326F4FE56
:101540008327C4FB2324F4FE832704FE83A7C7005C
:101550002328F4FC232204FE6F00000B032784FBE6
:10156000832704FD3307F702832784FEB307F700C0
:101570002326F4FC032784FE832704FDB337F700FA
:1015800093F7F70F2324F4FC832784FC93B7170009
:10159000A303F4FC834774FC138F0700B717008084
:1015A000938F475F6B200F007B70FF018327C4FC84
:1015B000939727000327C4FDB307F70083A607000E
:1015C0008327C4FC93972700032744FDB307F70044
:1015D000032784FD3387E60223A0E700832784FEE8
:1015E000938717002324F4FEB7170080138E875FBC
:1015F00067000E00130000006B300000832744FEDC
:10160000938717002322F4FE832744FE0327C4FE9A
:10161000E3E6E7F4130000008320C10403248104FF
:101620001301010567800000130101FD23268102DB
:1016300013040103232EA4FC232604FE6F000001E3
:101640008327C4FE938717002326F4FE0327C4FED6
:101650008327C4FDE346F7FE130000000324C10204
:101660001301010367800000130101FD232611020D
:101670002324810213040103232EA4FC232CB4FC95
:10168000B76702811387C71F8327C4FDB307F7001D
:10169000130710002380E7008327C4FD6390070C25
:1016A000A30104FE232604FE6F00800A232604FE05
:1016B000232404FE6F004003B76702811387C71F0E
:1016C000832784FEB307F70083C7070063880700FA
:1016D0008327C4FE938717002326F4FE832784FE06
:1016E000938717002324F4FE032784FE832784FDB9
:1016F000E344F7FC0327C4FE832784FD631AF70441
:10170000232204FE6F000004B76702811387C71FFE
:10171000832744FEB307F70023800700B7970281B1
:10172000130710002382E72C13056004EFF0DFEFAE
:10173000B79702812382072C832744FE93871700E3
:101740002322F4FE032744FE832784FDE34EF7FAA9
:10175000834734FEE39C07F46F004002130000004F
:10176000B797028183C7472C93C7170093F7F70FEA
:10177000E39807FE13054006EFF01FEB130000008F
:101780008320C1020324810213010103678000004A
:10179000130101FF232681001304010193070000B8
:1017A0001308000013850700930508000324C100F7
:1017B0001301010167800000130101FE232E810047
:1017C00013040102232604FE6F008004B767028120
:1017D0000327C4FE131727009387C721B307F70019
:1017E0001307300023A0E700B77702810327C4FE68
:1017F000131727009387C721B307F70013072000AB
:1018000023A0E7008327C4FE938717002326F4FE56
:101810000327C4FE9307F00FE3DAE7FA1300000092
:101820000324C1011301010267800000130101FDBF
:10183000232611022324810213040103232EA4FC76
:10184000B707008113858711EFE0DFF8232604FE38
:101850006F0080058327C4FE638E07008327C4FEC4
:1018600093F7F70063980700B70700811385C71344
:10187000EFE05FF68327C4FE939727000327C4FD9C
:10188000B307F70083A7070013850700EFE05FF8B1
:10189000B707008113850714EFE0DFF38327C4FE49
:1018A000938717002326F4FE0327C4FE9307F00F47
:1018B000E3D2E7FAB707008113854714EFE09FF101
:1018C000130000008320C1020324810213010103DD
:1018D00067800000130101FF2326110023248100EB
:1018E00013040101EFF05FEDB76702811385C72193
:1018F000EFF0DFF393070000138507008320C1009A
:0C19000003248100130101016780000036
:10000000130540006B000500F32500027326100263
:1000100073000000938B0600130D0700130F0100FF
:100020009303050013051000635C75001301018044
:10003000130305006B500300130515006FF0DFFE7E
:100040001300000013000000130000001300000064
:10005000130000001300000013010F00130500003F
:10006000930F0600938D030013000000130000009F
:100070001300000013000000130000001300000034
:100080001300000013000000EBE0BF0113000000AC
:100090001300000013000000130000001300000014
:1000A00013000000170500001305451B6B400500F9
:1000B00017030000130343F66B0003006780000082
:1000C000170200011302022523200200232212003E
:1000D000232422002326320023284200232A520010
:1000E000232C6200232E72002320820223229202FC
:1000F0002324A2022326B2022328C202232AD202E8
:10010000232CE202232EF2022320020523221205D1
:10011000232422052326320523284205232A5205BB
:10012000232C6205232E72052320820723229207A7
:100130002324A2072326B2072328C207232AD20793
:10014000232CE207232EF207130210006780000021
:10015000170200011302021C032002008320420048
:10016000032182008321C200032202018322420173
:10017000032382018323C201032402028324420257
:10018000032582028325C20203260203832642033B
:10019000032782038327C20303280204832842041F
:1001A000032982048329C204032A0205832A420503
:1001B000032B8205832BC205032C0206832C4206E7
:1001C000032D8206832DC206032E0207832E4207CB
:1001D000032F8207832FC2071302000067800000ED
:1001E00073250002678000007325100267800000FD
:1001F000130101FE232E1100232C810013040102A0
:10020000232604FE6F0040030327C4FEB717000037
:10021000938747973307F702B70700819387074112
:10022000B307F70013850700EF0000448327C4FEDF
:10023000938717002326F4FE0327C4FE9307F001DB
:10024000E3D4E7FC130000008320C10103248101F3
:100250001301010267800000130101FD2326110232
:10026000232481022322A1031304010313000000AD
:1002700013070D00B7170000938747973307F7025E
:10028000B707008193870741B307F700138507007D
:10029000EF00405093070500638A070213070D0023
:1002A000B70700811317270093878726B307F70046
:1002B0001307100023A0E70093070D0063960700C3
:1002C000EFF01FE96F00C0057300000013070D0079
:1002D000B7170000938747973307F702B7070081E6
:1002E00093870741B307F700130784FD93050700C1
:1002F00013850700EF000040832704FE13810700E9
:100300008327C4FD832584FD032644FE832684FEC3
:100310000327C4FE13850700EFF0DFCF7300000052
:100320008320C10203248102032D41021301010332
:1003300067800000130101FB23261104232481049C
:1003400013040105EFF0DFE92324A4FE9309010063
:10035000930710002326F4FE6F00C0080327C4FE95
:10036000B7170000938747973307F702B707008155
:1003700093870741B307F70013850700EF0080411B
:1003800093070500639A07040327C4FEB71700000C
:10039000938747973307F702B70700819387074191
:1003A000B307F700130704FD930507001385070043
:1003B000EF004034832784FD13810700832744FD29
:1003C000832504FD0326C4FD832604FE032744FE83
:1003D00013850700EFF0DFCD8327C4FE9387170056
:1003E0002326F4FE8327C4FE032784FEE3E8E7F612
:1003F00013810900EFF0DFCC930702006388070444
:10040000B707008113850741EF00C0389307050047
:10041000639E0702930784FB93850700B70700815B
:1004200013850741EF00002D832704FC138107008B
:100430008327C4FB832584FB032644FC832684FC9A
:100440000327C4FC13850700EFF0DFBC1300000096
:100450008320C10403248104130101056780000087
:10046000130101FB23261104232481041304010535
:10047000232EA4FA232CB4FA232AC4FA2328D4FA6C
:10048000EFF01FD7EFF0DFD52322A4FE1309010000
:10049000232604FE232404FE6F000009B709FFFF92
:1004A00033013101832784FE2326F4FC832784FB58
:1004B0002328F4FC93070100232AF4FC832744FB40
:1004C000232CF4FC832704FB232EF4FC8327C4FE97
:1004D0002320F4FE0327C4FEB71700009387479735
:1004E0003307F702B707008193870741B307F70087
:1004F0001307C4FC9305070013850700EF000019DC
:100500008327C4FE938717002326F4FE8327C4FEA7
:10051000032744FE63E4E700232604FE832784FECA
:10052000938717002324F4FE032784FE8327C4FB4C
:10053000E366F7F613010900EFF0DFDF13000000B8
:100540008320C10403248104130101056780000096
:10055000130101FD23261102232481021304010348
:10056000232EA4FC8325C4FDB7070081138507044F
:10057000EF004035EFF0DFC62320A4FE232604FE63
:100580006F008006930710002326F4FE232404FE48
:100590006F00C003B7070081032784FE13172700ED
:1005A00093878726B307F70003A707009307100078
:1005B0006318F7008327C4FE938717002326F4FEF1
:1005C000832784FE938717002324F4FE032784FEE9
:1005D0009307F001E3D0E7FC8325C4FEB707008151
:1005E0001385C704EF00002E0327C4FE8327C4FD34
:1005F000E36AF7F8232204FE6F008002B707008148
:10060000032744FE1317270093878726B307F700B5
:1006100023A00700832744FE938717002322F4FEBC
:10062000832744FE032704FEE3EAE7FC13000000EF
:100630008320C102032481021301010367800000AB
:10064000130101FF232681002324710113040101FA
:1006500093870B00138507000324C100832B8100BF
:1006600013010101678000009302050013030000DD
:100670009303700023A0620023A2620023A46200FF
:1006800023A6720023A86200678000009302050081
:1006900003A382001303130023A462001383420107
:1006A00083AE420093935E003303730003AE0500F4
:1006B0002320C30103AE45002322C30103AE8500FE
:1006C0002324C30103AEC5002326C30103AE0501E5
:1006D0002328C30103AE4501232AC301938E1E00C4
:1006E000130F20036394EE01930E000023A2D201A6
:1006F000678000009302050003A38200130000003E
:10070000130000001300000013000000130000009D
:10071000130000001303F3FF23A4620013834201BC
:1007200083AE0200930F2003138F0E00130F1F00E0
:100730006314FF01130F000023A0E20193935E00F6
:1007400033037300032E030023A0C501032E4300CF
:1007500023A2C501032E830023A4C501032EC300D9
:1007600023A6C501032E030123A8C501032E4301BF
:1007700023AAC501678000009302050003A382003D
:1007800013050000130E200363146E0013051500FB
:10079000678000009302050003A382001305000098
:1007A000130E000063146E0013051500678000002F
:1007B0009302050003A3C20083A3020133B56300C3
:1007C00067800000130141FF232011002322B100A4
:1007D0008345050063880500EF00C001130515007F
:1007E0006FF01FFF83200100832541001301C1002A
:1007F00067800000B708010023A0B80067800000F0
:10080000130101FD23261102232481021304010395
:10081000232EA4FC0327C4FD9307F00063E4E70242
:10082000B70700810327C4FD131727009387871A92
:10083000B307F70083A7070013850700EFF09FF8C1
:100840006F004007930700022326F4FEA30504FE71
:100850008327C4FE9387C7FF0327C4FDB357F70060
:1008600093F7F7002322F4FE832744FE63860700F4
:1008700093071000A305F4FE8347B4FE63820702CA
:10088000B7070081032744FE131727009387871AB1
:10089000B307F70083A7070013850700EFF09FF267
:1008A0008327C4FE9387C7FF2326F4FE8327C4FE55
:1008B000E340F0FA8320C102032481021301010303
:1008C00067800000130101FE232E1100232C8100FC
:1008D000130401022326A4FE2324B4FE0325C4FE30
:1008E000EFF05FEE032584FEEFF09FF1B707008184
:1008F00013854709EFF01FED130000008320C101AD
:10090000032481011301010267800000130101FD2E
:10091000232611022324810213040103232EA4FCA5
:10092000232CB4FC232AC4FC2328D4FCB7670281FF
:100930000327C4FD23ACE71AB76702819387871B9F
:10094000032784FD23A2E700B76702819387871BF3
:10095000032744FD23A4E700B76702819387871B21
:10096000032704FD23A6E700EFF01F882324A4FE3D
:10097000032704FD832784FEB357F7022326F4FEE2
:10098000032704FD832784FEB377F70263880700FB
:100990008327C4FE938717002326F4FEB7670281DE
:1009A0009387871B0327C4FE23A8E700032704FDC2
:1009B000832784FE6362F702B76702819386871BF1
:1009C000B7170080138607A3832584FE032504FD43
:1009D000EFF01FA96F000002B76702819386871BA3
:1009E000B7170080138607A3832504FD032504FDA4
:1009F000EFF01FA7EFF0CFFE2322A4FE032704FD94
:100A0000832744FE63F8E700032544FEEFF05FB45C
:100A10006F00C000032504FDEFF09FB3130000003A
:100A20008320C102032481021301010367800000B7
:100A3000130101FA232E1104232C8104130401064F
:100A40002326A4FA2324B4FAEFF09FBF232CA4FC9E
:100A5000832784FD83A70700232AF4FC832784FDD2
:100A600083A747002328F4FC832784FD83A78700FE
:100A70002326F4FC832784FD83A707012326F4FEA5
:100A80000327C4FE8327C4FAB307F7022324F4FE26
:100A90008327C4FE639A0700930710002326F4FE01
:100AA0008327C4FA2324F4FE832784FD83A7C70089
:100AB0002324F4FC232204FE6F00800D232004FE77
:100AC000232E04FC6F008007032784FA832784FC0D
:100AD000B307F7020327C4FDB307F7002322F4FC92
:100AE000032784FC8327C4FDB307F702032784FE92
:100AF000B307F7002320F4FC832744FC93972700D7
:100B0000032744FDB307F70003A70700832704FC6E
:100B100093972700832604FDB387F60083A7070079
:100B2000B307F702032704FEB307F7002320F4FE00
:100B30008327C4FD93871700232EF4FC0327C4FDED
:100B4000832784FCE362F7F8032784FA832784FC75
:100B50003307F702832784FEB307F700232EF4FA46
:100B60008327C4FB939727000327C4FCB307F70030
:100B7000032704FE23A0E700832784FE9387170042
:100B80002324F4FE832744FE938717002322F4FED8
:100B9000832744FE0327C4FEE3E2E7F213000000CC
:100BA0008320C1050324810513010106678000002D
:100BB000130101FC232E1102232C810213040104D2
:100BC000232EA4FC232CB4FC232AC4FC2328D4FC0D
:100BD0002326E4FCB76702810327C4FD23A6E71C94
:100BE000B76702819387C71C032784FD23A2E70010
:100BF000B76702819387C71C032744FD23A4E7003E
:100C0000B76702819387C71C0327C4FC23A6E700AC
:100C1000B76702819387C71C032704FD23A8E70059
:100C2000EFF08FDC2324A4FE0327C4FC832784FE7B
:100C3000B357F7022326F4FE0327C4FC832784FE60
:100C4000B377F702638807008327C4FE93871700F2
:100C50002326F4FEB76702819387C71C0327C4FECF
:100C600023AAE7000327C4FC832784FE6362F702FC
:100C7000B76702819386C71CB7170080138687CE9B
:100C8000832584FE032504FDEFF08FFD6F00000235
:100C9000B76702819386C71CB7170080138687CE7B
:100CA0008325C4FC032504FDEFF08FFBEFF04FD349
:100CB0002322A4FE032704FD832744FE63F8E700F4
:100CC000032544FEEFF0DF886F00C000032504FD1C
:100CD000EFF01F88130000008320C1030324810369
:100CE0001301010467800000130101FB2326110496
:100CF0002324810413040105232EA4FA232CB4FA1F
:100D0000EFF01F942320A4FE832704FE83A707008F
:100D1000232EF4FC832704FE83A74700232CF4FC36
:100D2000832704FE83A78700232AF4FC832704FE7D
:100D300083A747012326F4FE0327C4FE8327C4FBB1
:100D4000B307F7022324F4FE8327C4FE639A070047
:100D5000930710002326F4FE8327C4FB2324F4FE0C
:100D6000832704FE83A7C7002328F4FC232204FE64
:100D70006F00000C032784FB832704FD3307F70271
:100D8000832784FEB307F7002326F4FC032784FEA1
:100D9000832704FDB337F70093F7F70F2324F4FC00
:100DA000832784FC93B71700A303F4FC834774FCE8
:100DB000138F0700B7170080938FC7E16B200F00D8
:100DC0007B70FF018327C4FC939727000327C4FD92
:100DD000B307F70083A607008327C4FC9397270077
:100DE000032784FDB307F70003A707008327C4FC8C
:100DF00093972700032644FDB307F6003387E600E8
:100E000023A0E700832784FE938717002324F4FEA2
:100E1000B7170080138E07E267000E001300000072
:100E20006B300000832744FE938717002322F4FED3
:100E3000832744FE0327C4FEE3EEE7F2130000001D
:100E40008320C1040324810413010105678000008D
:100E5000130101FC232E1102232C8102130401042F
:100E6000232EA4FC232CB4FC232AC4FC2328D4FC6A
:100E70002326E4FCB76702810327C4FD23A6E71CF1
:100E8000B76702819387C71C032784FD23A2E7006D
:100E9000B76702819387C71C032744FD23A4E7009B
:100EA000B76702819387C71C0327C4FC23A6E7000A
:100EB000B76702819387C71C032704FD23A8E700B7
:100EC000EFF08FB22324A4FE0327C4FC832784FE03
:100ED000B357F7022326F4FE0327C4FC832784FEBE
:100EE000B377F702638807008327C4FE9387170050
:100EF0002326F4FEB76702819387C71C0327C4FE2D
:100F000023AAE7000327C4FC832784FE6362F70259
:100F1000B76702819386C71CB7170080138687F8CE
:100F2000832584FE032504FDEFF08FD36F000002BC
:100F3000B76702819386C71CB7170080138687F8AE
:100F40008325C4FC032504FDEFF08FD1EFF04FA9FA
:100F50002322A4FE032704FD832744FE63F8E70051
:100F6000032544FEEFF0CFDE6F00C000032504FD33
:100F7000EFF00FDE130000008320C1030324810380
:100F80001301010467800000130101FB23261104F3
:100F90002324810413040105232EA4FA232CB4FA7C
:100FA000EFF00FEA2320A4FE832704FE83A70700A7
:100FB000232EF4FC832704FE83A74700232CF4FC94
:100FC000832704FE83A78700232AF4FC832704FEDB
:100FD00083A747012326F4FE0327C4FE8327C4FB0F
:100FE000B307F7022324F4FE8327C4FE639A0700A5
:100FF000930710002326F4FE8327C4FB2324F4FE6A
:10100000832704FE83A7C7002328F4FC232204FEC1
:101010006F00000C032784FB832704FD3307F702CE
:10102000832784FEB307F7002326F4FC032784FEFE
:10103000832704FDB337F70093F7F70F2324F4FC5D
:10104000832784FC93B71700A303F4FC834774FC45
:10105000138F0700B7170080938FC70B6B200F000B
:101060007B70FF018327C4FC939727000327C4FDEF
:10107000B307F70083A607008327C4FC93972700D4
:10108000032784FDB307F70003A707008327C4FCE9
:1010900093972700032644FDB307F6003387E64005
:1010A00023A0E700832784FE938717002324F4FE00
:1010B000B7170080138E070C67000E0013000000A6
:1010C0006B300000832744FE938717002322F4FE31
:1010D000832744FE0327C4FEE3EEE7F2130000007B
:1010E0008320C104032481041301010567800000EB
:1010F000130101FC232E1102232C8102130401048D
:10110000232EA4FC232CB4FC232AC4FC2328D4FCC7
:101110002326E4FCB76702810327C4FD23A2E71E50
:10112000B76702819387471E032784FD23A2E70048
:10113000B76702819387471E032744FD23A4E70076
:10114000B76702819387471E0327C4FC23A6E700E5
:10115000B76702819387471E032704FD23A8E70092
:10116000EFF08F882324A4FE0327C4FC832784FE8A
:10117000B357F7022326F4FE0327C4FC832784FE1B
:10118000B377F702638807008327C4FE93871700AD
:101190002326F4FEB76702819387471E0327C4FE08
:1011A00023AAE7000327C4FC832784FE6362F702B7
:1011B000B76702819386471EB71700801386872280
:1011C000832584FE032504FDEFF08FA96F00000244
:1011D000B76702819386471EB71700801386872260
:1011E0008325C4FC032504FDEFF08FA7EFE05FFF2C
:1011F0002322A4FE032704FD832744FE63F8E700AF
:10120000032544FEEFF0CFB46F00C000032504FDBA
:10121000EFF00FB4130000008320C1030324810307
:101220001301010467800000130101FB2326110450
:101230002324810413040105232EA4FA232CB4FAD9
:10124000EFF00FC02320A4FE832704FE83A707002E
:10125000232EF4FC832704FE83A7470083A70700FF
:10126000232CF4FC832704FE83A78700232AF4FCA5
:10127000832704FE83A747012326F4FE0327C4FE29
:101280008327C4FBB307F7022324F4FE8327C4FE9D
:10129000639A0700930710002326F4FE8327C4FBFC
:1012A0002324F4FE832704FE83A7C7002328F4FC2D
:1012B000232204FE6F00000B032784FB832704FD19
:1012C0003307F702832784FEB307F7002326F4FCD5
:1012D000032784FE832704FDB337F70093F7F70F46
:1012E0002324F4FC832784FC93B71700A303F4FCA6
:1012F000834774FC138F0700B7170080938F07355F
:101300006B200F007B70FF018327C4FC939727009D
:101310000327C4FDB307F70083A607008327C4FC97
:1013200093972700032744FDB307F700032784FDA5
:101330003387E60023A0E700832784FE9387170006
:101340002324F4FEB7170080138E473567000E0084
:10135000130000006B300000832744FE93871700C2
:101360002322F4FE832744FE0327C4FEE3E6E7F4CA
:10137000130000008320C10403248104130101052C
:1013800067800000130101FC232E1102232C81022F
:1013900013040104232EA4FC232CB4FC232AC4FC34
:1013A0002328D4FC2326E4FCB76702810327C4FD6D
:1013B00023A2E71EB76702819387471E032784FD98
:1013C00023A2E700B76702819387471E032744FDE6
:1013D00023A4E700B76702819387471E0327C4FC55
:1013E00023A6E700B76702819387471E032704FD02
:1013F00023A8E700EFE05FDF2324A4FE0327C4FC5B
:10140000832784FEB357F7022326F4FE0327C4FC88
:10141000832784FEB377F702638807008327C4FE1F
:10142000938717002326F4FEB76702819387471E30
:101430000327C4FE23AAE7000327C4FC832784FEF6
:101440006362F702B76702819386471EB717008071
:101450001386C74B832584FE032504FDEFF04F80E0
:101460006F000002B76702819386471EB71700809E
:101470001386C74B8325C4FC032504FDEFE05FFE04
:10148000EFE01FD62322A4FE032704FD832744FE9A
:1014900063F8E700032544FEEFF08F8B6F00C00078
:1014A000032504FDEFF0CF8A130000008320C10361
:1014B000032481031301010467800000130101FB71
:1014C000232611042324810413040105232EA4FAE6
:1014D000232CB4FAEFF0CF962320A4FE832704FE3A
:1014E00083A70700232EF4FC832704FE83A747006D
:1014F00083A70700232CF4FC832704FE83A787001F
:10150000232AF4FC832704FE83A747012326F4FE45
:101510000327C4FE8327C4FBB307F7022324F4FE8A
:101520008327C4FE639A0700930710002326F4FE66
:101530008327C4FB2324F4FE832704FE83A7C7006C
:101540002328F4FC232204FE6F00000B032784FBF6
:10155000832704FD3307F702832784FEB307F700D0
:101560002326F4FC032784FE832704FDB337F7000A
:1015700093F7F70F2324F4FC832784FC93B7170019
:10158000A303F4FC834774FC138F0700B717008094
:10159000938F475E6B200F007B70FF018327C4FC95
:1015A000939727000327C4FDB307F70083A607001E
:1015B0008327C4FC93972700032744FDB307F70054
:1015C000032784FD3387E60223A0E700832784FEF8
:1015D000938717002324F4FEB7170080138E875ECD
:1015E00067000E00130000006B300000832744FEEC
:1015F000938717002322F4FE832744FE0327C4FEAB
:10160000E3E6E7F4130000008320C104032481040F
:101610001301010567800000130101FD23268102EB
:1016200013040103232EA4FC232604FE6F000001F3
:101630008327C4FE938717002326F4FE0327C4FEE6
:101640008327C4FDE346F7FE130000000324C10214
:101650001301010367800000130101FD232611021D
:101660002324810213040103232EA4FC232CB4FCA5
:10167000B76702811387C71F8327C4FDB307F7002D
:10168000130710002380E7008327C4FD6390070C35
:10169000A30104FE232604FE6F00800A232604FE15
:1016A000232404FE6F004003B76702811387C71F1E
:1016B000832784FEB307F70083C70700638807000A
:1016C0008327C4FE938717002326F4FE832784FE16
:1016D000938717002324F4FE032784FE832784FDC9
:1016E000E344F7FC0327C4FE832784FD631AF70451
:1016F000232204FE6F000004B76702811387C71F0F
:10170000832744FEB307F70023800700B7970281C1
:10171000130710002382E72C13056004EFF0DFEFBE
:10172000B79702812382072C832744FE93871700F3
:101730002322F4FE032744FE832784FDE34EF7FAB9
:10174000834734FEE39C07F46F004002130000005F
:10175000B797028183C7472C93C7170093F7F70FFA
:10176000E39807FE13054006EFF01FEB130000009F
:101770008320C1020324810213010103678000005A
:10178000130101FF232681001304010193070000C8
:101790001308000013850700930508000324C10007
:1017A0001301010167800000130101FE232E810057
:1017B00013040102232604FE6F008004B767028130
:1017C0000327C4FE131727009387C721B307F70029
:1017D0001307300023A0E700B77702810327C4FE78
:1017E000131727009387C721B307F70013072000BB
:1017F00023A0E7008327C4FE938717002326F4FE67
:101800000327C4FE9307F00FE3DAE7FA13000000A2
:101810000324C1011301010267800000130101FDCF
:10182000232611022324810213040103232EA4FC86
:10183000B707008113858711EFE0DFF8232604FE48
:101840006F0080058327C4FE638E07008327C4FED4
:1018500093F7F70063980700B70700811385C71354
:10186000EFE05FF68327C4FE939727000327C4FDAC
:10187000B307F70083A7070013850700EFE05FF8C1
:10188000B707008113850714EFE0DFF38327C4FE59
:10189000938717002326F4FE0327C4FE9307F00F57
:1018A000E3D2E7FAB707008113854714EFE09FF111
:1018B000130000008320C1020324810213010103ED
:1018C00067800000130101FF2326110023248100FB
:1018D00013040101EFF05FEDB76702811385C721A3
:1018E000EFF0DFF393070000138507008320C100AA
:0C18F00003248100130101016780000047
:02000004810079
:10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A

View file

@ -6,20 +6,21 @@
.type _start, @function
.global _start
_start:
# li a0, 7
# sw a0, 0(zero)
# lw a1, 0(zero)
# ecall
li a0, 8 # Num Warps
csrw 0x20, a0 # Setting the number of available warps
li a0, 4 # Num Threads
csrw 0x21, a0 # Setting the number of available threads
csrw mhartid,zero
csrw misa,zero
lui sp, 0x7ffff
# jal vx_before_main
jal main
li a0, 4
.word 0x0005006b # tmc a0
csrr a1, 0x20 # read thread IDs
csrr a2, 0x21 # read warp IDs
ecall
# li a0, 8 # Num Warps
# csrw 0x20, a0 # Setting the number of available warps
# li a0, 4 # Num Threads
# csrw 0x21, a0 # Setting the number of available threads
# csrw mhartid,zero
# csrw misa,zero
# lui sp, 0x7ffff
# # jal vx_before_main
# jal main
# ecall
# Hi:
# li a2, 7

View file

@ -8,7 +8,6 @@ module VX_alu(
input wire[31:0] in_itype_immed,
input wire[19:0] in_upper_immed,
input wire[4:0] in_alu_op,
input wire[31:0] in_csr_data, // done
input wire[31:0] in_curr_PC,
output reg[31:0] out_alu_result
);
@ -60,9 +59,6 @@ module VX_alu(
`SUBU: out_alu_result = (ALU_in1 >= ALU_in2) ? 32'h0 : 32'hffffffff;
`LUI_ALU: out_alu_result = upper_immed;
`AUIPC_ALU: out_alu_result = $signed(in_curr_PC) + $signed(upper_immed);
`CSR_ALU_RW: out_alu_result = in_csr_data;
`CSR_ALU_RS: out_alu_result = in_csr_data;
`CSR_ALU_RC: out_alu_result = in_csr_data;
`MUL: begin out_alu_result = mult_signed_result[31:0]; end
`MULH: out_alu_result = mult_signed_result[63:32];
`MULHSU: out_alu_result = mult_signed_un_result[63:32];

View file

@ -3,7 +3,6 @@ module VX_back_end (
input wire reset,
input wire schedule_delay,
input wire[31:0] csr_decode_csr_data,
output wire out_mem_delay,
VX_jal_response_inter VX_jal_rsp,
@ -16,20 +15,11 @@ module VX_back_end (
VX_warp_ctl_inter VX_warp_ctl,
VX_dcache_response_inter VX_dcache_rsp,
VX_dcache_request_inter VX_dcache_req,
VX_dcache_request_inter VX_dcache_req
VX_csr_write_request_inter VX_csr_w_req
);
wire[11:0] execute_csr_address;
wire execute_is_csr;
reg[31:0] execute_csr_result;
wire execute_jal;
wire[31:0] execute_jal_dest;
VX_wb_inter VX_writeback_temp();
assign VX_writeback_inter.wb = VX_writeback_temp.wb;
assign VX_writeback_inter.rd = VX_writeback_temp.rd;
@ -63,6 +53,10 @@ VX_inst_exec_wb_inter VX_inst_exec_wb();
// GPU unit input
VX_gpu_inst_req_inter VX_gpu_inst_req();
// CSR unit inputs
VX_csr_req_inter VX_csr_req();
VX_csr_wb_inter VX_csr_wb();
VX_gpr_stage VX_gpr_stage(
.clk (clk),
.schedule_delay (schedule_delay),
@ -78,7 +72,8 @@ VX_inst_multiplex VX_inst_mult(
.VX_gpr_data (VX_gpr_data),
.VX_exec_unit_req(VX_exec_unit_req),
.VX_lsu_req (VX_lsu_req),
.VX_gpu_inst_req (VX_gpu_inst_req)
.VX_gpu_inst_req (VX_gpu_inst_req),
.VX_csr_req (VX_csr_req)
);
@ -97,12 +92,7 @@ VX_execute_unit VX_execUnit(
.VX_exec_unit_req(VX_exec_unit_req),
.VX_inst_exec_wb (VX_inst_exec_wb),
.VX_jal_rsp (VX_jal_rsp),
.VX_branch_rsp (VX_branch_rsp),
.in_csr_data (csr_decode_csr_data),
.out_csr_address (VX_csr_w_req.csr_address),
.out_is_csr (VX_csr_w_req.is_csr),
.out_csr_result (VX_csr_w_req.csr_result)
.VX_branch_rsp (VX_branch_rsp)
);
@ -111,9 +101,15 @@ VX_gpgpu_inst VX_gpgpu_inst(
.VX_warp_ctl (VX_warp_ctl)
);
VX_csr_wrapper VX_csr_wrapper(
.VX_csr_req(VX_csr_req),
.VX_csr_wb (VX_csr_wb)
);
VX_writeback VX_wb(
.VX_mem_wb (VX_mem_wb),
.VX_inst_exec_wb (VX_inst_exec_wb),
.VX_csr_wb (VX_csr_wb),
.VX_writeback_inter(VX_writeback_temp)
);

35
rtl/VX_csr_wrapper.v Normal file
View file

@ -0,0 +1,35 @@
module VX_csr_wrapper (
VX_csr_req_inter VX_csr_req,
VX_csr_wb_inter VX_csr_wb
);
wire[`NT_M1:0][31:0] thread_ids;
wire[`NT_M1:0][31:0] warp_ids;
genvar cur_t;
for (cur_t = 0; cur_t < `NT; cur_t = cur_t + 1) begin
assign thread_ids[cur_t] = cur_t;
end
genvar cur_tw;
for (cur_tw = 0; cur_tw < `NT; cur_tw = cur_tw + 1) begin
assign warp_ids[cur_tw] = {{(31-`NW_M1){1'b0}}, VX_csr_req.warp_num};
end
assign VX_csr_wb.valid = VX_csr_req.valid;
assign VX_csr_wb.warp_num = VX_csr_req.warp_num;
assign VX_csr_wb.rd = VX_csr_req.rd;
assign VX_csr_wb.wb = VX_csr_req.wb;
wire thread_select = VX_csr_req.csr_address == 12'h20;
wire warp_select = VX_csr_req.csr_address == 12'h21;
assign VX_csr_wb.csr_result = thread_select ? thread_ids :
warp_select ? warp_ids :
0;
endmodule

View file

@ -126,8 +126,7 @@ module VX_decode(
assign VX_frE_to_bckE_req.csr_immed = is_csr_immed;
assign VX_frE_to_bckE_req.is_csr = is_csr;
assign VX_frE_to_bckE_req.wb = (is_jal || is_jalr || is_e_inst) ? `WB_JAL :

View file

@ -10,12 +10,7 @@ module VX_execute_unit (
// JAL Response
VX_jal_response_inter VX_jal_rsp,
// Branch Response
VX_branch_response_inter VX_branch_rsp,
input wire[31:0] in_csr_data,
output wire[11:0] out_csr_address,
output wire out_is_csr,
output reg[31:0] out_csr_result
VX_branch_response_inter VX_branch_rsp
);
@ -27,7 +22,6 @@ module VX_execute_unit (
wire[31:0] in_itype_immed;
wire[2:0] in_branch_type;
wire[19:0] in_upper_immed;
wire[31:0] in_csr_mask;
wire in_jal;
wire[31:0] in_jal_offset;
wire[31:0] in_curr_PC;
@ -39,7 +33,6 @@ module VX_execute_unit (
assign in_itype_immed = VX_exec_unit_req.itype_immed;
assign in_branch_type = VX_exec_unit_req.branch_type;
assign in_upper_immed = VX_exec_unit_req.upper_immed;
assign in_csr_mask = VX_exec_unit_req.csr_mask;
assign in_jal = VX_exec_unit_req.jal;
assign in_jal_offset = VX_exec_unit_req.jal_offset;
assign in_curr_PC = VX_exec_unit_req.curr_PC;
@ -58,7 +51,6 @@ module VX_execute_unit (
.in_itype_immed(in_itype_immed),
.in_upper_immed(in_upper_immed),
.in_alu_op (in_alu_op),
.in_csr_data (in_csr_data),
.in_curr_PC (in_curr_PC),
.out_alu_result(alu_result[index_out_reg])
);
@ -110,18 +102,18 @@ module VX_execute_unit (
assign VX_branch_rsp.branch_dest = $signed(VX_exec_unit_req.curr_PC) + ($signed(VX_exec_unit_req.itype_immed) << 1); // itype_immed = branch_offset
always @(*) begin
case(in_alu_op)
`CSR_ALU_RW: out_csr_result = in_csr_mask;
`CSR_ALU_RS: out_csr_result = in_csr_data | in_csr_mask;
`CSR_ALU_RC: out_csr_result = in_csr_data & (32'hFFFFFFFF - in_csr_mask);
default: out_csr_result = 32'hdeadbeef;
endcase
// always @(*) begin
// case(in_alu_op)
// `CSR_ALU_RW: out_csr_result = in_csr_mask;
// `CSR_ALU_RS: out_csr_result = in_csr_data | in_csr_mask;
// `CSR_ALU_RC: out_csr_result = in_csr_data & (32'hFFFFFFFF - in_csr_mask);
// default: out_csr_result = 32'hdeadbeef;
// endcase
end
// end
assign out_is_csr = VX_exec_unit_req.is_csr;
assign out_csr_address = VX_exec_unit_req.csr_address;
// assign out_is_csr = VX_exec_unit_req.is_csr;
// assign out_csr_address = VX_exec_unit_req.csr_address;
endmodule

View file

@ -42,6 +42,12 @@ module VX_fetch (
.wstall (VX_wstall.wstall),
.wstall_warp_num(VX_wstall.warp_num),
// Split
.is_split (VX_warp_ctl.is_split),
.split_new_mask (VX_warp_ctl.split_new_mask),
.split_later_mask(VX_warp_ctl.split_later_mask),
.split_save_pc (VX_warp_ctl.split_save_pc),
// JAL
.jal (VX_jal_rsp.jal),
.jal_dest (VX_jal_rsp.jal_dest),

View file

@ -16,8 +16,6 @@ module VX_front_end (
VX_frE_to_bckE_req_inter VX_bckE_req,
output wire[11:0] decode_csr_address,
output wire fetch_ebreak
);
@ -81,10 +79,6 @@ VX_d_e_reg vx_d_e_reg(
.VX_bckE_req (VX_bckE_req)
);
assign decode_csr_address = VX_frE_to_bckE_req.csr_address;
endmodule

40
rtl/VX_generic_stack.v Normal file
View file

@ -0,0 +1,40 @@
module VX_generic_stack
#(
parameter WIDTH = 40,
parameter DEPTH = 2
)
(
input wire clk,
input wire reset,
input wire push,
input wire pop,
input wire[WIDTH - 1:0] d,
output reg [WIDTH - 1:0] q,
);
reg [DEPTH - 1:0] ptr;
reg [WIDTH - 1:0] stack [0:(1 << DEPTH) - 1];
always @(posedge clk) begin
if (reset)
ptr <= 0;
else if (push)
ptr <= ptr + 1;
else if (pop)
ptr <= ptr - 1;
end
always @(posedge clk) begin
if (push) begin
if(push)
stack[ptr] <= q;
end
end
always @(*) begin
if (pop)
q <= stack[ptr - 1];
end
endmodule

View file

@ -26,6 +26,32 @@ module VX_gpgpu_inst (
assign VX_warp_ctl.wspawn_pc = 0;
wire[`NT_M1:0] split_new_use_mask;
wire[`NT_M1:0] split_new_later_mask;
// VX_gpu_inst_req.pc
genvar curr_s_t;
for (curr_s_t = 0; curr_s_t < `NT; curr_s_t=curr_s_t+1) begin
wire curr_bool = (VX_gpu_inst_req.a_reg_data == 32'b1);
assign split_new_use_mask[curr_s_t] = VX_gpu_inst_req.valid[curr_s_t] & (curr_bool);
assign split_new_later_mask[curr_s_t] = VX_gpu_inst_req.valid[curr_s_t] & (!curr_bool);
end
reg[$clog2(`NT)-1:0] num_valids;
integer z;
always @(*) begin
num_valids = 0;
for (z = 0; z < `NT; z=z+1) begin
if (VX_gpu_inst_req.valid) num_valids = num_valids + 1
end
end
assign VX_warp_ctl.is_split = (VX_gpu_inst_req.is_split) && (num_valids > 1);
assign VX_warp_ctl.split_new_mask = split_new_use_mask;
assign VX_warp_ctl.split_later_mask = split_new_later_mask;
assign VX_warp_ctl.split_save_pc = VX_gpu_inst_req.pc_next;
// VX_gpu_inst_req.is_wspawn
// VX_gpu_inst_req.is_split
// VX_gpu_inst_req.is_barrier

View file

@ -15,112 +15,112 @@ module VX_gpr (
assign write_enable = valid_write_request && ((VX_writeback_inter.wb != 0) && (VX_writeback_inter.rd != 5'h0));
// byte_enabled_simple_dual_port_ram first_ram(
// .we (write_enable),
// .clk (clk),
// .waddr (VX_writeback_inter.rd),
// .raddr1(VX_gpr_read.rs1),
// .raddr2(VX_gpr_read.rs2),
// .be (VX_writeback_inter.wb_valid),
// .wdata (VX_writeback_inter.write_data),
// .q1 (out_a_reg_data),
// .q2 (out_b_reg_data)
// );
byte_enabled_simple_dual_port_ram first_ram(
.we (write_enable),
.clk (clk),
.waddr (VX_writeback_inter.rd),
.raddr1(VX_gpr_read.rs1),
.raddr2(VX_gpr_read.rs2),
.be (VX_writeback_inter.wb_valid),
.wdata (VX_writeback_inter.write_data),
.q1 (out_a_reg_data),
.q2 (out_b_reg_data)
);
wire[`NT_M1:0][31:0] write_bit_mask;
// wire[`NT_M1:0][31:0] write_bit_mask;
genvar curr_t;
for (curr_t = 0; curr_t < `NT; curr_t=curr_t+1) begin
wire local_write = write_enable & VX_writeback_inter.wb_valid[curr_t];
assign write_bit_mask[curr_t] = {32{~local_write}};
end
// genvar curr_t;
// for (curr_t = 0; curr_t < `NT; curr_t=curr_t+1) begin
// wire local_write = write_enable & VX_writeback_inter.wb_valid[curr_t];
// assign write_bit_mask[curr_t] = {32{~local_write}};
// end
wire going_to_write = write_enable & (|VX_writeback_inter.wb_valid);
// wire going_to_write = write_enable & (|VX_writeback_inter.wb_valid);
wire cenb = !going_to_write;
// wire cenb = !going_to_write;
wire cena_1 = (VX_gpr_read.rs1 == 0);
wire cena_2 = (VX_gpr_read.rs2 == 0);
// wire cena_1 = (VX_gpr_read.rs1 == 0);
// wire cena_2 = (VX_gpr_read.rs2 == 0);
// wire[127:0] write_bit_mask = {{32{~(VX_writeback_inter.wb_valid[3])}}, {32{~(VX_writeback_inter.wb_valid[2])}}, {32{~(VX_writeback_inter.wb_valid[1])}}, {32{~(VX_writeback_inter.wb_valid[0])}}};
/* verilator lint_off PINCONNECTEMPTY */
rf2_32x128_wm1 first_ram (
.CENYA(),
.AYA(),
.CENYB(),
.WENYB(),
.AYB(),
.QA(out_a_reg_data),
.SOA(),
.SOB(),
.CLKA(clk),
.CENA(cena_1),
.AA(VX_gpr_read.rs1),
.CLKB(clk),
.CENB(cenb),
.WENB(write_bit_mask),
.AB(VX_writeback_inter.rd),
.DB(VX_writeback_inter.write_data),
.EMAA(3'b011),
.EMASA(1'b0),
.EMAB(3'b011),
.TENA(1'b1),
.TCENA(1'b0),
.TAA(5'b0),
.TENB(1'b1),
.TCENB(1'b0),
.TWENB(128'b0),
.TAB(5'b0),
.TDB(128'b0),
.RET1N(1'b1),
.SIA(2'b0),
.SEA(1'b0),
.DFTRAMBYP(1'b0),
.SIB(2'b0),
.SEB(1'b0),
.COLLDISN(1'b1)
);
/* verilator lint_on PINCONNECTEMPTY */
// // wire[127:0] write_bit_mask = {{32{~(VX_writeback_inter.wb_valid[3])}}, {32{~(VX_writeback_inter.wb_valid[2])}}, {32{~(VX_writeback_inter.wb_valid[1])}}, {32{~(VX_writeback_inter.wb_valid[0])}}};
// /* verilator lint_off PINCONNECTEMPTY */
// rf2_32x128_wm1 first_ram (
// .CENYA(),
// .AYA(),
// .CENYB(),
// .WENYB(),
// .AYB(),
// .QA(out_a_reg_data),
// .SOA(),
// .SOB(),
// .CLKA(clk),
// .CENA(cena_1),
// .AA(VX_gpr_read.rs1),
// .CLKB(clk),
// .CENB(cenb),
// .WENB(write_bit_mask),
// .AB(VX_writeback_inter.rd),
// .DB(VX_writeback_inter.write_data),
// .EMAA(3'b011),
// .EMASA(1'b0),
// .EMAB(3'b011),
// .TENA(1'b1),
// .TCENA(1'b0),
// .TAA(5'b0),
// .TENB(1'b1),
// .TCENB(1'b0),
// .TWENB(128'b0),
// .TAB(5'b0),
// .TDB(128'b0),
// .RET1N(1'b1),
// .SIA(2'b0),
// .SEA(1'b0),
// .DFTRAMBYP(1'b0),
// .SIB(2'b0),
// .SEB(1'b0),
// .COLLDISN(1'b1)
// );
// /* verilator lint_on PINCONNECTEMPTY */
/* verilator lint_off PINCONNECTEMPTY */
rf2_32x128_wm1 second_ram (
.CENYA(),
.AYA(),
.CENYB(),
.WENYB(),
.AYB(),
.QA(out_b_reg_data),
.SOA(),
.SOB(),
.CLKA(clk),
.CENA(cena_2),
.AA(VX_gpr_read.rs2),
.CLKB(clk),
.CENB(cenb),
.WENB(write_bit_mask),
.AB(VX_writeback_inter.rd),
.DB(VX_writeback_inter.write_data),
.EMAA(3'b011),
.EMASA(1'b0),
.EMAB(3'b011),
.TENA(1'b1),
.TCENA(1'b0),
.TAA(5'b0),
.TENB(1'b1),
.TCENB(1'b0),
.TWENB(128'b0),
.TAB(5'b0),
.TDB(128'b0),
.RET1N(1'b1),
.SIA(2'b0),
.SEA(1'b0),
.DFTRAMBYP(1'b0),
.SIB(2'b0),
.SEB(1'b0),
.COLLDISN(1'b1)
);
/* verilator lint_on PINCONNECTEMPTY */
// /* verilator lint_off PINCONNECTEMPTY */
// rf2_32x128_wm1 second_ram (
// .CENYA(),
// .AYA(),
// .CENYB(),
// .WENYB(),
// .AYB(),
// .QA(out_b_reg_data),
// .SOA(),
// .SOB(),
// .CLKA(clk),
// .CENA(cena_2),
// .AA(VX_gpr_read.rs2),
// .CLKB(clk),
// .CENB(cenb),
// .WENB(write_bit_mask),
// .AB(VX_writeback_inter.rd),
// .DB(VX_writeback_inter.write_data),
// .EMAA(3'b011),
// .EMASA(1'b0),
// .EMAB(3'b011),
// .TENA(1'b1),
// .TCENA(1'b0),
// .TAA(5'b0),
// .TENB(1'b1),
// .TCENB(1'b0),
// .TWENB(128'b0),
// .TAB(5'b0),
// .TDB(128'b0),
// .RET1N(1'b1),
// .SIA(2'b0),
// .SEA(1'b0),
// .DFTRAMBYP(1'b0),
// .SIB(2'b0),
// .SEB(1'b0),
// .COLLDISN(1'b1)
// );
// /* verilator lint_on PINCONNECTEMPTY */
endmodule

View file

@ -6,21 +6,24 @@ module VX_inst_multiplex (
// Outputs
VX_exec_unit_req_inter VX_exec_unit_req,
VX_lsu_req_inter VX_lsu_req,
VX_gpu_inst_req_inter VX_gpu_inst_req
VX_gpu_inst_req_inter VX_gpu_inst_req,
VX_csr_req_inter VX_csr_req
);
wire[`NT_M1:0] is_mem_mask;
wire[`NT_M1:0] is_gpu_mask;
wire[`NT_M1:0] is_csr_mask;
wire is_mem = (VX_bckE_req.mem_write != `NO_MEM_WRITE) || (VX_bckE_req.mem_read != `NO_MEM_READ);
wire is_gpu = (VX_bckE_req.is_wspawn || VX_bckE_req.is_tmc || VX_bckE_req.is_barrier || VX_bckE_req.is_split);
wire is_csr = VX_bckE_req.is_csr;
// wire is_gpu = 0;
genvar currT;
for (currT = 0; currT < `NT; currT = currT + 1) begin
assign is_mem_mask[currT] = is_mem;
assign is_gpu_mask[currT] = is_gpu;
assign is_csr_mask[currT] = is_csr;
end
// LSU Unit
@ -38,7 +41,7 @@ module VX_inst_multiplex (
// Execute Unit
assign VX_exec_unit_req.valid = VX_bckE_req.valid & (~is_mem_mask & ~is_gpu_mask);
assign VX_exec_unit_req.valid = VX_bckE_req.valid & (~is_mem_mask & ~is_gpu_mask & ~is_csr_mask);
assign VX_exec_unit_req.warp_num = VX_bckE_req.warp_num;
assign VX_exec_unit_req.curr_PC = VX_bckE_req.curr_PC;
assign VX_exec_unit_req.PC_next = VX_bckE_req.PC_next;
@ -57,10 +60,6 @@ module VX_inst_multiplex (
assign VX_exec_unit_req.jal = VX_bckE_req.jal;
assign VX_exec_unit_req.jal_offset = VX_bckE_req.jal_offset;
assign VX_exec_unit_req.ebreak = VX_bckE_req.ebreak;
assign VX_exec_unit_req.is_csr = VX_bckE_req.is_csr;
assign VX_exec_unit_req.csr_address = VX_bckE_req.csr_address;
assign VX_exec_unit_req.csr_immed = VX_bckE_req.csr_immed;
assign VX_exec_unit_req.csr_mask = VX_bckE_req.csr_mask;
// GPR Req
@ -72,6 +71,18 @@ module VX_inst_multiplex (
assign VX_gpu_inst_req.is_barrier = VX_bckE_req.is_barrier;
assign VX_gpu_inst_req.a_reg_data = VX_gpr_data.a_reg_data;
assign VX_gpu_inst_req.rd2 = VX_gpr_data.b_reg_data[0];
assign VX_gpu_inst_req.pc_next = VX_bckE_req.PC_next;
// CSR Req
assign VX_csr_req.valid = VX_bckE_req.valid & is_csr_mask;
assign VX_csr_req.warp_num = VX_bckE_req.warp_num;
assign VX_csr_req.rd = VX_bckE_req.rd;
assign VX_csr_req.wb = VX_bckE_req.wb;
assign VX_csr_req.is_csr = VX_bckE_req.is_csr;
assign VX_csr_req.csr_address = VX_bckE_req.csr_address;
assign VX_csr_req.csr_immed = VX_bckE_req.csr_immed;
assign VX_csr_req.csr_mask = VX_bckE_req.csr_mask;
endmodule

View file

@ -20,6 +20,12 @@ module VX_warp_scheduler (
input wire wstall,
input wire[`NW_M1:0] wstall_warp_num,
// Split
input wire is_split,
input wire[`NT_M1:0] split_new_mask,
input wire[`NT_M1:0] split_later_mask,
input wire[31:0] split_save_pc,
// JAL
input wire jal,
input wire[31:0] jal_dest,

View file

@ -7,6 +7,8 @@ module VX_writeback (
VX_inst_mem_wb_inter VX_mem_wb,
// EXEC Unit WB info
VX_inst_exec_wb_inter VX_inst_exec_wb,
// CSR Unit WB info
VX_csr_wb_inter VX_csr_wb,
// Actual WB to GPR
VX_wb_inter VX_writeback_inter
@ -16,66 +18,34 @@ module VX_writeback (
wire exec_wb = (VX_inst_exec_wb.wb != 0) && (|VX_inst_exec_wb.wb_valid);
wire mem_wb = (VX_mem_wb.wb != 0) && (|VX_mem_wb.wb_valid);
wire csr_wb = (VX_csr_wb.wb != 0) && (|VX_csr_wb.valid);
assign VX_writeback_inter.write_data = exec_wb ? VX_inst_exec_wb.alu_result :
mem_wb ? VX_mem_wb.loaded_data :
csr_wb ? VX_csr_wb.csr_result :
0;
assign VX_writeback_inter.wb_valid = exec_wb ? VX_inst_exec_wb.wb_valid :
mem_wb ? VX_mem_wb.wb_valid :
csr_wb ? VX_csr_wb.valid :
0;
assign VX_writeback_inter.rd = exec_wb ? VX_inst_exec_wb.rd :
mem_wb ? VX_mem_wb.rd :
csr_wb ? VX_csr_wb.rd :
0;
assign VX_writeback_inter.wb = exec_wb ? VX_inst_exec_wb.wb :
mem_wb ? VX_mem_wb.wb :
csr_wb ? VX_csr_wb.wb :
0;
assign VX_writeback_inter.wb_warp_num = exec_wb ? VX_inst_exec_wb.wb_warp_num :
mem_wb ? VX_mem_wb.wb_warp_num :
csr_wb ? VX_csr_wb.warp_num :
0;
// wire[`NT_M1:0][31:0] in_alu_result = VX_mw_wb.alu_result;
// wire[`NT_M1:0][31:0] in_mem_result = VX_mw_wb.mem_result;
// wire[4:0] in_rd = VX_mw_wb.rd;
// wire[1:0] in_wb = VX_mw_wb.wb;
// wire[31:0] in_PC_next = VX_mw_wb.PC_next;
// wire[`NT_M1:0] in_valid = VX_mw_wb.valid;
// wire [`NW_M1:0] in_warp_num = VX_mw_wb.warp_num;
// wire is_jal;
// wire uses_alu;
// wire[`NT_M1:0][31:0] out_pc_data;
// genvar i;
// generate
// for (i = 0; i < `NT; i=i+1)
// begin
// assign out_pc_data[i] = in_PC_next;
// end
// endgenerate
// // assign out_pc_data[0] = in_PC_next;
// // assign out_pc_data[1] = in_PC_next;
// assign is_jal = in_wb == `WB_JAL;
// assign uses_alu = in_wb == `WB_ALU;
// assign VX_writeback_inter.write_data = is_jal ? out_pc_data :
// uses_alu ? in_alu_result :
// in_mem_result;
// assign VX_writeback_inter.wb_valid = in_valid;
// assign VX_writeback_inter.rd = in_rd;
// assign VX_writeback_inter.wb = in_wb;
// assign VX_writeback_inter.wb_warp_num = in_warp_num;
endmodule // VX_writeback

View file

@ -51,9 +51,7 @@ VX_branch_response_inter VX_branch_rsp(); // Branch Resolution to Fetc
VX_jal_response_inter VX_jal_rsp(); // Jump resolution to Fetch
// CSR Buses
VX_csr_write_request_inter VX_csr_w_req();
wire[31:0] csr_decode_csr_data;
wire[11:0] decode_csr_address;
// VX_csr_write_request_inter VX_csr_w_req();
VX_warp_ctl_inter VX_warp_ctl();
@ -68,7 +66,6 @@ VX_front_end vx_front_end(
.reset (reset),
.VX_warp_ctl (VX_warp_ctl),
.VX_bckE_req (VX_bckE_req),
.decode_csr_address (decode_csr_address),
.schedule_delay (schedule_delay),
.icache_response_fe (icache_response_fe),
.icache_request_fe (icache_request_fe),
@ -91,24 +88,22 @@ VX_back_end vx_back_end(
.schedule_delay (schedule_delay),
.VX_warp_ctl (VX_warp_ctl),
.VX_bckE_req (VX_bckE_req),
.csr_decode_csr_data (csr_decode_csr_data),
.VX_jal_rsp (VX_jal_rsp),
.VX_branch_rsp (VX_branch_rsp),
.VX_dcache_rsp (VX_dcache_rsp),
.VX_dcache_req (VX_dcache_req),
.VX_csr_w_req (VX_csr_w_req),
.VX_writeback_inter (VX_writeback_inter),
.out_mem_delay (memory_delay)
);
VX_csr_handler vx_csr_handler(
.clk (clk),
.in_decode_csr_address(decode_csr_address),
.VX_csr_w_req (VX_csr_w_req),
.in_wb_valid (VX_writeback_inter.wb_valid[0]),
// VX_csr_handler vx_csr_handler(
// .clk (clk),
// .in_decode_csr_address(decode_csr_address),
// .VX_csr_w_req (VX_csr_w_req),
// .in_wb_valid (VX_writeback_inter.wb_valid[0]),
.out_decode_csr_data (csr_decode_csr_data)
);
// .out_decode_csr_data (csr_decode_csr_data)
// );

View file

@ -0,0 +1,24 @@
`include "../VX_define.v"
`ifndef VX_CSR_REQ
`define VX_CSR_REQ
interface VX_csr_req_inter ();
wire[`NT_M1:0] valid;
wire[`NW_M1:0] warp_num;
wire[4:0] rd;
wire[1:0] wb;
wire is_csr;
wire[11:0] csr_address;
wire csr_immed;
wire[31:0] csr_mask;
endinterface
`endif

View file

@ -0,0 +1,21 @@
`include "../VX_define.v"
`ifndef VX_CSR_WB_REQ
`define VX_CSR_WB_REQ
interface VX_csr_wb_inter ();
wire[`NT_M1:0] valid;
wire[`NW_M1:0] warp_num;
wire[4:0] rd;
wire[1:0] wb;
wire[`NT_M1:0][31:0] csr_result;
endinterface
`endif

View file

@ -1,18 +0,0 @@
`include "../VX_define.v"
`ifndef VX_CSR_W_REQ
`define VX_CSR_W_REQ
interface VX_csr_write_request_inter ();
wire is_csr;
wire[11:0] csr_address;
wire[31:0] csr_result;
endinterface
`endif

View file

@ -13,6 +13,8 @@ interface VX_gpu_inst_req_inter();
wire is_split;
wire is_barrier;
wire pc_next;
wire[`NT_M1:0][31:0] a_reg_data;
wire[31:0] rd2;

View file

@ -16,6 +16,13 @@ interface VX_warp_ctl_inter ();
wire ebreak;
wire is_split;
wire[`NT_M1:0] split_new_mask;
wire[`NT_M1:0] split_later_mask;
wire[31:0] split_save_pc;
endinterface

View file

@ -1,7 +1,7 @@
# Dynamic Instructions: 15
# of total cycles: 28
# Dynamic Instructions: 12
# of total cycles: 25
# of forwarding stalls: 0
# of branch stalls: 0
# CPI: 1.86667
# time to simulate: 6.95313e-310 milliseconds
# CPI: 2.08333
# time to simulate: 6.95312e-310 milliseconds
# GRADE: Failed on test: 4294967295

View file

@ -3,7 +3,7 @@ set link_library [concat * sc12mc_cln28hpm_base_ulvt_c35_ssg_typical_max_0p81v_
set symbol_library {}
set target_library [concat sc12mc_cln28hpm_base_ulvt_c35_ssg_typical_max_0p81v_m40c.db]
set verilog_files [ list VX_gpgpu_inst.v VX_gpu_inst_req_inter.v VX_wstall_inter.v VX_inst_exec_wb_inter.v VX_lsu.v VX_execute_unit.v VX_lsu_addr_gen.v VX_inst_multiplex.v VX_exec_unit_req_inter.v VX_lsu_req_inter.v VX_alu.v VX_back_end.v VX_gpr_stage.v VX_gpr_data_inter.v VX_csr_handler.v VX_decode.v VX_define.v VX_scheduler.v VX_fetch.v VX_front_end.v VX_generic_register.v VX_gpr.v VX_gpr_wrapper.v VX_one_counter.v VX_priority_encoder.v VX_warp.v VX_warp_scheduler.v VX_writeback.v Vortex.v byte_enabled_simple_dual_port_ram.v VX_branch_response_inter.v VX_csr_write_request_inter.v VX_dcache_request_inter.v VX_dcache_response_inter.v VX_frE_to_bckE_req_inter.v VX_gpr_clone_inter.v VX_gpr_jal_inter.v VX_gpr_read_inter.v VX_gpr_wspawn_inter.v VX_icache_request_inter.v VX_icache_response_inter.v VX_inst_mem_wb_inter.v VX_inst_meta_inter.v VX_jal_response_inter.v VX_mem_req_inter.v VX_mw_wb_inter.v VX_warp_ctl_inter.v VX_wb_inter.v VX_d_e_reg.v VX_f_d_reg.v \
set verilog_files [ list VX_csr_wrapper.v VX_csr_req_inter.v VX_csr_wb_inter.v VX_gpgpu_inst.v VX_gpu_inst_req_inter.v VX_wstall_inter.v VX_inst_exec_wb_inter.v VX_lsu.v VX_execute_unit.v VX_lsu_addr_gen.v VX_inst_multiplex.v VX_exec_unit_req_inter.v VX_lsu_req_inter.v VX_alu.v VX_back_end.v VX_gpr_stage.v VX_gpr_data_inter.v VX_csr_handler.v VX_decode.v VX_define.v VX_scheduler.v VX_fetch.v VX_front_end.v VX_generic_register.v VX_gpr.v VX_gpr_wrapper.v VX_one_counter.v VX_priority_encoder.v VX_warp.v VX_warp_scheduler.v VX_writeback.v Vortex.v byte_enabled_simple_dual_port_ram.v VX_branch_response_inter.v VX_dcache_request_inter.v VX_dcache_response_inter.v VX_frE_to_bckE_req_inter.v VX_gpr_clone_inter.v VX_gpr_jal_inter.v VX_gpr_read_inter.v VX_gpr_wspawn_inter.v VX_icache_request_inter.v VX_icache_response_inter.v VX_inst_mem_wb_inter.v VX_inst_meta_inter.v VX_jal_response_inter.v VX_mem_req_inter.v VX_mw_wb_inter.v VX_warp_ctl_inter.v VX_wb_inter.v VX_d_e_reg.v VX_f_d_reg.v \
]
analyze -format sverilog $verilog_files