CACHE WORKING just needs lb/sb

This commit is contained in:
felsabbagh3
2019-10-25 03:03:09 -04:00
parent 1e648c5819
commit 01efe02e8b
19 changed files with 2302 additions and 2358 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,405 +1,396 @@
:0200000480007A
:1000000037050200930570002322B500130000009D
:100010001300000013000000032645001305000034
:100020006B000500938B0600130D0700130F0100F2
: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
:1000000037F1FF7FEF101004130500006B000500AF
:10001000938B0600130D0700130F010093030500D7
:1000200013051000635C75001301018013030500C4
:100030006B500300130515006FF0DFFE1300000086
:100040001300000013000000130000001300000064
:100050001300000013010F0013050000930F0600AA
:10006000938D030013000000130000001300000034
:100070001300000013000000130000001300000034
:1000800013000000EBE0BF011300000013000000AC
:100090001300000013000000130000001300000014
:1000A000170500001305451B6B40050017030000F2
:1000B000130343F66B000300678000001702000182
:1000C000130282252320020023221200232422006F
:1000D0002326320023284200232A5200232C6200C8
:1000E000232E720023208202232292022324A202C2
:1000F0002326B2022328C202232AD202232CE202A0
:10010000232EF20223200205232212052324220596
:100110002326320523284205232A5205232C620573
:10012000232E720523208207232292072324A2076D
:100130002326B2072328C207232AD207232CE2074B
:10014000232EF2071302100067800000170200013F
:100150001302821C0320020083204200032182003C
:100160008321C20003220201832242010323820170
:100170008323C20103240202832442020325820254
:100180008325C20203260203832642030327820338
:100190008327C2030328020483284204032982041C
:1001A0008329C204032A0205832A4205032B820500
:1001B000832BC205032C0206832C4206032D8206E4
:1001C000832DC206032E0207832E4207032F8207C8
:1001D000832FC2071302000067800000732500020E
:1001E000678000007325100267800000130101FE84
:1001F000232E1100232C810013040102232604FE68
:100200006F0040030327C4FEB7170000938747978A
:100210003307F702B707008193874741B307F70019
:1002200013850700EF0000448327C4FE938717005F
:100230002326F4FE0327C4FE9307F001E3D4E7FC72
:10024000130000008320C101032481011301010276
:1002500067800000130101FD23261102232481027F
:100260002322A103130401031300000013070D0050
:10027000B7170000938747973307F702B707008146
:1002800093874741B307F70013850700EF004050FD
:1002900093070500638A070213070D00B707008163
:1002A000131727009387C726B307F700130710001B
:1002B00023A0E70093070D0063960700EFF01FE906
:1002C0006F00C0057300000013070D00B717000092
:1002D000938747973307F702B70700819387474112
:1002E000B307F700130784FD930507001385070084
:1002F000EF000040832704FE138107008327C4FD1D
:10030000832584FD032644FE832684FE0327C4FE42
:1003100013850700EFF0DFCF730000008320C102D8
:1003200003248102032D41021301010367800000B1
:10033000130101FB23261104232481041304010566
:10034000EFF0DFE92324A4FE9309010093071000D6
:100350002326F4FE6F00C0080327C4FEB717000071
:10036000938747973307F702B70700819387474181
:10037000B307F70013850700EF00804193070500DE
:10038000639A07040327C4FEB717000093874797B3
:100390003307F702B707008193874741B307F70098
:1003A000130704FD9305070013850700EF00403491
:1003B000832784FD13810700832744FD832504FDE3
:1003C0000326C4FD832604FE032744FE138507008D
:1003D000EFF0DFCD8327C4FE938717002326F4FEBA
:1003E0008327C4FE032784FEE3E8E7F613810900B0
:1003F000EFF0DFCC9307020063880704B7070081A2
:1004000013854741EF00C03893070500639E07023C
:10041000930784FB93850700B70700811385474145
:10042000EF00002D832704FC138107008327C4FB02
:10043000832584FB032644FC832684FC0327C4FC19
:1004400013850700EFF0DFBC130000008320C10418
:10045000032481041301010567800000130101FBDF
:10046000232611042324810413040105232EA4FA56
:10047000232CB4FA232AC4FA2328D4FAEFF01FD786
:10048000EFF0DFD52322A4FE13090100232604FE8A
:10049000232404FE6F000009B709FFFF3301310177
:1004A000832784FE2326F4FC832784FB2328F4FC83
:1004B00093070100232AF4FC832744FB232CF4FC3C
:1004C000832704FB232EF4FC8327C4FE2320F4FEA1
:1004D0000327C4FEB7170000938747973307F70237
:1004E000B707008193874741B307F7001307C4FCA0
:1004F0009305070013850700EF0000198327C4FE4A
:10050000938717002326F4FE8327C4FE032744FEA7
:1005100063E4E700232604FE832784FE9387170005
:100520002324F4FE032784FE8327C4FBE366F7F647
:1005300013010900EFF0DFDF130000008320C10486
:10054000032481041301010567800000130101FDEC
:10055000232611022324810213040103232EA4FC69
:100560008325C4FDB707008113850704EF00802DA4
:10057000EFF0DFC62320A4FE232604FE6F008006D2
:10058000930710002326F4FE232404FE6F00C0030B
:10059000B7070081032784FE131727009387C72618
:1005A000B307F70003A70700930710006318F700CD
:1005B0008327C4FE938717002326F4FE832784FE37
:1005C000938717002324F4FE032784FE9307F0018A
:1005D000E3D0E7FC8325C4FEB70700811385C70479
:1005E000EF0040260327C4FE8327C4FDE36AF7F823
:1005F000232204FE6F008002B7070081032744FE18
:10060000131727009387C726B307F70023A0070017
:10061000832744FE938717002322F4FE832744FE9A
:10062000032704FEE3EAE7FC130000008320C10275
:10063000032481021301010367800000130101FFFD
:1006400023268100232471011304010193870B00E9
:10065000138507000324C100832B810013010101CE
:1006600067800000930205001303000093037000ED
:1006700023A0620023A2620023A4620023A67200CA
:1006800023A86200678000009302050003A3820094
:100690001303130023A462001383420183AE4200BC
:1006A00093935E003303730003AE05002320C30160
:1006B00003AE45002322C30103AE85002324C301FA
:1006C00003AEC5002326C30103AE05012328C301E1
:1006D00003AE4501232AC301938E1E00130F20038E
:1006E0006394EE01930E000023A2D2016780000004
:1006F0009302050003A38200130000001300000012
:10070000130000001300000013000000130000009D
:100710001303F3FF23A462001383420183AE02009C
:10072000930F2003138F0E00130F1F006314FF019C
:10073000130F000023A0E20193935E0033037300C4
:10074000032E030023A0C501032E430023A2C501ED
:10075000032E830023A4C501032EC30023A6C501D5
:10076000032E030123A8C501032E430123AAC501BB
:10077000678000009302050003A3820013050000B8
:10078000130E200363146E0013051500678000002C
:100790009302050003A3820013050000130E00005E
:1007A00063146E00130515006780000093020500B6
:1007B00003A3C20083A3020133B563006780000076
:1007C000130141FF232011002322B10083450500BE
:1007D00063880500EF00C001130515006FF01FFFCF
:1007E00083200100832541001301C10067800000C0
:1007F000B708010023A0B80067800000130101FEC4
:10080000232E1100232C8100130401022326A4FEB1
:10081000B70700810327C4FE131727009387871AA1
:10082000B307F70083A7070013850700EFF05FF910
:10083000130000008320C101032481011301010280
:1008400067800000130101FE232E1100232C81007C
:10085000130401022326A4FE2324B4FE0325C4FEB0
:10086000EFF01FF6032584FEEFF05FF9B707008174
:1008700013854709EFF0DFF4130000008320C10166
:10088000032481011301010267800000130101FDAF
:10089000232611022324810213040103232EA4FC26
:1008A000232CB4FC232AC4FC2328D4FCB767028180
:1008B0000327C4FD23AEE71AB76702819387C71BDE
:1008C000032784FD23A2E700B76702819387C71B34
:1008D000032744FD23A4E700B76702819387C71B62
:1008E000032704FD23A6E700EFF0DF8F2324A4FEF7
:1008F000032704FD832784FEB357F7022326F4FE63
:10090000032704FD832784FEB377F702638807007B
:100910008327C4FE938717002326F4FEB76702815E
:100920009387C71B0327C4FE23A8E700032704FD02
:10093000832784FE6362F702B76702819386C71B31
:10094000B71700801386079B832584FE032504FDCB
:10095000EFF0DFB06F000002B76702819386C71B1C
:10096000B71700801386079B832504FD032504FD2C
:10097000EFF0DFAEEFF09F862322A4FE032704FDF5
:10098000832744FE63F8E700032544FEEFF01FBC15
:100990006F00C000032504FDEFF05FBB13000000F3
:1009A0008320C10203248102130101036780000038
:1009B000130101FA232E1104232C810413040106D0
:1009C0002326A4FA2324B4FAEFF05FC7232CA4FC57
:1009D000832784FD83A70700232AF4FC832784FD53
:1009E00083A747002328F4FC832784FD83A787007F
:1009F0002326F4FC832784FD83A707012326F4FE26
:100A00000327C4FE8327C4FAB307F7022324F4FEA6
:100A10008327C4FE639A0700930710002326F4FE81
:100A20008327C4FA2324F4FE832784FD83A7C70009
:100A30002324F4FC232204FE6F00800D232004FEF7
:100A4000232E04FC6F008007032784FA832784FC8D
:100A5000B307F7020327C4FDB307F7002322F4FC12
:100A6000032784FC8327C4FDB307F702032784FE12
:100A7000B307F7002320F4FC832744FC9397270057
:100A8000032744FDB307F70003A70700832704FCEF
:100A900093972700832604FDB387F60083A70700FA
:100AA000B307F702032704FEB307F7002320F4FE81
:100AB0008327C4FD93871700232EF4FC0327C4FD6E
:100AC000832784FCE362F7F8032784FA832784FCF6
:100AD0003307F702832784FEB307F700232EF4FAC7
:100AE0008327C4FB939727000327C4FCB307F700B1
:100AF000032704FE23A0E700832784FE93871700C3
:100B00002324F4FE832744FE938717002322F4FE58
:100B1000832744FE0327C4FEE3E2E7F2130000004C
:100B20008320C105032481051301010667800000AD
:100B3000130101FC232E1102232C81021304010452
:100B4000232EA4FC232CB4FC232AC4FC2328D4FC8D
:100B50002326E4FCB76702810327C4FD23A8E71C12
:100B6000B76702819387071D032784FD23A2E7004F
:100B7000B76702819387071D032744FD23A4E7007D
:100B8000B76702819387071D0327C4FC23A6E700EC
:100B9000B76702819387071D032704FD23A8E70099
:100BA000EFF04FE42324A4FE0327C4FC832784FE34
:100BB000B357F7022326F4FE0327C4FC832784FEE1
:100BC000B377F702638807008327C4FE9387170073
:100BD0002326F4FEB76702819387071D0327C4FE0F
:100BE00023AAE7000327C4FC832784FE6362F7027D
:100BF000B76702819386071DB7170080138687C6E3
:100C0000832584FE032504FDEFF05F856F0000025D
:100C1000B76702819386071DB7170080138687C6C2
:100C20008325C4FC032504FDEFF05F83EFF00FDBA9
:100C30002322A4FE032704FD832744FE63F8E70074
:100C4000032544FEEFF09F906F00C000032504FDD4
:100C5000EFF0DF8F130000008320C1030324810322
:100C60001301010467800000130101FB2326110416
:100C70002324810413040105232EA4FA232CB4FA9F
:100C8000EFF0DF9B2320A4FE832704FE83A7070049
:100C9000232EF4FC832704FE83A74700232CF4FCB7
:100CA000832704FE83A78700232AF4FC832704FEFE
:100CB00083A747012326F4FE0327C4FE8327C4FB32
:100CC000B307F7022324F4FE8327C4FE639A0700C8
:100CD000930710002326F4FE8327C4FB2324F4FE8D
:100CE000832704FE83A7C7002328F4FC232204FEE5
:100CF0006F00000C032784FB832704FD3307F702F2
:100D0000832784FEB307F7002326F4FC032784FE21
:100D1000832704FDB337F70093F7F70F2324F4FC80
:100D2000832784FC93B71700A303F4FC834774FC68
:100D3000138F0700B7170080938FC7D96B200F0060
:100D40007B70FF018327C4FC939727000327C4FD12
:100D5000B307F70083A607008327C4FC93972700F7
:100D6000032784FDB307F70003A707008327C4FC0C
:100D700093972700032644FDB307F6003387E60068
:100D800023A0E700832784FE938717002324F4FE23
:100D9000B7170080138E07DA67000E0013000000FB
:100DA0006B300000832744FE938717002322F4FE54
:100DB000832744FE0327C4FEE3EEE7F2130000009E
:100DC0008320C1040324810413010105678000000E
:100DD000130101FC232E1102232C810213040104B0
:100DE000232EA4FC232CB4FC232AC4FC2328D4FCEB
:100DF0002326E4FCB76702810327C4FD23A8E71C70
:100E0000B76702819387071D032784FD23A2E700AC
:100E1000B76702819387071D032744FD23A4E700DA
:100E2000B76702819387071D0327C4FC23A6E70049
:100E3000B76702819387071D032704FD23A8E700F6
:100E4000EFF04FBA2324A4FE0327C4FC832784FEBB
:100E5000B357F7022326F4FE0327C4FC832784FE3E
:100E6000B377F702638807008327C4FE93871700D0
:100E70002326F4FEB76702819387071D0327C4FE6C
:100E800023AAE7000327C4FC832784FE6362F702DA
:100E9000B76702819386071DB7170080138687F016
:100EA000832584FE032504FDEFF04FDB6F00000275
:100EB000B76702819386071DB7170080138687F0F6
:100EC0008325C4FC032504FDEFF04FD9EFF00FB1EB
:100ED0002322A4FE032704FD832744FE63F8E700D2
:100EE000032544FEEFF08FE66F00C000032504FDEC
:100EF000EFF0CFE5130000008320C103032481033A
:100F00001301010467800000130101FB2326110473
:100F10002324810413040105232EA4FA232CB4FAFC
:100F2000EFF0CFF12320A4FE832704FE83A7070060
:100F3000232EF4FC832704FE83A74700232CF4FC14
:100F4000832704FE83A78700232AF4FC832704FE5B
:100F500083A747012326F4FE0327C4FE8327C4FB8F
:100F6000B307F7022324F4FE8327C4FE639A070025
:100F7000930710002326F4FE8327C4FB2324F4FEEA
:100F8000832704FE83A7C7002328F4FC232204FE42
:100F90006F00000C032784FB832704FD3307F7024F
:100FA000832784FEB307F7002326F4FC032784FE7F
:100FB000832704FDB337F70093F7F70F2324F4FCDE
:100FC000832784FC93B71700A303F4FC834774FCC6
:100FD000138F0700B7170080938FC7036B200F0094
:100FE0007B70FF018327C4FC939727000327C4FD70
:100FF000B307F70083A607008327C4FC9397270055
:10100000032784FDB307F70003A707008327C4FC69
:1010100093972700032644FDB307F6003387E64085
:1010200023A0E700832784FE938717002324F4FE80
:10103000B7170080138E070467000E00130000002E
:101040006B300000832744FE938717002322F4FEB1
:10105000832744FE0327C4FEE3EEE7F213000000FB
:101060008320C1040324810413010105678000006B
:10107000130101FC232E1102232C8102130401040D
:10108000232EA4FC232CB4FC232AC4FC2328D4FC48
:101090002326E4FCB76702810327C4FD23A4E71ECF
:1010A000B76702819387871E032784FD23A2E70089
:1010B000B76702819387871E032744FD23A4E700B7
:1010C000B76702819387871E0327C4FC23A6E70026
:1010D000B76702819387871E032704FD23A8E700D3
:1010E000EFF04F902324A4FE0327C4FC832784FE43
:1010F000B357F7022326F4FE0327C4FC832784FE9C
:10110000B377F702638807008327C4FE938717002D
:101110002326F4FEB76702819387871E0327C4FE48
:1011200023AAE7000327C4FC832784FE6362F70237
:10113000B76702819386871EB71700801386871AC8
:10114000832584FE032504FDEFF04FB16F000002FC
:10115000B76702819386871EB71700801386871AA8
:101160008325C4FC032504FDEFF04FAFEFF00F879C
:101170002322A4FE032704FD832744FE63F8E7002F
:10118000032544FEEFF08FBC6F00C000032504FD73
:10119000EFF0CFBB130000008320C10303248103C1
:1011A0001301010467800000130101FB23261104D1
:1011B0002324810413040105232EA4FA232CB4FA5A
:1011C000EFF0CFC72320A4FE832704FE83A70700E8
:1011D000232EF4FC832704FE83A7470083A7070080
:1011E000232CF4FC832704FE83A78700232AF4FC26
:1011F000832704FE83A747012326F4FE0327C4FEAA
:101200008327C4FBB307F7022324F4FE8327C4FE1D
:10121000639A0700930710002326F4FE8327C4FB7C
:101220002324F4FE832704FE83A7C7002328F4FCAD
:10123000232204FE6F00000B032784FB832704FD99
:101240003307F702832784FEB307F7002326F4FC55
:10125000032784FE832704FDB337F70093F7F70FC6
:101260002324F4FC832784FC93B71700A303F4FC26
:10127000834774FC138F0700B7170080938F072DE7
:101280006B200F007B70FF018327C4FC939727001E
:101290000327C4FDB307F70083A607008327C4FC18
:1012A00093972700032744FDB307F700032784FD26
:1012B0003387E60023A0E700832784FE9387170087
:1012C0002324F4FEB7170080138E472D67000E000D
:1012D000130000006B300000832744FE9387170043
:1012E0002322F4FE832744FE0327C4FEE3E6E7F44B
:1012F000130000008320C1040324810413010105AD
:1013000067800000130101FC232E1102232C8102AF
:1013100013040104232EA4FC232CB4FC232AC4FCB4
:101320002328D4FC2326E4FCB76702810327C4FDED
:1013300023A4E71EB76702819387871E032784FDD6
:1013400023A2E700B76702819387871E032744FD26
:1013500023A4E700B76702819387871E0327C4FC95
:1013600023A6E700B76702819387871E032704FD42
:1013700023A8E700EFE01FE72324A4FE0327C4FC13
:10138000832784FEB357F7022326F4FE0327C4FC09
:10139000832784FEB377F702638807008327C4FEA0
:1013A000938717002326F4FEB76702819387871E71
:1013B0000327C4FE23AAE7000327C4FC832784FE77
:1013C0006362F702B76702819386871EB7170080B2
:1013D0001386C743832584FE032504FDEFF00F88A1
:1013E0006F000002B76702819386871EB7170080DF
:1013F0001386C7438325C4FC032504FDEFF00F8645
:10140000EFE0DFDD2322A4FE032704FD832744FE53
:1014100063F8E700032544FEEFF04F936F00C00030
:10142000032504FDEFF08F92130000008320C10319
:10143000032481031301010467800000130101FBF1
:10144000232611042324810413040105232EA4FA66
:10145000232CB4FAEFF08F9E2320A4FE832704FEF2
:1014600083A70700232EF4FC832704FE83A74700ED
:1014700083A70700232CF4FC832704FE83A787009F
:10148000232AF4FC832704FE83A747012326F4FEC6
:101490000327C4FE8327C4FBB307F7022324F4FE0B
:1014A0008327C4FE639A0700930710002326F4FEE7
:1014B0008327C4FB2324F4FE832704FE83A7C700ED
:1014C0002328F4FC232204FE6F00000B032784FB77
:1014D000832704FD3307F702832784FEB307F70051
:1014E0002326F4FC032784FE832704FDB337F7008B
:1014F00093F7F70F2324F4FC832784FC93B717009A
:10150000A303F4FC834774FC138F0700B717008014
:10151000938F47566B200F007B70FF018327C4FC1D
:10152000939727000327C4FDB307F70083A607009E
:101530008327C4FC93972700032744FDB307F700D4
:10154000032784FD3387E60223A0E700832784FE78
:10155000938717002324F4FEB7170080138E875655
:1015600067000E00130000006B300000832744FE6C
:10157000938717002322F4FE832744FE0327C4FE2B
:10158000E3E6E7F4130000008320C1040324810490
:101590001301010567800000130101FD232681026C
:1015A00013040103232EA4FC232604FE6F00000174
:1015B0008327C4FE938717002326F4FE0327C4FE67
:1015C0008327C4FDE346F7FE130000000324C10295
:1015D0001301010367800000130101FD232611029E
:1015E0002324810213040103232EA4FC232CB4FC26
:1015F000B7670281138707208327C4FDB307F7006D
:10160000130710002380E7008327C4FD6390070CB5
:10161000A30104FE232604FE6F00800A232604FE95
:10162000232404FE6F004003B7670281138707205D
:10163000832784FEB307F70083C70700638807008A
:101640008327C4FE938717002326F4FE832784FE96
:10165000938717002324F4FE032784FE832784FD49
:10166000E344F7FC0327C4FE832784FD631AF704D1
:10167000232204FE6F000004B7670281138707204E
:10168000832744FEB307F70023800700B797028142
:10169000130710002384E72C13056004EFF0DFEF3D
:1016A000B79702812384072C832744FE9387170072
:1016B0002322F4FE032744FE832784FDE34EF7FA3A
:1016C000834734FEE39C07F46F00400213000000E0
:1016D000B797028183C7872C93C7170093F7F70F3B
:1016E000E39807FE13054006EFF01FEB1300000020
:1016F0008320C102032481021301010367800000DB
:10170000130101FF23268100130401019307000048
:101710001308000013850700930508000324C10087
:101720001301010167800000130101FE232E8100D7
:1017300013040102232604FE6F008004B7670281B0
:101740000327C4FE1317270093870722B307F70068
:101750001307300023A0E700B77702810327C4FEF8
:101760001317270093870722B307F70013072000FA
:1017700023A0E7008327C4FE938717002326F4FEE7
:101780000327C4FE93073000E3DAE7FA13000000F2
:101790000324C1011301010267800000130101FD50
:1017A000232611022324810213040103232EA4FC07
:1017B000B707008113858711EFF08F80232604FE81
:1017C0006F0080058327C4FE638E07008327C4FE55
:1017D00093F7170063980700B70700811385C713B5
:1017E000EFE01FFE8327C4FE939727000327C4FD65
:1017F000B307F70083A7070013850700EFF00F80FA
:10180000B707008113850714EFE09FFB8327C4FE11
:10181000938717002326F4FE0327C4FE93073000A6
:10182000E3D2E7FAB707008113854714EFE05FF9C9
:10183000130000008320C10203248102130101036D
:1018400067800000130101FF23261100232481007B
:10185000130401011305B000EFE05FFA93070000E5
:10186000138507008320C1000324810013010101B7
:04187000678000008D
:02000004810079
:10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A
@@ -440,5 +431,6 @@
:10023800E8000081EC000081F0000081F4000081FA
:10024800F8000081FC0000810001008104010081A8
:10025800080100810C010081100100811401008156
:04026800060000008C
:040000058000000077
:00000001FF

View File

@@ -5,10 +5,12 @@ unsigned x[1024] = {0};
unsigned y[1024] = {0};
unsigned z[1024] = {0};
#define MAT_DIM 16
unsigned temp = 6;
#define NUM_COLS 16
#define NUM_ROWS 16
#define MAT_DIM 2
#define NUM_COLS 2
#define NUM_ROWS 2
double sc_time_stamp()
{
@@ -39,16 +41,19 @@ void print_matrix(unsigned * z)
int main()
{
// vx_print_hex(11);
// unsigned f = temp;
initialize_mats();
vx_print_hex(11);
// vx_printc(0, 'a');
// initialize_mats();
// matrix multiplication
// vx_sq_mat_mult(x, y, z, MAT_DIM);
// vx_print_str("\n\nMatrix multiplication\n");
// print_matrix(z);
print_matrix(x);
// print_matrix(x);
// // matrix addition
// vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS);

View File

@@ -6,15 +6,33 @@
.type _start, @function
.global _start
_start:
la a0, 0x020000
li a1, 7
sw a1, 4(a0)
nop
nop
nop
lw a2, 4(a0)
li a0, 0
.word 0x0005006b # tmc a0
# la a0, 0x10000000
# li a1, 7
# sw a1, 0(a0)
# la a0, 0x10000048
# li a1, 3
# sw a1, 0(a0)
# la a0, 0x80000000
# li a1, 9
# sw a1, 0(a0)
# la a0, 0x80000008
# li a1, 8
# sw a1, 0(a0)
# la a0, 0x10000000
# lw a2, 0(a0)
# la a0, 0x10000048
# lw a3, 0(a0)
# # la a0, 0x00000000 # I=0,OF=0, B=0
# # li a1, 1
# # sw a1, 0(a0)
# # lw a2, 0(a0)
# li a0, 0
# .word 0x0005006b # tmc a0
########################################
# li a0, 4
# la a1, SPAWN
# .word 0x00b5106b # wspawn a0(numWarps), a1(PC SPAWN)
@@ -36,7 +54,7 @@ _start:
##########################
# li a0, 4
# .word 0x0005006b # tmc a0
# csrr a1, 0x20 # read thread IDs
#
# # csrr a2, 0x21 # read warp IDs
# slti a0, a1, 2
# .word 0x0005206b # split a0
@@ -49,17 +67,11 @@ _start:
# .word 0x0000306b #join
# 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, 0
# .word 0x0005006b # tmc a0
lui sp, 0x7ffff
# jal vx_before_main
jal main
li a0, 0
.word 0x0005006b # tmc a0
# Hi:
# li a2, 7

View File

@@ -3,21 +3,22 @@
void vx_print_hex(unsigned f)
{
if (f < 16)
{
vx_print_str(hextoa[f]);
return;
}
int temp;
int sf = 32;
bool start = false;
do
{
temp = (f >> (sf - 4)) & 0xf;
if (temp != 0) start = true;
if (start) vx_print_str(hextoa[temp]);
sf -= 4;
} while(sf > 0);
vx_print_str(hextoa[f]);
// if (f < 16)
// {
// vx_print_str(hextoa[f]);
// return;
// }
// int temp;
// int sf = 32;
// bool start = false;
// do
// {
// temp = (f >> (sf - 4)) & 0xf;
// if (temp != 0) start = true;
// if (start) vx_print_str(hextoa[temp]);
// sf -= 4;
// } while(sf > 0);
}

View File

@@ -11,11 +11,11 @@ EXE=--exe ./simulate/test_bench.cpp
COMP=--compiler gcc
# WNO=-Wno-UNDRIVEN --Wno-PINMISSING -Wno-STMTDLY -Wno-WIDTH -Wno-UNSIGNED
WNO=
WNO=-Wno-UNDRIVEN --Wno-PINMISSING -Wno-STMTDLY -Wno-WIDTH -Wno-UNSIGNED -Wno-UNOPTFLAT
# WNO=
LIGHTW=
# LIGHTW=-Wno-UNOPTFLAT
# LIGHTW=
LIGHTW=-Wno-UNOPTFLAT
# LIB=-LDFLAGS '-L/usr/local/systemc/'
LIB=

View File

@@ -31,6 +31,7 @@ assign VX_writeback_inter.wb_warp_num = VX_writeback_temp.wb_warp_num;
VX_mw_wb_inter VX_mw_wb();
wire no_slot_mem;
VX_mem_req_inter VX_exe_mem_req();
@@ -78,7 +79,8 @@ VX_lsu load_store_unit(
.VX_mem_wb (VX_mem_wb),
.VX_dcache_rsp(VX_dcache_rsp),
.VX_dcache_req(VX_dcache_req),
.out_delay (out_mem_delay)
.out_delay (out_mem_delay),
.no_slot_mem (no_slot_mem)
);
@@ -106,7 +108,8 @@ VX_writeback VX_wb(
.VX_inst_exec_wb (VX_inst_exec_wb),
.VX_csr_wb (VX_csr_wb),
.VX_writeback_inter(VX_writeback_temp)
.VX_writeback_inter(VX_writeback_temp),
.no_slot_mem (no_slot_mem)
);
endmodule

View File

@@ -22,8 +22,8 @@ module VX_dmem_controller (
wire[`NT_M1:0][31:0] cache_driver_in_address = VX_dcache_req.out_cache_driver_in_address;
wire[2:0] cache_driver_in_mem_read = VX_dcache_req.out_cache_driver_in_mem_read;
wire[2:0] cache_driver_in_mem_write = VX_dcache_req.out_cache_driver_in_mem_write;
wire[2:0] cache_driver_in_mem_read = !(|cache_driver_in_valid) ? `NO_MEM_READ : VX_dcache_req.out_cache_driver_in_mem_read;
wire[2:0] cache_driver_in_mem_write = !(|cache_driver_in_valid) ? `NO_MEM_WRITE : VX_dcache_req.out_cache_driver_in_mem_write;
wire[`NT_M1:0][31:0] cache_driver_in_data = VX_dcache_req.out_cache_driver_in_data;
@@ -34,6 +34,9 @@ module VX_dmem_controller (
wire cache_delay;
wire valid_read_cache = !cache_delay && cache_driver_in_valid[0];
VX_shared_memory #(.NB(7), .BITS_PER_BANK(3)) shared_memory (
.clk (clk),
.in_valid (sm_driver_in_valid),

View File

@@ -5,6 +5,7 @@
module VX_lsu (
input wire clk,
input wire reset,
input wire no_slot_mem,
VX_lsu_req_inter VX_lsu_req,
// Write back to GPR
@@ -15,9 +16,9 @@ module VX_lsu (
output wire out_delay
);
VX_inst_mem_wb_inter VX_mem_wb_temp();
// VX_inst_mem_wb_inter VX_mem_wb_temp();
assign out_delay = VX_dcache_rsp.delay;
assign out_delay = VX_dcache_rsp.delay || no_slot_mem;
// Generate Addresses
@@ -36,30 +37,30 @@ module VX_lsu (
assign VX_dcache_req.out_cache_driver_in_data[index] = VX_lsu_req.store_data[index];
assign VX_dcache_req.out_cache_driver_in_valid[index] = (VX_lsu_req.valid[index]);
assign VX_mem_wb_temp.loaded_data[index] = VX_dcache_rsp.in_cache_driver_out_data[index];
assign VX_mem_wb.loaded_data[index] = VX_dcache_rsp.in_cache_driver_out_data[index];
end
assign VX_dcache_req.out_cache_driver_in_mem_read = VX_lsu_req.mem_read;
assign VX_dcache_req.out_cache_driver_in_mem_write = VX_lsu_req.mem_write;
assign VX_mem_wb_temp.rd = VX_lsu_req.rd;
assign VX_mem_wb_temp.wb = VX_lsu_req.wb;
assign VX_mem_wb_temp.wb_valid = VX_lsu_req.valid;
assign VX_mem_wb_temp.wb_warp_num = VX_lsu_req.warp_num;
assign VX_mem_wb.rd = VX_lsu_req.rd;
assign VX_mem_wb.wb = VX_lsu_req.wb & {!VX_dcache_rsp.delay, !VX_dcache_rsp.delay};
assign VX_mem_wb.wb_valid = VX_lsu_req.valid;
assign VX_mem_wb.wb_warp_num = VX_lsu_req.warp_num;
wire zero_temp = 0;
VX_generic_register #(.N(142)) register_wb_data
(
.clk (clk),
.reset(reset),
.stall(zero_temp),
.flush(out_delay),
.in ({VX_mem_wb_temp.loaded_data, VX_mem_wb_temp.rd, VX_mem_wb_temp.wb, VX_mem_wb_temp.wb_valid, VX_mem_wb_temp.wb_warp_num}),
.out ({VX_mem_wb.loaded_data , VX_mem_wb.rd , VX_mem_wb.wb , VX_mem_wb.wb_valid , VX_mem_wb.wb_warp_num })
);
// wire zero_temp = 0;
// VX_generic_register #(.N(142)) register_wb_data
// (
// .clk (clk),
// .reset(reset),
// .stall(zero_temp),
// .flush(out_delay),
// .in ({VX_mem_wb_temp.loaded_data, VX_mem_wb_temp.rd, VX_mem_wb_temp.wb, VX_mem_wb_temp.wb_valid, VX_mem_wb_temp.wb_warp_num}),
// .out ({VX_mem_wb.loaded_data , VX_mem_wb.rd , VX_mem_wb.wb , VX_mem_wb.wb_valid , VX_mem_wb.wb_warp_num })
// );
endmodule // Memory

View File

@@ -13,13 +13,16 @@ module VX_priority_encoder_w_mask
always @(valids) begin
index = 0;
found = 0;
mask = 0;
// mask = 0;
for (i = 0; i < N; i=i+1) begin
if (valids[i]) begin
index = i[$clog2(N)-1:0];
found = 1;
mask[i[$clog2(N)-1:0]] = 1 << i;
// mask[index] = (1 << i);
// $display("%h",(1 << i));
end
end
end
assign mask = found ? (1 << index) : 0;
endmodule

View File

@@ -11,10 +11,12 @@ module VX_writeback (
VX_csr_wb_inter VX_csr_wb,
// Actual WB to GPR
VX_wb_inter VX_writeback_inter
VX_wb_inter VX_writeback_inter,
output wire no_slot_mem
);
assign no_slot_mem = mem_wb && (exec_wb || csr_wb);
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);
@@ -22,29 +24,29 @@ module VX_writeback (
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 :
mem_wb ? VX_mem_wb.loaded_data :
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;
mem_wb ? VX_mem_wb.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 :
mem_wb ? VX_mem_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 :
mem_wb ? VX_mem_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 :
mem_wb ? VX_mem_wb.wb_warp_num :
0;

View File

@@ -7,6 +7,9 @@ module Vortex(
input wire reset,
input wire[31:0] icache_response_instruction,
output wire[31:0] icache_request_pc_address,
// IO
output wire io_valid,
output wire[31:0] io_data,
// Req
output reg [31:0] o_m_read_addr,
output reg [31:0] o_m_evict_addr,
@@ -20,11 +23,20 @@ module Vortex(
output wire out_ebreak
);
// Dcache Interface
wire memory_delay;
wire gpr_stage_delay;
wire schedule_delay;
// Dcache Interface
VX_dcache_response_inter VX_dcache_rsp();
VX_dcache_request_inter VX_dcache_req();
wire temp_io_valid = (!memory_delay) && (|VX_dcache_req.out_cache_driver_in_valid) && (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) && (VX_dcache_req.out_cache_driver_in_address[0] == 32'h00010000);
wire[31:0] temp_io_data = VX_dcache_req.out_cache_driver_in_data[0];
assign io_valid = temp_io_valid;
assign io_data = temp_io_data;
VX_dram_req_rsp_inter VX_dram_req_rsp();
@@ -74,11 +86,6 @@ VX_jal_response_inter VX_jal_rsp(); // Jump resolution to Fetch
VX_warp_ctl_inter VX_warp_ctl();
wire memory_delay;
wire gpr_stage_delay;
wire schedule_delay;
VX_front_end vx_front_end(
.clk (clk),
.reset (reset),

View File

@@ -90,10 +90,10 @@ module VX_Cache_Bank
assign data_evicted = data_use;
assign eviction_wb = miss && (dirty_use != 1'b0);
assign eviction_wb = (dirty_use != 1'b0) && valid_use;
assign eviction_tag = tag_use;
assign access = (state == CACHE_IDLE) && valid_in;
assign write_from_mem = (state == RECIV_MEM_RSP) && valid_in;
assign write_from_mem = (state == RECIV_MEM_RSP);
assign readdata = (access) ? data_use[block_offset] : 32'b0; // Fix with actual data
assign hit = (access && (tag_use == o_tag) && valid_use);
//assign eviction_addr = {eviction_tag, actual_index, block_offset, 5'b0}; // Fix with actual data
@@ -104,9 +104,8 @@ module VX_Cache_Bank
wire[`NUM_WORDS_PER_BLOCK-1:0][31:0] data_write;
genvar g;
for (g = 0; g < `NUM_WORDS_PER_BLOCK; g = g + 1) begin
wire correct_block = (block_offset == g);
assign we[g] = (read_or_write && ((access && correct_block) || (write_from_mem && !correct_block)) ) ? 1'b1 : 1'b0;
//assign we[g] = (!(write_from_mem && correct_block) && ((write_from_mem || correct_block) && read_or_write == 1'b1)) ? 1 : 0; // added the "not"
wire normal_write = (read_or_write && ((access && (block_offset == g))) && !miss);
assign we[g] = (normal_write || (write_from_mem)) ? 1'b1 : 1'b0;
assign data_write[g] = write_from_mem ? fetched_writedata[g] : writedata;
end

View File

@@ -7,17 +7,16 @@ module VX_cache_bank_valid
(
input wire [`NT_M1:0] i_p_valid,
input wire [`NT_M1:0][31:0] i_p_addr,
output wire [NUMBER_BANKS - 1 : 0][`NT_M1:0] thread_track_banks
output reg [NUMBER_BANKS - 1 : 0][`NT_M1:0] thread_track_banks
);
genvar t_id;
for (t_id = 0; t_id <= `NT_M1; t_id = t_id + 1)
begin
wire[2:0] threads_bank = i_p_addr[t_id][4:2];
assign thread_track_banks[threads_bank][t_id] = i_p_valid[t_id];
end
always @(*) begin
thread_track_banks = 0;
for (t_id = 0; t_id <= `NT_M1; t_id = t_id + 1)
begin
thread_track_banks[i_p_addr[t_id][4:2]][t_id] = i_p_valid[t_id];
end
end
endmodule

View File

@@ -64,9 +64,10 @@ module VX_d_cache(clk,
// Buffer for final data
reg [`NT_M1:0][31:0] final_data_read;
wire[`NT_M1:0][31:0] new_final_data_read;
reg [`NT_M1:0][31:0] new_final_data_read;
wire[`NT_M1:0][31:0] new_final_data_read_Qual;
assign o_p_readdata = final_data_read;
assign o_p_readdata = new_final_data_read_Qual;
@@ -95,6 +96,8 @@ module VX_d_cache(clk,
reg[31:0] miss_addr;
reg[31:0] evict_addr;
wire curr_processor_request_valid = (|i_p_valid);
assign use_valid = (stored_valid == 0) ? i_p_valid : stored_valid;
@@ -121,10 +124,15 @@ module VX_d_cache(clk,
// end
// end
reg[`NT_M1:0] debug_hit_per_bank_mask[NUMBER_BANKS-1:0];
genvar bid;
for (bid = 0; bid < NUMBER_BANKS; bid=bid+1)
begin
wire[`NT_M1:0] use_threads_track_banks = thread_track_banks[bid];
wire[`NT_M1:0] use_threads_track_banks = thread_track_banks[bid];
wire[$clog2(`NT)-1:0] use_thread_index = index_per_bank[bid];
wire use_write_final_data = hit_per_bank[bid];
wire[31:0] use_data_final_data = readdata_per_bank[bid];
VX_priority_encoder_w_mask #(.N(`NT)) choose_thread(
.valids(use_threads_track_banks),
.mask (use_mask_per_bank[bid]),
@@ -132,17 +140,20 @@ module VX_d_cache(clk,
.found (valid_per_bank[bid])
);
assign new_final_data_read[index_per_bank[bid]] = hit_per_bank[bid] ? readdata_per_bank[bid] : 0;
assign threads_serviced_per_bank[bid] = use_mask_per_bank[bid] & {`NT{hit_per_bank[bid]}};
always @(*) begin
if (use_write_final_data) new_final_data_read[use_thread_index] = use_data_final_data;
end
// assign new_final_data_read[use_thread_index] = use_write_final_data ? use_data_final_data : 0;
assign debug_hit_per_bank_mask[bid] = {`NT{hit_per_bank[bid]}};
assign threads_serviced_per_bank[bid] = use_mask_per_bank[bid] & debug_hit_per_bank_mask[bid];
end
// genvar tid;
assign threads_serviced_Qual = threads_serviced_per_bank[0] | threads_serviced_per_bank[1] | threads_serviced_per_bank[2] | threads_serviced_per_bank[3] | threads_serviced_per_bank[4] | threads_serviced_per_bank[5] | threads_serviced_per_bank[6] | threads_serviced_per_bank[7];
// for(tid = 0; tid )
wire[NUMBER_BANKS - 1 : 0] detect_bank_miss;
assign threads_serviced_Qual = threads_serviced_per_bank[0] | threads_serviced_per_bank[1] |
threads_serviced_per_bank[2] | threads_serviced_per_bank[3] |
threads_serviced_per_bank[4] | threads_serviced_per_bank[5] |
threads_serviced_per_bank[6] | threads_serviced_per_bank[7];
// genvar bbid;
// always @(*) begin
// for (bbid = 0; bbid < NUMBER_BANKS; bbid=bbid+1)
@@ -152,6 +163,14 @@ module VX_d_cache(clk,
// end
genvar tid;
for (tid = 0; tid < `NT; tid =tid+1)
begin
assign new_final_data_read_Qual[tid] = threads_serviced_Qual[tid] ? new_final_data_read[tid] : final_data_read[tid];
end
assign detect_bank_miss = (valid_per_bank & ~hit_per_bank);
wire delay;
@@ -193,10 +212,7 @@ module VX_d_cache(clk,
evict_addr <= eviction_addr_per_bank[miss_bank_index];
end
for (cur_t = 0; cur_t < `NT; cur_t=cur_t+1)
begin
if (threads_serviced_Qual[cur_t]) final_data_read[cur_t] <= new_final_data_read[cur_t];
end
final_data_read <= new_final_data_read_Qual;
end
@@ -245,8 +261,8 @@ module VX_d_cache(clk,
// Mem Rsp
// Req to mem:
assign o_m_evict_addr = evict_addr;
assign o_m_read_addr = miss_addr;
assign o_m_evict_addr = evict_addr & 32'hffffffc0;
assign o_m_read_addr = miss_addr & 32'hffffffc0;
assign o_m_valid = (state == SEND_MEM_REQ);
assign o_m_read_or_write = (state == SEND_MEM_REQ) && (|eviction_wb);
//end

View File

@@ -0,0 +1,7 @@
# Dynamic Instructions: 4139
# of total cycles: 4156
# of forwarding stalls: 0
# of branch stalls: 0
# CPI: 1.00411
# time to simulate: 6.95312e-310 milliseconds
# GRADE: Failed on test: 4294967295

View File

@@ -5,7 +5,7 @@
int main(int argc, char **argv)
{
Verilated::debug(1);
// Verilated::debug(1);
Verilated::commandArgs(argc, argv);

View File

@@ -39,6 +39,7 @@ class Vortex
void print_stats(bool = true);
bool ibus_driver();
bool dbus_driver();
void io_handler();
RAM ram;
@@ -188,77 +189,115 @@ bool Vortex::ibus_driver()
}
void Vortex::io_handler()
{
if (vortex->io_valid)
{
uint32_t data_write = (uint32_t) vortex->io_data;
char c = (char) data_write;
std::cerr << c;
}
}
bool Vortex::dbus_driver()
{
// printf("****************************\n");
vortex->i_m_ready = 0;
for (int i = 0; i < CACHE_NUM_BANKS; i++)
{
for (int j = 0; j < CACHE_WORDS_PER_BLOCK; j++)
{
vortex->i_m_readdata[i][j] = 0;
}
}
if (this->refill)
{
this->refill = false;
unsigned unordered_mem[32];
int num_iter = 0;
for (int i = 0; i < CACHE_WORDS_PER_BLOCK; i++)
{
for (int j = 0; j < (CACHE_NUM_BANKS*8); j+=8)
{
unsigned addr = this->refill_addr + (4*num_iter);
unsigned data_read;
ram.getWord(addr, &data_read);
unordered_mem[i+j] = data_read;
num_iter++;
}
}
vortex->i_m_ready = 1;
for (int i = 0; i < CACHE_NUM_BANKS; i++)
for (int curr_e = 0; curr_e < (CACHE_NUM_BANKS*CACHE_WORDS_PER_BLOCK); curr_e++)
{
for (int j = 0; j < CACHE_WORDS_PER_BLOCK; j++)
{
vortex->i_m_readdata[i][j] = unordered_mem[(i*CACHE_WORDS_PER_BLOCK)+j];
unsigned new_addr = this->refill_addr + (4*curr_e);
unsigned addr_without_byte = new_addr >> 2;
unsigned bank_num = addr_without_byte & 0x7;
unsigned addr_wihtout_bank = addr_without_byte >> 3;
unsigned offset_num = addr_wihtout_bank & 0x3;
unsigned value;
ram.getWord(new_addr, &value);
// printf("-------- (%x) i_m_readdata[%d][%d] (%d) = %d\n", new_addr, bank_num, offset_num, curr_e, value);
vortex->i_m_readdata[bank_num][offset_num] = value;
}
}
}
else
{
if (vortex->o_m_valid)
{
// printf("Valid o_m_valid\n");
if (vortex->o_m_read_or_write)
{
unsigned ordered_mem[32];
// printf("Valid write\n");
// Create unordered mem
unsigned unordered_mem[32];
for (int i = 0; i < CACHE_NUM_BANKS; i++)
for (int curr_e = 0; curr_e < (CACHE_NUM_BANKS*CACHE_WORDS_PER_BLOCK); curr_e++)
{
for (int j = 0; j < CACHE_WORDS_PER_BLOCK; j++)
{
unordered_mem[(i*CACHE_WORDS_PER_BLOCK)+j] = vortex->o_m_writedata[i][j];
}
unsigned new_addr = vortex->o_m_evict_addr + (4*curr_e);
unsigned addr_without_byte = new_addr >> 2;
unsigned bank_num = addr_without_byte & 0x7;
unsigned addr_wihtout_bank = addr_without_byte >> 3;
unsigned offset_num = addr_wihtout_bank & 0x3;
unsigned new_value = vortex->o_m_writedata[bank_num][offset_num];
ram.writeWord( new_addr, &new_value);
// printf("+++++++ (%x) writeback[%d][%d] (%d) = %d\n", new_addr, bank_num, offset_num, curr_e, new_value);
// printf("+++++++ (%x) i_m_readdata[%d][%d] (%d) = %d\n", new_addr, bank_num, offset_num, curr_e, value);
}
// Order the memory
int num_iter = 0;
for (int i = 0; i < CACHE_NUM_BANKS; i++)
{
for (int j = 0; j < (CACHE_NUM_BANKS*CACHE_WORDS_PER_BLOCK); j+=CACHE_WORDS_PER_BLOCK)
{
printf("i: %d, j: %d, num_iter: %d\n", i, j, num_iter);
ordered_mem[i+j] = unordered_mem[num_iter];
num_iter++;
}
}
// unsigned ordered_mem[32];
// Save the memory
for (int i = 0; i < (CACHE_WORDS_PER_BLOCK * CACHE_NUM_BANKS); i++)
{
unsigned addr = (vortex->o_m_evict_addr) + (4*i);
unsigned * data_addr = ordered_mem + i;
ram.writeWord( addr, data_addr);
}
// // Create unordered mem
// unsigned unordered_mem[32];
// for (int i = 0; i < CACHE_NUM_BANKS; i++)
// {
// for (int j = 0; j < CACHE_WORDS_PER_BLOCK; j++)
// {
// unordered_mem[(i*CACHE_WORDS_PER_BLOCK)+j] = vortex->o_m_writedata[i][j];
// }
// }
// // Order the memory
// int num_iter = 0;
// for (int i = 0; i < CACHE_NUM_BANKS; i++)
// {
// for (int j = 0; j < (CACHE_NUM_BANKS*CACHE_WORDS_PER_BLOCK); j+=CACHE_WORDS_PER_BLOCK)
// {
// printf("i: %d, j: %d, num_iter: %d\n", i, j, num_iter);
// ordered_mem[i+j] = unordered_mem[num_iter];
// num_iter++;
// }
// }
// // Save the memory
// for (int i = 0; i < (CACHE_WORDS_PER_BLOCK * CACHE_NUM_BANKS); i++)
// {
// unsigned addr = (vortex->o_m_evict_addr) + (4*i);
// unsigned * data_addr = ordered_mem + i;
// ram.writeWord( addr, data_addr);
// }
}
@@ -268,122 +307,6 @@ bool Vortex::dbus_driver()
}
}
// uint32_t data_read;
// uint32_t data_write;
// uint32_t addr;
// // std::cout << "DBUS DRIVER\n" << std::endl;
// ////////////////////// DBUS //////////////////////
// bool did = false;
// for (unsigned curr_th = 0; curr_th < NT; curr_th++)
// {
// if ((vortex->out_cache_driver_in_mem_write != NO_MEM_WRITE) && vortex->out_cache_driver_in_valid[curr_th])
// {
// did = true;
// data_write = (uint32_t) vortex->out_cache_driver_in_data[curr_th];
// addr = (uint32_t) vortex->out_cache_driver_in_address[curr_th];
// if (addr == 0x00010000)
// {
// std::cerr << (char) data_write;
// }
// // if ((addr >= 0x810002cc) && (addr < 0x810002d0))
// // {
// // int index = (addr - 0x810002cc) / 4;
// // // std::cerr << GREEN << "1done[" << index << "] = " << data_write << DEFAULT << "\n";
// // }
// // if ((addr >= 0x810059f4) && (addr < 0x810059f4))
// // {
// // int index = (addr - 0x810059f4) / 4;
// // // std::cerr << RED << "2done[" << index << "] = " << data_write << DEFAULT << "\n";
// // }
// if (vortex->out_cache_driver_in_mem_write == SB_MEM_WRITE)
// {
// data_write = ( data_write) & 0xFF;
// ram.writeByte( addr, &data_write);
// } else if (vortex->out_cache_driver_in_mem_write == SH_MEM_WRITE)
// {
// data_write = ( data_write) & 0xFFFF;
// ram.writeHalf( addr, &data_write);
// } else if (vortex->out_cache_driver_in_mem_write == SW_MEM_WRITE)
// {
// // printf("STORING %x in %x \n", data_write, addr);
// data_write = data_write;
// ram.writeWord( addr, &data_write);
// }
// }
// }
// // printf("----\n");
// for (unsigned curr_th = 0; curr_th < NT; curr_th++)
// {
// if ((vortex->out_cache_driver_in_mem_read != NO_MEM_READ) && vortex->out_cache_driver_in_valid[curr_th])
// {
// did = true;
// addr = (uint32_t) vortex->out_cache_driver_in_address[curr_th];
// ram.getWord(addr, &data_read);
// if (vortex->out_cache_driver_in_mem_read == LB_MEM_READ)
// {
// vortex->in_cache_driver_out_data[curr_th] = (data_read & 0x80) ? (data_read | 0xFFFFFF00) : (data_read & 0xFF);
// } else if (vortex->out_cache_driver_in_mem_read == LH_MEM_READ)
// {
// vortex->in_cache_driver_out_data[curr_th] = (data_read & 0x8000) ? (data_read | 0xFFFF0000) : (data_read & 0xFFFF);
// } else if (vortex->out_cache_driver_in_mem_read == LW_MEM_READ)
// {
// // printf("Reading mem - Addr: %x = %x\n", addr, data_read);
// // std::cout << "READING - Addr: " << std::hex << addr << " = " << data_read << "\n";
// // std::cout << std::dec;
// vortex->in_cache_driver_out_data[curr_th] = data_read;
// } else if (vortex->out_cache_driver_in_mem_read == LBU_MEM_READ)
// {
// vortex->in_cache_driver_out_data[curr_th] = (data_read & 0xFF);
// } else if (vortex->out_cache_driver_in_mem_read == LHU_MEM_READ)
// {
// vortex->in_cache_driver_out_data[curr_th] = (data_read & 0xFFFF);
// }
// else
// {
// vortex->in_cache_driver_out_data[curr_th] = 0xbabebabe;
// }
// }
// else
// {
// vortex->in_cache_driver_out_data[curr_th] = 0xbabebabe;
// }
// }
// if (did && (NW > 1))
// {
// if (NW < NT)
// {
// this->stats_total_cycles += NT % (NW -1);
// }
// }
// printf("******\n");
return false;
}
@@ -465,9 +388,11 @@ bool Vortex::simulate(std::string file_to_simulate)
// unsigned cycles;
counter = 0;
this->stats_total_cycles = 12;
while (this->stop && ((counter < 2)))
while (this->stop && ((counter < 5)))
// while (this->stats_total_cycles < 10)
{
// printf("-------------------------\n");
// std::cout << "Counter: " << counter << "\n";
// if ((this->stats_total_cycles) % 5000 == 0) std::cout << "************* Cycle: " << (this->stats_total_cycles) << "\n";
// dstop = !dbus_driver();
@@ -478,6 +403,7 @@ bool Vortex::simulate(std::string file_to_simulate)
vortex->eval();
istop = ibus_driver();
dstop = !dbus_driver();
io_handler();
#ifdef VCD_OUTPUT
m_trace->dump((2*this->stats_total_cycles)+1);