From 853c9243c100007b9a313c8be74e2b76d5fdadee Mon Sep 17 00:00:00 2001 From: Elizabeth Hedenberg Date: Mon, 17 May 2021 18:00:47 -0400 Subject: [PATCH] commit ehedenberg coremark --- riscv-coremark/coremark/core_list_join.c | 39 ++++++- riscv-coremark/coremark/core_main.c | 56 ++++----- wally-pipelined/regression/wally-coremark.do | 115 ------------------- 3 files changed, 62 insertions(+), 148 deletions(-) delete mode 100644 wally-pipelined/regression/wally-coremark.do diff --git a/riscv-coremark/coremark/core_list_join.c b/riscv-coremark/coremark/core_list_join.c index b42c1234d..e5dba39e3 100644 --- a/riscv-coremark/coremark/core_list_join.c +++ b/riscv-coremark/coremark/core_list_join.c @@ -158,19 +158,22 @@ ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx) { list_head *finder, *remover; list_data info; ee_s16 i; - + ee_printf("entered corebenchlist \n"); info.idx=finder_idx; /* find values in the list, and change the list each time (reverse and cache if value found) */ for (i=0; inext->info->data16 >> 8) & 1; + ee_printf("if statement \n"); } else { found++; + ee_printf("else statement \n"); if (this_find->info->data16 & 0x1) /* use found value */ retval+=(this_find->info->data16 >> 9) & 1; /* and cache next item at the head of the list (if any) */ @@ -421,13 +424,20 @@ list_head *core_list_undo_remove(list_head *item_removed, list_head *item_modifi Found item, or NULL if not found. */ list_head *core_list_find(list_head *list,list_data *info) { + ee_printf("entered core_list_find \n"); if (info->idx>=0) { - while (list && (list->info->idx != info->idx)) + ee_printf("find if \n"); + while (list && (list->info->idx != info->idx)){ list=list->next; + ee_printf("find while if \n");} + ee_printf("core_list_find end \n"); return list; } else { - while (list && ((list->info->data16 & 0xff) != info->data16)) + ee_printf("find else"); + while (list && ((list->info->data16 & 0xff) != info->data16)){ list=list->next; + ee_printf("find while else \n");} + ee_printf("core list find end \n"); return list; } } @@ -446,6 +456,7 @@ list_head *core_list_find(list_head *list,list_data *info) { */ list_head *core_list_reverse(list_head *list) { + ee_printf("entered core_list_reverse"); list_head *next=NULL, *tmp; while (list) { tmp=list->next; @@ -453,6 +464,7 @@ list_head *core_list_reverse(list_head *list) { next=list; list=tmp; } + ee_printf("core_list_reverse done"); return next; } /* Function: core_list_mergesort @@ -481,20 +493,27 @@ list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res) ee_s32 insize, nmerges, psize, qsize, i; insize = 1; - + char bufftwo[200]; while (1) { p = list; list = NULL; tail = NULL; nmerges = 0; /* count number of merges we do in this pass */ - + ehitoa(nmerges, bufftwo, 10); + ee_printf(" nmerges default value = %s done \n", bufftwo); while (p) { nmerges++; /* there exists a merge to be done */ + ehitoa(nmerges, bufftwo, 10); + ee_printf(" current nmerges = %s done \n", bufftwo); /* step `insize' places along from p */ q = p; psize = 0; + ehitoa(insize, bufftwo, 10); + ee_printf(" insize = %s done \n", bufftwo); for (i = 0; i < insize; i++) { + ehitoa(i, bufftwo, 10); + ee_printf(" i = %s done \n", bufftwo); psize++; q = q->next; if (!q) break; @@ -502,29 +521,37 @@ list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res) /* if q hasn't fallen off end, we have two lists to merge */ qsize = insize; + ehitoa(qsize, bufftwo, 10); + ee_printf(" qsize = %s done \n", bufftwo); /* now we have two lists; merge them */ while (psize > 0 || (qsize > 0 && q)) { /* decide whether next element of merge comes from p or q */ if (psize == 0) { + ee_printf("if \n"); /* p is empty; e must come from q. */ e = q; q = q->next; qsize--; } else if (qsize == 0 || !q) { + ee_printf("else if \n"); /* q is empty; e must come from p. */ e = p; p = p->next; psize--; } else if (cmp(p->info,q->info,res) <= 0) { + ee_printf("else if 2 \n"); /* First element of p is lower (or same); e must come from p. */ e = p; p = p->next; psize--; } else { + ee_printf("else \n"); /* First element of q is lower; e must come from q. */ e = q; q = q->next; qsize--; } /* add the next element to the merged list */ if (tail) { + ee_printf("tail if \n"); tail->next = e; } else { + ee_printf("tail else \n"); list = e; } tail = e; @@ -542,6 +569,8 @@ list_head *core_list_mergesort(list_head *list, list_cmp cmp, core_results *res) /* Otherwise repeat, merging lists twice the size */ insize *= 2; + ehitoa(insize, bufftwo, 10); + ee_printf(" insize2 = %s done \n", bufftwo); } #if COMPILER_REQUIRES_SORT_RETURN return list; diff --git a/riscv-coremark/coremark/core_main.c b/riscv-coremark/coremark/core_main.c index e8a8439ce..b2149a187 100644 --- a/riscv-coremark/coremark/core_main.c +++ b/riscv-coremark/coremark/core_main.c @@ -286,17 +286,17 @@ MAIN_RETURN_TYPE main(int argc, char *argv[]) { results[i].err=0; if ((results[i].execs & ID_LIST) && (results[i].crclist!=list_known_crc[known_id])) { - sendstring("[%u]ERROR! list crc 0x%04x - should be 0x%04x\n,i,results[i].crclist,list_known_crc[known_id]"); + ee_printf("[%u]ERROR! list crc 0x%04x - should be 0x%04x\n,i,results[i].crclist,list_known_crc[known_id]"); results[i].err++; } if ((results[i].execs & ID_MATRIX) && (results[i].crcmatrix!=matrix_known_crc[known_id])) { - sendstring("[%u]ERROR! matrix crc 0x%04x - should be 0x%04x\n,i,results[i].crcmatrix,matrix_known_crc[known_id]"); + ee_printf("[%u]ERROR! matrix crc 0x%04x - should be 0x%04x\n,i,results[i].crcmatrix,matrix_known_crc[known_id]"); results[i].err++; } if ((results[i].execs & ID_STATE) && (results[i].crcstate!=state_known_crc[known_id])) { - sendstring("[%u]ERROR! state crc 0x%04x - should be 0x%04x\n,i,results[i].crcstate,state_known_crc[known_id]"); + ee_printf("[%u]ERROR! state crc 0x%04x - should be 0x%04x\n,i,results[i].crcstate,state_known_crc[known_id]"); results[i].err++; } total_errors+=results[i].err; @@ -305,64 +305,64 @@ MAIN_RETURN_TYPE main(int argc, char *argv[]) { total_errors+=check_data_types(); /* and report results */ //ee_printf("CoreMark Size : %lu\n", (long unsigned) results[0].size); - sendstring("CoreMark Size : %lu\n, (long unsigned) results[0].size"); - sendstring("Total ticks : %lu\n, (long unsigned) total_time"); + ee_printf("CoreMark Size : %lu\n, (long unsigned) results[0].size"); + ee_printf("Total ticks : %lu\n, (long unsigned) total_time"); #if HAS_FLOAT - sendstring("Total time (secs): %f\n,time_in_secs(total_time)"); + ee_printf("Total time (secs): %f\n,time_in_secs(total_time)"); if (time_in_secs(total_time) > 0) - sendstring("Iterations/Sec : %f\n,default_num_contexts*results[0].iterations/time_in_secs(total_time)"); + ee_printf("Iterations/Sec : %f\n,default_num_contexts*results[0].iterations/time_in_secs(total_time)"); #else - sendstring("Total time (secs): %d\n,time_in_secs(total_time)"); + ee_printf("Total time (secs): %d\n,time_in_secs(total_time)"); if (time_in_secs(total_time) > 0) - sendstring("Iterations/Sec : %d\n,default_num_contexts*results[0].iterations/time_in_secs(total_time)"); + ee_printf("Iterations/Sec : %d\n,default_num_contexts*results[0].iterations/time_in_secs(total_time)"); #endif if (time_in_secs(total_time) < 10) { - sendstring("ERROR! Must execute for at least 10 secs for a valid result!\n"); + ee_printf("ERROR! Must execute for at least 10 secs for a valid result!\n"); total_errors++; } - sendstring("Iterations : %lu\n, (long unsigned) default_num_contexts*results[0].iterations"); - sendstring("Compiler version : %s\n,COMPILER_VERSION"); - sendstring("Compiler flags : %s\n,COMPILER_FLAGS"); + ee_printf("Iterations : %lu\n, (long unsigned) default_num_contexts*results[0].iterations"); + ee_printf("Compiler version : %s\n,COMPILER_VERSION"); + ee_printf("Compiler flags : %s\n,COMPILER_FLAGS"); #if (MULTITHREAD>1) - sendstring("Parallel %s : %d\n,PARALLEL_METHOD,default_num_contexts"); + ee_printf("Parallel %s : %d\n,PARALLEL_METHOD,default_num_contexts"); #endif - sendstring("Memory location : %s\n,MEM_LOCATION"); + ee_printf("Memory location : %s\n,MEM_LOCATION"); /* output for verification */ - sendstring("seedcrc : 0x%04x\n,seedcrc"); + ee_printf("seedcrc : 0x%04x\n,seedcrc"); if (results[0].execs & ID_LIST) for (i=0 ; i1) - sendstring(" / %d:%s,default_num_contexts,PARALLEL_METHOD"); + ee_printf(" / %d:%s,default_num_contexts,PARALLEL_METHOD"); #endif - sendstring("\n"); + ee_printf("\n"); } #endif } if (total_errors>0) - sendstring("Errors detected\n"); + ee_printf("Errors detected\n"); if (total_errors<0) - sendstring("Cannot validate operation for these seed values, please compare with results on a known platform.\n"); + ee_printf("Cannot validate operation for these seed values, please compare with results on a known platform.\n"); #if (MEM_METHOD==MEM_MALLOC) for (i=0 ; i" prompt: -# do wally-coremark.do -# or, to run from a shell, type the following at the shell prompt: -# vsim -do wally-coremark.do -c -# (omit the "-c" to see the GUI while running from the shell) - -onbreak {resume} - -# create library -if [file exists work] { - vdel -all -} -vlib work - -# compile source files -# suppress spurious warnngs about -# "Extra checking for conflicts with always_comb done at vopt time" -# because vsim will run vopt - -# default to config/coremark, but allow this to be overridden at the command line. For example: -vlog +incdir+../config/coremark ../testbench/testbench-coremark.sv ../src/*/*.sv -suppress 2583 - -# start and run simulation -# remove +acc flag for faster sim during regressions if there is no need to access internal signals -vopt +acc work.testbench -o workopt -vsim workopt - -view wave - --- display input and output signals as hexidecimal values -# Diplays All Signals recursively -add wave /testbench/clk -add wave /testbench/reset -add wave -divider -#add wave /testbench/dut/hart/ebu/IReadF -#add wave /testbench/dut/hart/DataStall -#add wave /testbench/dut/hart/InstrStall -#add wave /testbench/dut/hart/StallF -#add wave /testbench/dut/hart/StallD -#add wave /testbench/dut/hart/FlushD -#add wave /testbench/dut/hart/FlushE -#add wave /testbench/dut/hart/FlushM -#add wave /testbench/dut/hart/FlushW - -add wave -divider Fetch -add wave -hex /testbench/dut/hart/ifu/PCF -add wave -hex /testbench/dut/hart/ifu/InstrF -add wave /testbench/InstrFName -add wave -divider Decode -add wave -hex /testbench/dut/hart/ifu/PCD -add wave -hex /testbench/dut/hart/ifu/InstrD -add wave /testbench/InstrDName -add wave -divider Execute -add wave -hex /testbench/dut/hart/ifu/PCE -add wave -hex /testbench/dut/hart/ifu/InstrE -add wave /testbench/InstrEName -add wave -divider Memory -add wave -hex /testbench/dut/hart/ifu/PCM -add wave -hex /testbench/dut/hart/ifu/InstrM -add wave /testbench/InstrMName -add wave -divider Write -add wave -hex /testbench/PCW -add wave -hex /testbench/InstrW -add wave /testbench/InstrWName -#add wave -hex /testbench/dut/hart/ieu/dp/SrcAE -#add wave -hex /testbench/dut/hart/ieu/dp/SrcBE -#add wave -hex /testbench/dut/hart/ieu/dp/ALUResultE -#add wave /testbench/dut/hart/ieu/dp/PCSrcE -add wave -divider Regfile_signals -#add wave /testbench/dut/uncore/dtim/memwrite -#add wave -hex /testbench/dut/uncore/HADDR -#add wave -hex /testbench/dut/uncore/HWDATA -#add wave -divider -#add wave -hex /testbench/PCW -#add wave /testbench/InstrWName -#add wave /testbench/dut/hart/ieu/dp/RegWriteW -#add wave -hex /testbench/dut/hart/ieu/dp/ResultW -#add wave -hex /testbench/dut/hart/ieu/dp/RdW -add wave -hex -r /testbench/dut/hart/ieu/dp/regf/* -add wave -divider Regfile_itself -add wave -hex -r /testbench/dut/hart/ieu/dp/regf/rf -add wave -divider RAM -add wave -hex -r /testbench/dut/uncore/dtim/RAM -add wave -divider Misc -add wave -divider -#add wave -hex -r /testbench/* - --- Set Wave Output Items -TreeUpdate [SetDefaultTree] -WaveRestoreZoom {0 ps} {100 ps} -configure wave -namecolwidth 250 -configure wave -valuecolwidth 120 -configure wave -justifyvalue left -configure wave -signalnamewidth 0 -configure wave -snapdistance 10 -configure wave -datasetprefix 0 -configure wave -rowmargin 4 -configure wave -childrowmargin 2 -set DefaultRadix hexadecimal - --- Run the Simulation -#run 7402000 -#run 10500 -run -all -#quit