Added a pipeline stage + fixed SM param errors

This commit is contained in:
felsabbagh3
2019-11-13 12:25:28 -05:00
parent 7f7d17d176
commit 70651f0340
15 changed files with 26390 additions and 24621 deletions

View File

@@ -258,8 +258,8 @@
`define SHARED_MEMORY_HEIGHT ((`SHARED_MEMORY_SIZE) / (`SHARED_MEMORY_BANKS * `SHARED_MEMORY_BYTES_PER_READ)) `define SHARED_MEMORY_HEIGHT ((`SHARED_MEMORY_SIZE) / (`SHARED_MEMORY_BANKS * `SHARED_MEMORY_BYTES_PER_READ))
`define SHARED_MEMORY_BANK_OFFSET_ST (2) `define SHARED_MEMORY_BANK_OFFSET_ST (2)
`define SHARED_MEMORY_BANK_OFFSET_ED (2+$clog2(`DCACHE_BANKS)-1) `define SHARED_MEMORY_BANK_OFFSET_ED (2+$clog2(`SHARED_MEMORY_BANKS)-1)
`define SHARED_MEMORY_BLOCK_OFFSET_ST (`SHARED_MEMORY_BANK_OFFSET_ED + 1) `define SHARED_MEMORY_BLOCK_OFFSET_ST (`SHARED_MEMORY_BANK_OFFSET_ED + 1)
`define SHARED_MEMORY_BLOCK_OFFSET_ED (`SHARED_MEMORY_BLOCK_OFFSET_ST +$clog2(`SHARED_MEMORY_LOG_WORDS_PER_READ)-1) `define SHARED_MEMORY_BLOCK_OFFSET_ED (`SHARED_MEMORY_BLOCK_OFFSET_ST +`SHARED_MEMORY_LOG_WORDS_PER_READ-1)
`define SHARED_MEMORY_INDEX_OFFSET_ST (`SHARED_MEMORY_BLOCK_OFFSET_ED + 1) `define SHARED_MEMORY_INDEX_OFFSET_ST (`SHARED_MEMORY_BLOCK_OFFSET_ED + 1)
`define SHARED_MEMORY_INDEX_OFFSET_ED (`SHARED_MEMORY_INDEX_OFFSET_ST + $clog2(`SHARED_MEMORY_HEIGHT)-1) `define SHARED_MEMORY_INDEX_OFFSET_ED (`SHARED_MEMORY_INDEX_OFFSET_ST + $clog2(`SHARED_MEMORY_HEIGHT)-1)

View File

@@ -31,39 +31,63 @@ module VX_lsu (
); );
wire[`NT_M1:0][31:0] use_address;
wire[`NT_M1:0][31:0] use_store_data;
wire[`NT_M1:0] use_valid;
wire[2:0] use_mem_read;
wire[2:0] use_mem_write;
wire[4:0] use_rd;
wire[`NW_M1:0] use_warp_num;
wire[1:0] use_wb;
wire[31:0] use_pc;
wire zero = 0;
VX_generic_register #(.N(308)) lsu_buffer(
.clk (clk),
.reset(reset),
.stall(out_delay),
.flush(zero),
.in ({address , VX_lsu_req.store_data, VX_lsu_req.valid, VX_lsu_req.mem_read, VX_lsu_req.mem_write, VX_lsu_req.rd, VX_lsu_req.warp_num, VX_lsu_req.wb, VX_lsu_req.lsu_pc}),
.out ({use_address, use_store_data , use_valid , use_mem_read , use_mem_write , use_rd , use_warp_num , use_wb , use_pc })
);
genvar index; genvar index;
for (index = 0; index <= `NT_M1; index = index + 1) begin for (index = 0; index <= `NT_M1; index = index + 1) begin
assign VX_dcache_req.out_cache_driver_in_address[index] = address[index]; assign VX_dcache_req.out_cache_driver_in_address[index] = use_address[index];
assign VX_dcache_req.out_cache_driver_in_data[index] = VX_lsu_req.store_data[index]; assign VX_dcache_req.out_cache_driver_in_data[index] = use_store_data[index];
assign VX_dcache_req.out_cache_driver_in_valid[index] = (VX_lsu_req.valid[index]); assign VX_dcache_req.out_cache_driver_in_valid[index] = (use_valid[index]);
assign VX_mem_wb.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 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_read = use_mem_read;
assign VX_dcache_req.out_cache_driver_in_mem_write = VX_lsu_req.mem_write; assign VX_dcache_req.out_cache_driver_in_mem_write = use_mem_write;
assign VX_mem_wb.rd = VX_lsu_req.rd; assign VX_mem_wb.rd = use_rd;
assign VX_mem_wb.wb = VX_lsu_req.wb & {!VX_dcache_rsp.delay, !VX_dcache_rsp.delay}; assign VX_mem_wb.wb = use_wb & {!VX_dcache_rsp.delay, !VX_dcache_rsp.delay};
assign VX_mem_wb.wb_valid = VX_lsu_req.valid; assign VX_mem_wb.wb_valid = use_valid;
assign VX_mem_wb.wb_warp_num = VX_lsu_req.warp_num; assign VX_mem_wb.wb_warp_num = use_warp_num;
assign VX_mem_wb.mem_wb_pc = VX_lsu_req.lsu_pc; assign VX_mem_wb.mem_wb_pc = use_pc;
integer curr_t; // integer curr_t;
always @(negedge clk) begin // always @(negedge clk) begin
for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1) // for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1)
if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin // if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin
if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin // if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin
$display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]); // $display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]);
end // end
if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin // if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin
$display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]); // $display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]);
end // end
end // end
end // end
// wire zero_temp = 0; // wire zero_temp = 0;
// VX_generic_register #(.N(142)) register_wb_data // VX_generic_register #(.N(142)) register_wb_data

View File

@@ -176,7 +176,7 @@ module VX_warp_scheduler (
if (update_use_wspawn) begin if (update_use_wspawn) begin
use_wsapwn[warp_to_schedule] <= 0; use_wsapwn[warp_to_schedule] <= 0;
thread_masks[warp_to_schedule] <= 1'b1; thread_masks[warp_to_schedule] <= 1;
end end
@@ -284,7 +284,7 @@ module VX_warp_scheduler (
wire real_use_wspawn = use_wsapwn[warp_to_schedule]; wire real_use_wspawn = use_wsapwn[warp_to_schedule];
assign warp_pc = real_use_wspawn ? use_wsapwn_pc : warp_pcs[warp_to_schedule]; assign warp_pc = real_use_wspawn ? use_wsapwn_pc : warp_pcs[warp_to_schedule];
assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? 1'b1 : thread_masks[warp_to_schedule]); assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? `NT'b1 : thread_masks[warp_to_schedule]);
assign warp_num = warp_to_schedule; assign warp_num = warp_to_schedule;
assign update_use_wspawn = use_wsapwn[warp_to_schedule] && !global_stall; assign update_use_wspawn = use_wsapwn[warp_to_schedule] && !global_stall;

View File

@@ -49,7 +49,7 @@ reg[`NT_M1:0][31:0] temp_out_data;
reg [SM_BANKS - 1:0][$clog2(SM_HEIGHT) - 1:0] block_addr; reg [SM_BANKS - 1:0][$clog2(SM_HEIGHT) - 1:0] block_addr;
reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_wdata; reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_wdata;
reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_rdata; reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_rdata;
reg [SM_BANKS - 1:0][SM_LOG_WORDS_PER_READ:0] block_we; reg [SM_BANKS - 1:0][SM_LOG_WORDS_PER_READ-1:0] block_we;
wire send_data; wire send_data;

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -52,6 +52,7 @@ int main()
// Main is called with all threads active of warp 0 // Main is called with all threads active of warp 0
vx_tmc(1); vx_tmc(1);
vx_print_str("Simple Main\n"); vx_print_str("Simple Main\n");
@@ -69,6 +70,22 @@ int main()
vx_print_str("test_wspawn\n"); vx_print_str("test_wspawn\n");
test_wsapwn(); test_wsapwn();
vx_print_str("Shared Memory test\n");
unsigned * ptr = (unsigned *) 0xFFFF0000;
unsigned value = 0;
for (int i = 0; i < 5; i++)
{
*ptr = value;
unsigned read_valud = *ptr;
vx_printf("ptr: ", (unsigned) ptr);
vx_printf("Original Value: ", value);
vx_printf("Read Value: ", read_valud);
vx_print_str("-------------------\n");
value++;
ptr++;
}
vx_print_str("vx_spawnWarps mat_add_kernel\n"); vx_print_str("vx_spawnWarps mat_add_kernel\n");
mat_add_args_t arguments; mat_add_args_t arguments;

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
:0200000480007A :0200000480007A
:100000009705000093850502130540006B10B500AD :100000009705000093850502130540006B10B500AD
:10001000EF000001EF008074130500006B00050085 :10001000EF000001EF00407C130500006B000500BD
:10002000130540006B000500F32610029396A6010D :10002000130540006B000500F32610029396A6010D
:10003000732600029315A6001316260037F1FF6FF2 :10003000732600029315A6001316260037F1FF6FF2
:100040003301B1403301D1403301C100F326100226 :100040003301B1403301D1403301C100F326100226
@@ -16,130 +16,148 @@
:1000E0002322B1008345050063880500EF00C001AD :1000E0002322B1008345050063880500EF00C001AD
:1000F000130515006FF01FFF8320010083254100C9 :1000F000130515006FF01FFF8320010083254100C9
:100100001301C10067800000B702010023A0B20004 :100100001301C10067800000B702010023A0B20004
:1001100067800000130101FE232E1100232C8100B3 :1001100067800000130101FD2326110223248102C0
:10012000130401022326A4FEB70700810327C4FE9F :1001200013040103232EA4FC0327C4FD9307F0004E
:100130001317270093874715B307F70083A7070016 :1001300063E4E702B70700810327C4FD1317270014
:1001400013850700EFF05FF9130000008320C10161 :100140009387C71AB307F70083A707001385070033
:10015000032481011301010267800000130101FEE5 :10015000EFF09FF86F004007930700022326F4FE9C
:10016000232E1100232C8100130401022326A4FE58 :10016000A30504FE8327C4FE9387C7FF0327C4FDAE
:100170002324B4FE0325C4FEEFF01FF6032584FEFE :10017000B357F70093F7F7002322F4FE832744FEDA
:10018000EFF05FF9B707008113850704EFF0DFF4A4 :100180006386070093071000A305F4FE8347B4FEBF
:10019000130000008320C101032481011301010227 :1001900063820702B7070081032744FE1317270075
:1001A00067800000130101FE232E1100232C810023 :1001A0009387C71AB307F70083A7070013850700D3
:1001B00013040102B707008183A7C72A138507002C :1001B000EFF09FF28327C4FE9387C7FF2326F4FE48
:1001C000EFF09FEAB707008103A7872AB7070081EE :1001C0008327C4FEE340F0FA8320C10203248102A6
:1001D00083A7472A13850700E7000700EFF0DFEA4F :1001D0001301010367800000130101FE232E1100AB
:1001E0002326A4FE8327C4FE6388070013050000AE :1001E000232C8100130401022326A4FE2324B4FE41
:1001F000EFF09FE76F00C00013051000EFF0DFE69F :1001F0000325C4FEEFF05FEE032584FEEFF09FF1D0
:10020000130000008320C1010324810113010102B6 :10020000B707008113850704EFF01FED130000000E
:1002100067800000130101FE232E1100232C8100B2 :100210008320C101032481011301010267800000D2
:10022000130401022326A4FE2324B4FE2322C4FEC9 :10022000130101FE232E1100232C8100130401026F
:100230002320D4FEB7070081032744FE23A4E72A26 :10023000B707008183A7473013850700EFF0DFE29F
:10024000B7070081032704FE23A2E72AB70700812E :10024000B707008103A70730B707008183A7C72F2F
:10025000032784FE23A6E72AB70700809387471A5F :1002500013850700E7000700EFF01FE32326A4FE45
:10026000938507000325C4FEEFF09FDFEFF09FF3B7 :100260008327C4FE6388070013050000EFF0DFDF7B
:10027000130000008320C101032481011301010246 :100270006F00C00013051000EFF01FDF1300000037
:1002800067800000130101FE232E1100232C810042 :100280008320C10103248101130101026780000062
:1002900013040102B707008113854708EFF0DFE37D :10029000130101FE232E1100232C810013040102FF
:1002A00013054000EFF05FDCEFF09FDE2326A4FE95 :1002A0002326A4FE2324B4FE2322C4FE2320D4FE4E
:1002B0000327C4FEB70700818326C4FE9396260059 :1002B000B7070081032744FE23A0E730B70700817A
:1002C0009387471DB387F60023A0E70013051000AE :1002C000032704FE23AEE72EB7070081032784FE31
:1002D000EFF09FD9B707008183A7471D138507005B :1002D00023A2E730B70700809387072293850700A2
:1002E000EFF05FE3B707008113854709EFF0DFDE2A :1002E0000325C4FEEFF0DFD7EFF09FF3130000000B
:1002F000B70700819387471D83A747001385070031 :1002F0008320C101032481011301010267800000F2
:10030000EFF05FE1B707008113854709EFF0DFDC0D :10030000130101FE232E1100232C8100130401028E
:10031000B70700819387471D83A7870013850700D0 :10031000B707008113854708EFF01FDC1305400085
:10032000EFF05FDFB707008113854709EFF0DFDAF1 :10032000EFF09FD4EFF0DFD62326A4FE0327C4FE10
:10033000B70700819387471D83A7C7001385070070 :10033000B70700818326C4FE939626009387C722C1
:10034000EFF05FDDB707008113854709EFF0DFD8D5 :10034000B387F60023A0E70013051000EFF0DFD11C
:10035000130000008320C101032481011301010265 :10035000B707008183A7C72213850700EFF09FDB53
:1003600067800000130101FE232E1100232C810061 :10036000B707008113854709EFF01FD7B707008152
:1003700013040102EFF0DFD12326A4FE8327C4FE7D :100370009387C72283A7470013850700EFF09FD913
:1003800093B72700A305F4FE8347B4FE1385070047 :10038000B707008113854709EFF01FD5B707008134
:10039000EFF09FCE8347B4FE638407068327C4FE35 :100390009387C72283A7870013850700EFF09FD7B5
:1003A00093B717002305F4FE8347A4FE13850700C7 :1003A000B707008113854709EFF01FD3B707008116
:1003B000EFF09FCC8347A4FE63820702B70700815A :1003B0009387C72283A7C70013850700EFF09FD557
:1003C0000327C4FE131727009387072CB307F700F2 :1003C000B707008113854709EFF01FD11300000024
:1003D0001307A00023A0E7006F000002B707008109 :1003D0008320C10103248101130101026780000011
:1003E0000327C4FE131727009387072CB307F700D2 :1003E000130101FE232E1100232C810013040102AE
:1003F0001307B00023A0E700EFF09FC86F0040068E :1003F000EFF01FCA2326A4FE8327C4FE93B727006D
:100400008327C4FE93B73700A304F4FE834794FE0A :10040000A305F4FE8347B4FE13850700EFF0DFC6B3
:1004100013850700EFF05FC6834794FE63820702EF :100410008347B4FE638407068327C4FE93B717009F
:10042000B70700810327C4FE131727009387072C03 :100420002305F4FE8347A4FE13850700EFF0DFC425
:10043000B307F7001307C00023A0E7006F00000216 :100430008347A4FE63820702B70700810327C4FE37
:10044000B70700810327C4FE131727009387072CE3 :100440001317270093878731B307F7001307A0001E
:10045000B307F7001307D00023A0E700EFF05FC257 :1004500023A0E7006F000002B70700810327C4FE56
:10046000EFF01FC2B707008183A7072C1385070091 :100460001317270093878731B307F7001307B000EE
:10047000EFF05FCAB707008113854709EFF0DFC5CA :1004700023A0E700EFF0DFC06F0040068327C4FE33
:10048000B70700819387072C83A7470013850700D0 :1004800093B73700A304F4FE834794FE1385070057
:10049000EFF05FC8B707008113854709EFF0DFC3AE :10049000EFF09FBE834794FE63820702B707008197
:1004A000B70700819387072C83A787001385070070 :1004A0000327C4FE1317270093878731B307F7008C
:1004B000EFF05FC6B707008113854709EFF0DFC192 :1004B0001307C00023A0E7006F000002B707008108
:1004C000B70700819387072C83A7C7001385070010 :1004C0000327C4FE1317270093878731B307F7006C
:1004D000EFF05FC4B707008113854709EFF0DFBF76 :1004D0001307D00023A0E700EFF09FBAEFF05FBA58
:1004E000130000008320C1010324810113010102D4 :1004E000B707008183A7873113850700EFF09FC20C
:1004F00067800000130101FE232E1100232C8100D0 :1004F000B707008113854709EFF01FBEB7070081DA
:1005000013040102EFF05FB82326A4FEB7070081B1 :100500009387873183A7470013850700EFF09FC0CB
:100510000327C4FE131727009387072BB307F700A1 :10051000B707008113854709EFF01FBCB7070081BB
:100520000327C4FE23A0E7008327C4FE63860700D9 :100520009387873183A7870013850700EFF09FBE6D
:1005300013050000EFF05FB3130000008320C1013A :10053000B707008113854709EFF01FBAB70700819D
:10054000032481011301010267800000130101FEF1 :100540009387873183A7C70013850700EFF09FBC0F
:10055000232E1100232C810013040102B707008011 :10055000B707008113854709EFF01FB813000000AB
:100560009387474F2326F4FE8325C4FE13054000DE :100560008320C1010324810113010102678000007F
:10057000EFF01FAFEFF01FF8B707008183A7072B3D :10057000130101FE232E1100232C8100130401021C
:1005800013850700EFF01FB9B707008113854709EE :10058000EFF09FB02326A4FEB70700810327C4FE27
:10059000EFF09FB4B70700819387072B83A747002D :100590001317270093878730B307F7000327C4FE9C
:1005A00013850700EFF01FB7B707008113854709D0 :1005A00023A0E7008327C4FE63860700130500002D
:1005B000EFF09FB2B70700819387072B83A78700CF :1005B000EFF09FAB130000008320C10103248101F1
:1005C00013850700EFF01FB5B707008113854709B2 :1005C0001301010267800000130101FE232E1100B8
:1005D000EFF09FB0B70700819387072B83A7C70071 :1005D000232C810013040102B7070080938707577B
:1005E00013850700EFF01FB3B70700811385470994 :1005E0002326F4FE8325C4FE13054000EFF05FA729
:1005F000EFF09FAE130000008320C10103248101AE :1005F000EFF01FF8B707008183A787301385070046
:100600001301010267800000130101FF232611007E :10060000EFF05FB1B707008113854709EFF0DFAC6A
:100610002324810013040101EFF0DFC6B707008136 :10061000B70700819387873083A7470013850700BA
:1006200013858709EFF05FAB13054000EFF0DFA300 :10062000EFF05FAFB707008113854709EFF0DFAA4E
:10063000EFF05FD313051000EFF01FA3B7070081A1 :10063000B70700819387873083A78700138507005A
:100640001385C70AEFF05FA9EFF05FF01300000019 :10064000EFF05FADB707008113854709EFF0DFA832
:100650008320C10003248100130101016780000091 :10065000B70700819387873083A7C70013850700FA
:10066000130101FC232E1102232C81021304010427 :10066000EFF05FABB707008113854709EFF0DFA616
:100670002326A4FC8327C4FC2326F4FEEFF0DFA08E :10067000130000008320C101032481011301010242
:100680002324A4FEEFF0DFA02322A4FE8327C4FED0 :1006800067800000130101FF23261100232481004D
:1006900083A70701032784FE637EF7008327C4FE38 :1006900013040101EFF0DFC6B70700811385870956
:1006A00083A7C700032744FE6376F7009307100073 :1006A000EFF09FA313054000EFF01F9CEFF05FD326
:1006B0006F00800093070000A301F4FE834734FE1F :1006B00013051000EFF05F9BB70700811385C70A91
:1006C00093F71700A301F4FE834734FE1385070058 :1006C000EFF09FA1EFF05FF0130000008320C10066
:1006D000EFF09F9A834734FE638607068327C4FEA4 :1006D000032481001301010167800000130101FC64
:1006E00003A7C700832784FEB307F702032744FE4E :1006E000232E1102232C8102130401042326A4FCCF
:1006F000B307F700232EF4FC8327C4FE03A70700EB :1006F0008327C4FC2326F4FEEFF01F992324A4FED5
:100700008327C4FD93972700B307F70083A607004C :10070000EFF01F992322A4FE8327C4FE83A70701CD
:100710008327C4FE03A747008327C4FD93972700C0 :10071000032784FE637EF7008327C4FE83A7C700F8
:10072000B307F70003A707008327C4FE03A68700CB :10072000032744FE6376F700930710006F008000F4
:100730008327C4FD93972700B307F6003387E600AD :1007300093070000A301F4FE834734FE93F71700EC
:1007400023A0E700EFF0DF93130000008320C10334 :10074000A301F4FE834734FE13850700EFF0DF9228
:10075000032481031301010467800000130101FCDD :10075000834734FE638607068327C4FE03A7C700CA
:10076000232E1102232C810213040104130510000F :10076000832784FEB307F702032744FEB307F7008D
:10077000EFF09F8FB70700811385870FEFF0DF95AC :10077000232EF4FC8327C4FE03A707008327C4FDB0
:10078000EFF05FB0B707008113858710EFF0DF94BB :1007800093972700B307F70083A607008327C4FECB
:1007900013054000EFF05F8DEFF0DFBC1305100094 :1007900003A747008327C4FD93972700B307F700FB
:1007A000EFF09F8CB70700811385C711EFF0DF9240 :1007A00003A707008327C4FE03A687008327C4FD91
:1007B000EFF0DFD9B70700811385C712EFF0DF91A3 :1007B00093972700B307F6003387E60023A0E700EE
:1007C000B7070081938747222324F4FCB7070081F1 :1007C000EFF01F8C130000008320C103032481037A
:1007D000938747262326F4FCB70700819387072DCC :1007D0001301010467800000130101FB23261104AB
:1007E0002328F4FC93074000232AF4FC93074000DD :1007E000232481041304010513051000EFF0DF87B3
:1007F000232CF4FC930740002322F4FE93074000CF :1007F000B70700811385870FEFF01F8EEFF05FB012
:100800002320F4FE032744FE832504FE930784FC83 :10080000B707008113858710EFF01F8D1305400097
:1008100093860700B7070080138607661305070055 :10081000EFF09F85EFF0DFBC13051000EFF0DF84F1
:10082000EFF05F9F232604FE6F000008232404FEE0 :10082000B70700811385C711EFF01F8BEFF0DFD9F9
:100830006F004005032744FD8327C4FE3307F702FA :10083000B70700811385C712EFF01F8AB707FFFFC4
:10084000832784FEB307F700232EF4FCB70700814B :100840002326F4FE232404FE232204FE6F00000866
:100850000327C4FD131727009387072DB307F7005D :100850008327C4FE032784FE23A0E7008327C4FE6A
:1008600083A7070013850700EFF0DF8AB707008131 :1008600083A70700232CF4FC8327C4FE938507008D
:100870001385C714EFF05F86832784FE93871700E4 :10087000B707008113850714EFF01F96832584FEC8
:100880002324F4FE032744FD832784FEE3E4E7FAF0 :10088000B707008113858714EFF01F95832584FD3A
:10089000B707008113850715EFF01F848327C4FE77 :10089000B70700811385C715EFF01F94B7070081D4
:1008A000938717002326F4FE032784FD8327C4FEC5 :1008A0001385C716EFF05F83832784FE93871700B5
:1008B000E3EEE7F693070000138507008320C103EA :1008B0002324F4FE8327C4FE938747002326F4FEF7
:0C08C00003248103130101046780000081 :1008C000832744FE938717002322F4FE032744FE68
:1008D00093074000E3DEE7F6B7070081138547186A
:1008E000EFF08FFFB70700819387C727232CF4FA17
:1008F000B70700819387C72B232EF4FAB70700812F
:10090000938787322320F4FC930740002322F4FCD2
:10091000930740002324F4FC93074000232AF4FCAF
:10092000930740002328F4FC032744FD832504FD9E
:10093000930784FB93860700B70700801386C76D73
:1009400013050700EFF0DF94232004FE6F0000087A
:10095000232E04FC6F004005032744FC832704FE7C
:100960003307F7028327C4FDB307F7002326F4FCFF
:10097000B70700810327C4FC13172700938787322A
:10098000B307F70083A7070013850700EFF08FF880
:10099000B70700811385471AEFF00FF48327C4FDD2
:1009A00093871700232EF4FC032744FC8327C4FD00
:1009B000E3E4E7FAB70700811385871AEFF0CFF178
:1009C000832704FE938717002320F4FE032784FC6B
:1009D000832704FEE3EEE7F6930700001385070084
:1009E0008320C104032481041301010567800000F2
:02000004810079 :02000004810079
:10000000300000003100000032000000330000002A :10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A :10001000340000003500000036000000370000000A
@@ -159,30 +177,35 @@
:1000F000650000006600000053696D706C65204D5E :1000F000650000006600000053696D706C65204D5E
:1001000061696E0A00000000746573745F6469764B :1001000061696E0A00000000746573745F6469764B
:10011000657267656E63650A00000000746573743C :10011000657267656E63650A00000000746573743C
:100120005F77737061776E0A0000000076785F7306 :100120005F77737061776E0A000000005368617238
:100130007061776E5761727073206D61745F616476 :100130006564204D656D6F727920746573740A0073
:10014000645F6B65726E656C0A0000002000000041 :100140007074723A200000004F726967696E616CCA
:020150000A00A3 :100150002056616C75653A200000000052656164AC
:100154000000008104000081080000810C0000817F :100160002056616C75653A20000000002D2D2D2D64
:100164001000008114000081180000811C0000812F :100170002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0AD2
:100174002000008124000081280000812C000081DF :100180000000000076785F737061776E576172705F
:100184003000008134000081380000813C0000818F :1001900073206D61745F6164645F6B65726E656C22
:1001940044000081480000814C000081500000812F :0A01A0000A000000200000000A0021
:1001A40054000081580000815C00008160000081DF :1001AC000000008104000081080000810C00008127
:1001B40064000081680000816C000081700000818F :1001BC001000008114000081180000811C000081D7
:1001C40074000081780000817C000081800000813F :1001CC002000008124000081280000812C00008187
:1001D4000500000005000000050000000500000007 :1001DC003000008134000081380000813C00008137
:1001E400B8000081BC000081C0000081C40000810F :1001EC0044000081480000814C00008150000081D7
:1001F400C8000081CC000081D0000081D4000081BF :1001FC0054000081580000815C0000816000008187
:10020400D8000081DC000081E0000081E40000816E :10020C0064000081680000816C0000817000008136
:10021400E8000081EC000081F0000081F40000811E :10021C0074000081780000817C00008180000081E6
:1002240005000000050000000500000005000000B6 :10022C0005000000050000000500000005000000AE
:1002340006000000060000000600000006000000A2 :10023C00B8000081BC000081C0000081C4000081B6
:10024400070000000700000007000000070000008E :10024C00C8000081CC000081D0000081D400008166
:10025400080000000800000008000000080000007A :10025C00D8000081DC000081E0000081E400008116
:100264000100000001000000010000000100000086 :10026C00E8000081EC000081F0000081F4000081C6
:100274000100000001000000010000000100000076 :10027C00050000000500000005000000050000005E
:100284000100000001000000010000000100000066 :10028C00060000000600000006000000060000004A
:100294000100000001000000010000000100000056 :10029C000700000007000000070000000700000036
:1002AC000800000008000000080000000800000022
:1002BC00010000000100000001000000010000002E
:1002CC00010000000100000001000000010000001E
:1002DC00010000000100000001000000010000000E
:1002EC0001000000010000000100000001000000FE
:040000058000000077 :040000058000000077
:00000001FF :00000001FF

View File

@@ -27,7 +27,12 @@ void upload(char ** ptr, char * src, int size)
{ {
char * drain = *ptr; char * drain = *ptr;
*((int *) drain) = size; // *((int *) drain) = size;
char * size_ptr = (char *) size;
drain[0] = size_ptr[0];
drain[1] = size_ptr[1];
drain[2] = size_ptr[2];
drain[3] = size_ptr[3];
drain += 4; drain += 4;
@@ -46,11 +51,19 @@ void download(char ** ptr, char * drain)
char * src = *ptr; char * src = *ptr;
int size; int size;
size = *((int *) src);
// size = *((int *) src);
char * size_ptr = (char *) size;
size_ptr[0] = src[0];
size_ptr[1] = src[1];
size_ptr[2] = src[2];
size_ptr[3] = src[3];
src += 4; src += 4;
vx_printf("newlib.c: Size of download: ", size); // vx_printf("newlib.c: Size of download: ", size);
vx_printf("newlib.c: Real size: ", sizeof(struct stat)); // vx_printf("newlib.c: Real size: ", sizeof(struct stat));
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
{ {
@@ -79,12 +92,24 @@ int _fstat(int file, struct stat * st)
char * read_buffer = (char *) FILE_IO_READ; char * read_buffer = (char *) FILE_IO_READ;
struct stat newSt; unsigned value;
download((char **) &read_buffer, (char *) &value);
download((char **) &read_buffer, (char *) &newSt); st->st_mode = value;
download((char **) &read_buffer, (char *) &value);
st->st_mode = S_IFCHR; st->st_dev = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_uid = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_gid = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_size = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_blksize = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_blocks = value;
// st->st_mode = S_IFCHR;
// st->st_mode = 33279;
vx_printf("st_mode: ", st->st_mode); vx_printf("st_mode: ", st->st_mode);
vx_printf("st_dev: ", st->st_dev); vx_printf("st_dev: ", st->st_dev);

View File

@@ -101,7 +101,6 @@ void Harp::reg_doWrite(Word cpuId, Word regNum) {
Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id): Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id):
a(a), iDec(d), mem(mem), steps(4) a(a), iDec(d), mem(mem), steps(4)
{ {
release_warp = false; release_warp = false;
foundSchedule = true; foundSchedule = true;
schedule_w = 0; schedule_w = 0;

View File

@@ -82,7 +82,8 @@ Word signExt(Word w, Size bit, Word mask) {
void upload(unsigned * addr, char * src, int size, Warp & c) void upload(unsigned * addr, char * src, int size, Warp & c)
{ {
// c.core->mem.write(current_addr, reg[rsrc[1]] & 0x000000FF, c.supervisorMode, 1);
cerr << "WRITING FINAL: " << *src << " size: " << size << "\n";
unsigned current_addr = *addr; unsigned current_addr = *addr;
@@ -93,6 +94,7 @@ void upload(unsigned * addr, char * src, int size, Warp & c)
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
{ {
unsigned value = src[i] & 0x000000FF; unsigned value = src[i] & 0x000000FF;
cerr << "UPLOAD: (" << hex << current_addr << dec << ") = " << hex << ( value) << dec << "\n";
c.core->mem.write(current_addr, value, c.supervisorMode, 1); c.core->mem.write(current_addr, value, c.supervisorMode, 1);
current_addr += 1; current_addr += 1;
} }
@@ -155,13 +157,18 @@ void trap_to_simulator(Warp & c)
unsigned read_buffer = 0x71000000; unsigned read_buffer = 0x71000000;
unsigned write_buffer = 0x72000000; unsigned write_buffer = 0x72000000;
// cerr << "RAW READ BUFFER:\n"; cerr << "RAW READ BUFFER:\n";
// for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
// { {
// unsigned new_addr = read_buffer + (4*i); unsigned new_addr = read_buffer + (4*i);
// unsigned data_read = c.core->mem.read(new_addr, c.supervisorMode); unsigned data_read = c.core->mem.read(new_addr, c.supervisorMode);
// cerr << hex << new_addr << ": " << data_read << "\n"; cerr << hex << new_addr << ": " << data_read << "\n";
// } }
for (int j = 0; j < 1024; j+=1)
{
c.core->mem.write((write_buffer+j), 0, c.supervisorMode, 1);
}
int command; int command;
download(&read_buffer, (char *) &command, c); download(&read_buffer, (char *) &command, c);
@@ -219,18 +226,26 @@ void trap_to_simulator(Warp & c)
fprintf(stderr, "------------------------\n"); fprintf(stderr, "------------------------\n");
fprintf(stderr, "Size of struct: %x\n", sizeof(struct stat)); fprintf(stderr, "Size of struct: %x\n", sizeof(struct stat));
fprintf(stderr, "st_mode: %d\n", st.st_mode); fprintf(stderr, "st_mode: %x\n", st.st_mode);
fprintf(stderr, "st_dev: %d\n", st.st_dev); fprintf(stderr, "st_dev: %x\n", st.st_dev);
fprintf(stderr, "st_ino: %d\n", st.st_ino); fprintf(stderr, "st_ino: %x\n", st.st_ino);
fprintf(stderr, "st_uid: %d\n", st.st_uid); fprintf(stderr, "st_uid: %x\n", st.st_uid);
fprintf(stderr, "st_gid: %d\n", st.st_gid); fprintf(stderr, "st_gid: %x\n", st.st_gid);
fprintf(stderr, "st_rdev: %d\n", st.st_rdev); fprintf(stderr, "st_rdev: %x\n", st.st_rdev);
fprintf(stderr, "st_size: %d\n", st.st_size); fprintf(stderr, "st_size: %x\n", st.st_size);
fprintf(stderr, "st_blksize: %d\n", st.st_blksize); fprintf(stderr, "st_blksize: %x\n", st.st_blksize);
fprintf(stderr, "st_blocks: %d\n", st.st_blocks); fprintf(stderr, "st_blocks: %x\n", st.st_blocks);
fprintf(stderr, "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); fprintf(stderr, "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
upload(&write_buffer, (char *) &st, sizeof(struct stat), c); upload(&write_buffer, (char *) &st.st_mode , sizeof(st.st_mode), c);
upload(&write_buffer, (char *) &st.st_dev , sizeof(st.st_dev), c);
// upload(&write_buffer, (char *) &st.st_uid , sizeof(st.st_uid), c);
// upload(&write_buffer, (char *) &st.st_gid , sizeof(st.st_gid), c);
// upload(&write_buffer, (char *) &st.st_size , sizeof(st.st_size), c);
// upload(&write_buffer, (char *) &st.st_blksize , sizeof(st.st_blksize), c);
// upload(&write_buffer, (char *) &st.st_blocks , sizeof(st.st_blocks), c);
// upload(&write_buffer, (char *) &st, sizeof(struct stat), c);
cerr << "RAW Write BUFFER:\n"; cerr << "RAW Write BUFFER:\n";
unsigned original_write_buffer = 0x72000000; unsigned original_write_buffer = 0x72000000;

File diff suppressed because it is too large Load Diff