mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-03 10:15:19 +00:00
commit ehedenberg coremark
This commit is contained in:
parent
9d17950c1d
commit
853c9243c1
@ -158,19 +158,22 @@ ee_u16 core_bench_list(core_results *res, ee_s16 finder_idx) {
|
|||||||
list_head *finder, *remover;
|
list_head *finder, *remover;
|
||||||
list_data info;
|
list_data info;
|
||||||
ee_s16 i;
|
ee_s16 i;
|
||||||
|
ee_printf("entered corebenchlist \n");
|
||||||
info.idx=finder_idx;
|
info.idx=finder_idx;
|
||||||
/* find <find_num> values in the list, and change the list each time (reverse and cache if value found) */
|
/* find <find_num> values in the list, and change the list each time (reverse and cache if value found) */
|
||||||
for (i=0; i<find_num; i++) {
|
for (i=0; i<find_num; i++) {
|
||||||
|
ee_printf("for loop \n");
|
||||||
info.data16= (i & 0xff) ;
|
info.data16= (i & 0xff) ;
|
||||||
this_find=core_list_find(list,&info);
|
this_find=core_list_find(list,&info);
|
||||||
list=core_list_reverse(list);
|
list=core_list_reverse(list);
|
||||||
if (this_find==NULL) {
|
if (this_find==NULL) {
|
||||||
missed++;
|
missed++;
|
||||||
retval+=(list->next->info->data16 >> 8) & 1;
|
retval+=(list->next->info->data16 >> 8) & 1;
|
||||||
|
ee_printf("if statement \n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
found++;
|
found++;
|
||||||
|
ee_printf("else statement \n");
|
||||||
if (this_find->info->data16 & 0x1) /* use found value */
|
if (this_find->info->data16 & 0x1) /* use found value */
|
||||||
retval+=(this_find->info->data16 >> 9) & 1;
|
retval+=(this_find->info->data16 >> 9) & 1;
|
||||||
/* and cache next item at the head of the list (if any) */
|
/* 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.
|
Found item, or NULL if not found.
|
||||||
*/
|
*/
|
||||||
list_head *core_list_find(list_head *list,list_data *info) {
|
list_head *core_list_find(list_head *list,list_data *info) {
|
||||||
|
ee_printf("entered core_list_find \n");
|
||||||
if (info->idx>=0) {
|
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;
|
list=list->next;
|
||||||
|
ee_printf("find while if \n");}
|
||||||
|
ee_printf("core_list_find end \n");
|
||||||
return list;
|
return list;
|
||||||
} else {
|
} else {
|
||||||
while (list && ((list->info->data16 & 0xff) != info->data16))
|
ee_printf("find else");
|
||||||
|
while (list && ((list->info->data16 & 0xff) != info->data16)){
|
||||||
list=list->next;
|
list=list->next;
|
||||||
|
ee_printf("find while else \n");}
|
||||||
|
ee_printf("core list find end \n");
|
||||||
return list;
|
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) {
|
list_head *core_list_reverse(list_head *list) {
|
||||||
|
ee_printf("entered core_list_reverse");
|
||||||
list_head *next=NULL, *tmp;
|
list_head *next=NULL, *tmp;
|
||||||
while (list) {
|
while (list) {
|
||||||
tmp=list->next;
|
tmp=list->next;
|
||||||
@ -453,6 +464,7 @@ list_head *core_list_reverse(list_head *list) {
|
|||||||
next=list;
|
next=list;
|
||||||
list=tmp;
|
list=tmp;
|
||||||
}
|
}
|
||||||
|
ee_printf("core_list_reverse done");
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
/* Function: core_list_mergesort
|
/* 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;
|
ee_s32 insize, nmerges, psize, qsize, i;
|
||||||
|
|
||||||
insize = 1;
|
insize = 1;
|
||||||
|
char bufftwo[200];
|
||||||
while (1) {
|
while (1) {
|
||||||
p = list;
|
p = list;
|
||||||
list = NULL;
|
list = NULL;
|
||||||
tail = NULL;
|
tail = NULL;
|
||||||
|
|
||||||
nmerges = 0; /* count number of merges we do in this pass */
|
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) {
|
while (p) {
|
||||||
nmerges++; /* there exists a merge to be done */
|
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 */
|
/* step `insize' places along from p */
|
||||||
q = p;
|
q = p;
|
||||||
psize = 0;
|
psize = 0;
|
||||||
|
ehitoa(insize, bufftwo, 10);
|
||||||
|
ee_printf(" insize = %s done \n", bufftwo);
|
||||||
for (i = 0; i < insize; i++) {
|
for (i = 0; i < insize; i++) {
|
||||||
|
ehitoa(i, bufftwo, 10);
|
||||||
|
ee_printf(" i = %s done \n", bufftwo);
|
||||||
psize++;
|
psize++;
|
||||||
q = q->next;
|
q = q->next;
|
||||||
if (!q) break;
|
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 */
|
/* if q hasn't fallen off end, we have two lists to merge */
|
||||||
qsize = insize;
|
qsize = insize;
|
||||||
|
ehitoa(qsize, bufftwo, 10);
|
||||||
|
ee_printf(" qsize = %s done \n", bufftwo);
|
||||||
|
|
||||||
/* now we have two lists; merge them */
|
/* now we have two lists; merge them */
|
||||||
while (psize > 0 || (qsize > 0 && q)) {
|
while (psize > 0 || (qsize > 0 && q)) {
|
||||||
|
|
||||||
/* decide whether next element of merge comes from p or q */
|
/* decide whether next element of merge comes from p or q */
|
||||||
if (psize == 0) {
|
if (psize == 0) {
|
||||||
|
ee_printf("if \n");
|
||||||
/* p is empty; e must come from q. */
|
/* p is empty; e must come from q. */
|
||||||
e = q; q = q->next; qsize--;
|
e = q; q = q->next; qsize--;
|
||||||
} else if (qsize == 0 || !q) {
|
} else if (qsize == 0 || !q) {
|
||||||
|
ee_printf("else if \n");
|
||||||
/* q is empty; e must come from p. */
|
/* q is empty; e must come from p. */
|
||||||
e = p; p = p->next; psize--;
|
e = p; p = p->next; psize--;
|
||||||
} else if (cmp(p->info,q->info,res) <= 0) {
|
} 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. */
|
/* First element of p is lower (or same); e must come from p. */
|
||||||
e = p; p = p->next; psize--;
|
e = p; p = p->next; psize--;
|
||||||
} else {
|
} else {
|
||||||
|
ee_printf("else \n");
|
||||||
/* First element of q is lower; e must come from q. */
|
/* First element of q is lower; e must come from q. */
|
||||||
e = q; q = q->next; qsize--;
|
e = q; q = q->next; qsize--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add the next element to the merged list */
|
/* add the next element to the merged list */
|
||||||
if (tail) {
|
if (tail) {
|
||||||
|
ee_printf("tail if \n");
|
||||||
tail->next = e;
|
tail->next = e;
|
||||||
} else {
|
} else {
|
||||||
|
ee_printf("tail else \n");
|
||||||
list = e;
|
list = e;
|
||||||
}
|
}
|
||||||
tail = 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 */
|
/* Otherwise repeat, merging lists twice the size */
|
||||||
insize *= 2;
|
insize *= 2;
|
||||||
|
ehitoa(insize, bufftwo, 10);
|
||||||
|
ee_printf(" insize2 = %s done \n", bufftwo);
|
||||||
}
|
}
|
||||||
#if COMPILER_REQUIRES_SORT_RETURN
|
#if COMPILER_REQUIRES_SORT_RETURN
|
||||||
return list;
|
return list;
|
||||||
|
@ -286,17 +286,17 @@ MAIN_RETURN_TYPE main(int argc, char *argv[]) {
|
|||||||
results[i].err=0;
|
results[i].err=0;
|
||||||
if ((results[i].execs & ID_LIST) &&
|
if ((results[i].execs & ID_LIST) &&
|
||||||
(results[i].crclist!=list_known_crc[known_id])) {
|
(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++;
|
results[i].err++;
|
||||||
}
|
}
|
||||||
if ((results[i].execs & ID_MATRIX) &&
|
if ((results[i].execs & ID_MATRIX) &&
|
||||||
(results[i].crcmatrix!=matrix_known_crc[known_id])) {
|
(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++;
|
results[i].err++;
|
||||||
}
|
}
|
||||||
if ((results[i].execs & ID_STATE) &&
|
if ((results[i].execs & ID_STATE) &&
|
||||||
(results[i].crcstate!=state_known_crc[known_id])) {
|
(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++;
|
results[i].err++;
|
||||||
}
|
}
|
||||||
total_errors+=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();
|
total_errors+=check_data_types();
|
||||||
/* and report results */
|
/* and report results */
|
||||||
//ee_printf("CoreMark Size : %lu\n", (long unsigned) results[0].size);
|
//ee_printf("CoreMark Size : %lu\n", (long unsigned) results[0].size);
|
||||||
sendstring("CoreMark Size : %lu\n, (long unsigned) results[0].size");
|
ee_printf("CoreMark Size : %lu\n, (long unsigned) results[0].size");
|
||||||
sendstring("Total ticks : %lu\n, (long unsigned) total_time");
|
ee_printf("Total ticks : %lu\n, (long unsigned) total_time");
|
||||||
#if HAS_FLOAT
|
#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)
|
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
|
#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)
|
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
|
#endif
|
||||||
if (time_in_secs(total_time) < 10) {
|
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++;
|
total_errors++;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendstring("Iterations : %lu\n, (long unsigned) default_num_contexts*results[0].iterations");
|
ee_printf("Iterations : %lu\n, (long unsigned) default_num_contexts*results[0].iterations");
|
||||||
sendstring("Compiler version : %s\n,COMPILER_VERSION");
|
ee_printf("Compiler version : %s\n,COMPILER_VERSION");
|
||||||
sendstring("Compiler flags : %s\n,COMPILER_FLAGS");
|
ee_printf("Compiler flags : %s\n,COMPILER_FLAGS");
|
||||||
#if (MULTITHREAD>1)
|
#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
|
#endif
|
||||||
sendstring("Memory location : %s\n,MEM_LOCATION");
|
ee_printf("Memory location : %s\n,MEM_LOCATION");
|
||||||
/* output for verification */
|
/* output for verification */
|
||||||
sendstring("seedcrc : 0x%04x\n,seedcrc");
|
ee_printf("seedcrc : 0x%04x\n,seedcrc");
|
||||||
if (results[0].execs & ID_LIST)
|
if (results[0].execs & ID_LIST)
|
||||||
for (i=0 ; i<default_num_contexts; i++)
|
for (i=0 ; i<default_num_contexts; i++)
|
||||||
sendstring("[%d]crclist : 0x%04x\n,i,results[i].crclist");
|
ee_printf("[%d]crclist : 0x%04x\n,i,results[i].crclist");
|
||||||
if (results[0].execs & ID_MATRIX)
|
if (results[0].execs & ID_MATRIX)
|
||||||
for (i=0 ; i<default_num_contexts; i++)
|
for (i=0 ; i<default_num_contexts; i++)
|
||||||
sendstring("[%d]crcmatrix : 0x%04x\n,i,results[i].crcmatrix");
|
ee_printf("[%d]crcmatrix : 0x%04x\n,i,results[i].crcmatrix");
|
||||||
if (results[0].execs & ID_STATE)
|
if (results[0].execs & ID_STATE)
|
||||||
for (i=0 ; i<default_num_contexts; i++)
|
for (i=0 ; i<default_num_contexts; i++)
|
||||||
sendstring("[%d]crcstate : 0x%04x\n,i,results[i].crcstate");
|
ee_printf("[%d]crcstate : 0x%04x\n,i,results[i].crcstate");
|
||||||
for (i=0 ; i<default_num_contexts; i++)
|
for (i=0 ; i<default_num_contexts; i++)
|
||||||
sendstring("[%d]crcfinal : 0x%04x\n,i,results[i].crc");
|
ee_printf("[%d]crcfinal : 0x%04x\n,i,results[i].crc");
|
||||||
if (total_errors==0) {
|
if (total_errors==0) {
|
||||||
sendstring("Correct operation validated. See README.md for run and reporting rules.\n");
|
ee_printf("Correct operation validated. See README.md for run and reporting rules.\n");
|
||||||
#if HAS_FLOAT
|
#if HAS_FLOAT
|
||||||
if (known_id==3) {
|
if (known_id==3) {
|
||||||
sendstring("CoreMark 1.0 : %f / %s %s,default_num_contexts*results[0].iterations/time_in_secs(total_time),COMPILER_VERSION,COMPILER_FLAGS");
|
ee_printf("CoreMark 1.0 : %f / %s %s,default_num_contexts*results[0].iterations/time_in_secs(total_time),COMPILER_VERSION,COMPILER_FLAGS");
|
||||||
#if defined(MEM_LOCATION) && !defined(MEM_LOCATION_UNSPEC)
|
#if defined(MEM_LOCATION) && !defined(MEM_LOCATION_UNSPEC)
|
||||||
sendstring(" / %s,MEM_LOCATION");
|
ee_printf(" / %s,MEM_LOCATION");
|
||||||
#else
|
#else
|
||||||
sendstring(" / %s,mem_name[MEM_METHOD]");
|
ee_printf(" / %s,mem_name[MEM_METHOD]");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (MULTITHREAD>1)
|
#if (MULTITHREAD>1)
|
||||||
sendstring(" / %d:%s,default_num_contexts,PARALLEL_METHOD");
|
ee_printf(" / %d:%s,default_num_contexts,PARALLEL_METHOD");
|
||||||
#endif
|
#endif
|
||||||
sendstring("\n");
|
ee_printf("\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (total_errors>0)
|
if (total_errors>0)
|
||||||
sendstring("Errors detected\n");
|
ee_printf("Errors detected\n");
|
||||||
if (total_errors<0)
|
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)
|
#if (MEM_METHOD==MEM_MALLOC)
|
||||||
for (i=0 ; i<MULTITHREAD; i++)
|
for (i=0 ; i<MULTITHREAD; i++)
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
# wally-coremark.do
|
|
||||||
#
|
|
||||||
# Modification by Oklahoma State University & Harvey Mudd College
|
|
||||||
# Use with Testbench
|
|
||||||
# James Stine, 2008; David Harris 2021
|
|
||||||
# Go Cowboys!!!!!!
|
|
||||||
#
|
|
||||||
# Takes 1:10 to run RV64IC tests using gui
|
|
||||||
|
|
||||||
# Use this wally-coremark.do file to run this example.
|
|
||||||
# Either bring up ModelSim and type the following at the "ModelSim>" 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
|
|
Loading…
Reference in New Issue
Block a user