run.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #!/bin/env bash
  2. ## Sample runs:
  3. ### Build for fpga: SIMU_OPTS= LOGROOT=gen/fpga RUNTARGET= ./run.sh
  4. ### Build for cycle model or rtl sim: LOGROOT=gen/rtl RUNTARGET= ./run.sh
  5. SIMU_OPTS=${SIMU_OPTS-"SIMULATION=1 SIMU=xlspike"}
  6. RUNTARGET=${RUNTARGET-xlspike}
  7. DATALOC=${DATALOC:-dlm}
  8. SOC=${SOC:-evalsoc}
  9. SCRIPTDIR=$(dirname $(readlink -f $BASH_SOURCE))
  10. SCRIPTDIR=$(readlink -f $SCRIPTDIR)
  11. COMMON_ENV=$(readlink -f $SCRIPTDIR/../env.sh)
  12. DOBENCH_CONFLOC=$SCRIPTDIR
  13. source $COMMON_ENV
  14. MAKEOPTS="SOC=$SOC"
  15. LINKSCRIPT="SoC/${SOC}/Board/nuclei_fpga_eval/Source/GCC/gcc_${SOC}_ilm.ld"
  16. function genreport {
  17. local logdir=${1:-$LOGDIR}
  18. REPORT_CMD="python3 $NSDK_REPORT_PY --logdir $logdir --split"
  19. if [ "x$RUNTARGET" != "x" ] ; then
  20. REPORT_CMD="$REPORT_CMD --run"
  21. fi
  22. echo $REPORT_CMD
  23. if [[ $DRYRUN == 0 ]] ; then
  24. eval $REPORT_CMD
  25. fi
  26. }
  27. function runbench {
  28. local appcfg=$1
  29. local hwcfg=$2
  30. local logdir=$3
  31. local mkopts=${@:4}
  32. RUN_OPTS=""
  33. if [ "x$RUNTARGET" != "x" ] ; then
  34. RUN_OPTS="--run --run_target $RUNTARGET"
  35. fi
  36. local BENCH_CMD="python3 $NSDK_BENCH_PY --appcfg $appcfg --hwcfg $hwcfg --parallel=-j --logdir $logdir --make_options \"$MAKEOPTS $SIMU_OPTS $mkopts\" $RUN_OPTS"
  37. echo $BENCH_CMD
  38. if [[ $DRYRUN == 0 ]] ; then
  39. eval $BENCH_CMD
  40. fi
  41. }
  42. function runbench_for_allcores {
  43. local logdir=${1:-$LOGDIR}
  44. pushd $NSDK_ROOT
  45. echo "Run benchmark on different CORE"
  46. local runlogdir=$logdir/barebench
  47. for core in n100
  48. do
  49. echo "Build for CORE: $core"
  50. local appcfg=${DOBENCH_CONFLOC}/app.json
  51. local hwcfg=${DOBENCH_CONFLOC}/bench_${core}.json
  52. local corelogdir=$runlogdir/$core
  53. runbench $appcfg $hwcfg $corelogdir
  54. done
  55. genreport $runlogdir
  56. popd
  57. }
  58. function rundhry_for_allcores {
  59. local logdir=${1:-$LOGDIR}
  60. pushd $NSDK_ROOT
  61. echo "Run for dhrystone different modes"
  62. local runlogdir=$logdir/dhrystone
  63. for core in n100
  64. do
  65. for dhrymode in ground inline best
  66. do
  67. echo "Build for CORE: $core DHRY_MODE=$dhrymode"
  68. local appcfg=${DOBENCH_CONFLOC}/dhry.json
  69. local hwcfg=${DOBENCH_CONFLOC}/bench_${core}.json
  70. local corelogdir=$runlogdir/$dhrymode/$core
  71. local mkopts="DHRY_MODE=$dhrymode"
  72. runbench $appcfg $hwcfg $corelogdir $mkopts
  73. done
  74. done
  75. genreport $runlogdir
  76. popd
  77. }
  78. function run_for_allmodes {
  79. local logdir=${1:-$LOGDIR}
  80. echo "Generate for all run modes"
  81. for runmode in "" lm icdlm dcilm cache bus clm
  82. do
  83. echo "Generate RUNMODE=$runmode"
  84. export RUNMODE=$runmode
  85. if [ "x$RUNMODE" == "x" ] ; then
  86. runmode=default
  87. fi
  88. # for runmode=cache, need to run on sram area
  89. if [ "x$RUNMODE" == "xcache" ] ; then
  90. export DOWNLOAD=sram
  91. fi
  92. runbench_for_allcores $logdir/$runmode
  93. rundhry_for_allcores $logdir/$runmode
  94. unset RUNMODE DOWNLOAD
  95. done
  96. }
  97. function run_for_one {
  98. echo "Generate only for run mode=$RUNMODE"
  99. export RUNMODE=$RUNMODE
  100. # for runmode=cache, need to run on sram area
  101. if [ "x$RUNMODE" == "xcache" ] ; then
  102. export DOWNLOAD=sram
  103. fi
  104. local logdir=${1:-$LOGDIR}
  105. runbench_for_allcores $logdir
  106. rundhry_for_allcores $logdir
  107. unset RUNMODE DOWNLOAD
  108. }
  109. function prebench {
  110. echo "Do pre-bench steps"
  111. if [ "x$DATALOC" == "xilm" ] ; then
  112. sed -i -e 's/REGION_ALIAS("DATA_LMA", ram)/REGION_ALIAS("DATA_LMA", ilm)/' ${NSDK_ROOT}/${LINKSCRIPT}
  113. fi
  114. }
  115. function postbench {
  116. echo "Do post-bench steps"
  117. if [ "x$DATALOC" == "xilm" ] ; then
  118. git stash
  119. fi
  120. }
  121. prebench
  122. gen_logdir dobench
  123. describe_env
  124. if [ "x$RUNMODE" == "xall" ] ; then
  125. run_for_allmodes | tee $LOGDIR/build.log
  126. else
  127. run_for_one | tee $LOGDIR/build.log
  128. fi
  129. postbench
  130. zip_logdir