Created
August 10, 2019 06:32
-
-
Save apurvanandan1997/34280f1adffe28d5a2055e4922bd0361 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
#+-+-+-+-+-+-+-+- Invoking all tools with one case statement +-+-+-+-+-+-+ | |
# | |
# Common code is executed, synbatch/certbatch/protobatch is not executed in case of synplify, | |
# if program is not found an error is generated in true batch mode synbatch/certbatch | |
# is invoked with original switches. | |
# $Header: //synplicity/ui2017q2p1/unix_scripts/bin/config/execute#1 $ | |
# | |
#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | |
reqtmp=300 | |
# allow enabling valgrind or other debugger from env vars | |
for e in `echo $SYN_MEMCHECK_EXEC` | |
do | |
echo "SYN_PRGM is $SYN_PRGM" | |
if [ $e == $SYN_PRGM ]; then | |
echo "MEMCHECK: checking $e" | |
SYNPLIFY_SAVEMEM=1 | |
export SYNPLIFY_SAVEMEM | |
SYN_MEMCHECK=1 | |
fi | |
done | |
for e in `echo $SYNPERF_EXEC` | |
do | |
if [ $e == $SYN_PRGM ]; then | |
echo "SYNPERF enabled for $e" | |
SDP_ENABLED=1 | |
SYNPERF_CPU=1 | |
export SYNPERF_CPU SDP_ENABLED | |
fi | |
done | |
fatal_error() { | |
echo "************************************************************" 1>&2 | |
echo 1>&2 | |
echo "Error: $1" 1>&2 | |
echo 1>&2 | |
echo "************************************************************" 1>&2 | |
exit 2 # FPGA tool standard: 2 is error, 1 is only warning | |
} | |
update_rlwrap() { | |
if [ "$RLWRAP_HOME" ]; then | |
USER_COMPLETE="$RLWRAP_HOME/${SYN_PRGM}_completions" | |
if [ ! -d "${RLWRAP_HOME}" ]; then | |
echo "Creating \$RLWRAP_HOME directory ${RLWRAP_HOME}" 1>&2 | |
mkdir ${RLWRAP_HOME} | |
fi | |
else | |
USER_COMPLETE=~/".${SYN_PRGM}_completions" | |
fi | |
LIB_COMPLETE="$SYN_HOMEDIR/lib/rlwrap/${SYN_PRGM}_completions" | |
if [ -r "$LIB_COMPLETE" ] && ([ ! -f "$USER_COMPLETE" ] || ! diff -q "$USER_COMPLETE" "$LIB_COMPLETE" > /dev/null); then | |
if [ -f "$USER_COMPLETE" ];then | |
echo "Updating \"${USER_COMPLETE}\" for command completion. Change \$RLWRAP_HOME to select a different location." | |
cp "${USER_COMPLETE}" "${USER_COMPLETE}.backup" | |
else | |
echo "Initializing \"$USER_COMPLETE\" for command completion. Change \$RLWRAP_HOME to select a different location." | |
fi | |
cp "$LIB_COMPLETE" "$USER_COMPLETE" | |
fi | |
} | |
parse_runtime_args() { | |
i=0 | |
mode=-1 | |
l=${#args_a[@]} | |
while [ $l -gt $i ]; do | |
arg=${args_a[$i]} | |
case $arg in | |
-h|-help|--help ) | |
case $mode in | |
-1|1|2|3 ) mode=4;; | |
0 ) optargs="$optargs -h";; | |
esac | |
;; | |
board_query ) mode=3;; | |
board_bringup ) mode=2;; | |
debug ) mode=1;; | |
config ) | |
mode=0 | |
if [ -e ${runtime_dir}/design/designs/project.conf ]; then | |
project="-p ${runtime_dir}/design/designs/project.conf" | |
fi;; | |
-optargs ) | |
i=$[$i+1] | |
optargs="$optargs ${args_a[$i]}" | |
;; | |
-tcl ) | |
i=$[$i+1]; | |
script=${args_a[$i]} | |
case ${script} in | |
/* ) cfgscript="${script}" | |
dbgscript="-f ${script}" | |
;; | |
*) cfgscript="$cwd/${script}" | |
dbgscript="-f $cwd/${script}" | |
;; | |
esac | |
;; | |
-device ) | |
i=$[$i+1] | |
dev="-d ${args_a[$i]}";; | |
-in ) | |
i=$[$i+1] | |
runtime_dir=${args_a[$i]} | |
if [ $mode -eq 0 ]; then | |
# tolerate a possibly trailing '/project.conf' (by removing it from runtime_dir): | |
runtime_dir=${runtime_dir%/project.conf} | |
if [ -e ${runtime_dir}/project.conf ]; then | |
project="-p ${runtime_dir}/project.conf" | |
fi | |
else | |
# tolerate a possibly trailing '/debug.prj' (by removing it from runtime_dir): | |
runtime_dir=${runtime_dir%/debug.prj} | |
if [ ! -f ${runtime_dir}/debug.prj ]; then | |
echo "Error: Trying to load the specified project, but file \"${runtime_dir}/debug.prj\" does not exist!" | |
fi | |
# Nevertheless, pass it to the program, to see the error from there as well: | |
project="-prj ${runtime_dir}/debug.prj" | |
fi;; | |
-log|-loga ) | |
optargs="$optargs ${args_a[$i]}" | |
i=$[$i+1] | |
optargs="$optargs ${args_a[$i]}" | |
optlogfile="-loga ${args_a[$i]}" | |
;; | |
*) | |
optargs="$optargs ${args_a[$i]}" | |
;; | |
esac | |
i=$[$i+1] | |
done | |
if [ $mode -eq -1 ]; then | |
mode=1 | |
fi | |
} | |
case $SYN_PRGM in | |
synplify | \ | |
synplify_axis | \ | |
synplify_pro | \ | |
synplify_premier | \ | |
synplify_premier_dp ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/synplify ]; then | |
USERNAME="$(id -u -n)"; | |
ERRFILE="/tmp/syn_stderr_${USERNAME}_$$.log"; | |
if [ "$DEBUG_MODE" = "1" ]; then | |
echo "Type:"; | |
echo " run $@"; | |
echo "to start debugging."; | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/synplify -product $SYN_PRGM $SYN_ARGS "$@" >$ERRFILE; | |
else | |
if [ "$SYN_MEMCHECK" ]; then | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/synplify -product $SYN_PRGM $SYN_ARGS "$@" >$ERRFILE; | |
else | |
exec $SYN_HOMEDIR/$PLATFORM/mbin/synplify -product $SYN_PRGM $SYN_ARGS "$@" -graphicssystem $QT_GRAPHICS_MODE >$ERRFILE; | |
fi | |
fi | |
else | |
echo " " 1>&2 | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
echo "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/synplify" 1>&2 | |
echo " " 1>&2 | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
exit 2; | |
fi;; | |
protocompiler | \ | |
protocompiler_s | \ | |
protocompiler_dx ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/protocompiler ]; then | |
update_rlwrap | |
USERNAME="$(id -u -n)"; | |
ERRFILE="/tmp/syn_stderr_${USERNAME}_$$.log"; | |
if [ "$DEBUG_MODE" = "1" ]; then | |
echo "Type:"; | |
echo " run $@"; | |
echo "to start debugging."; | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/protocompiler -product $SYN_PRGM $SYN_ARGS "$@" >$ERRFILE; | |
else | |
if [ "$SYN_MEMCHECK" ]; then | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/protocompiler -product $SYN_PRGM $SYN_ARGS "$@" >$ERRFILE; | |
else | |
exec $SYN_HOMEDIR/$PLATFORM/mbin/protocompiler -product $SYN_PRGM $SYN_ARGS "$@" -graphicssystem $QT_GRAPHICS_MODE >$ERRFILE; | |
fi | |
fi | |
else | |
echo " " 1>&2 | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
echo "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/protocompiler" 1>&2 | |
echo " " 1>&2 | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
exit 2; | |
fi;; | |
certify | \ | |
identify_instrumentor | \ | |
identify_debugger_new ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM ]; then | |
ERRFILE="/tmp/syn_stderr_$$.log"; | |
if [ "$DEBUG_MODE" = "1" ]; then | |
if [ "$TRACE_MODE" = "" ]; then | |
echo "Type:"; | |
echo " run $SYN_ARGS $@"; | |
echo "to start debugging."; | |
fi | |
$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM 2>$ERRFILE; | |
else | |
if [ "$SYN_MEMCHECK" ]; then | |
$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM "$@" 2>$ERRFILE; | |
else | |
$SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM $SYN_ARGS "$@" -graphicssystem $QT_GRAPHICS_MODE 2>$ERRFILE; | |
fi | |
fi | |
cat $ERRFILE; | |
if [ `grep -l "bin is not a valid registry file" $ERRFILE |wc -l` = "1" ]; then | |
echo "Please delete your ~/.Synplicity directory to restore your registry."; | |
fi | |
rm -f $ERRFILE; | |
SYN_UI_RC=$? | |
else | |
fatal_error "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM" | |
fi;; | |
synbatch | \ | |
certbatch | \ | |
protobatch | \ | |
tssbuilder | \ | |
identify_instrumentor_shell | \ | |
identify_debugger_shell_new ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM ]; then | |
if [ "$SYN_BATCH_ENABLED" = "1" ]; then | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM ]; then | |
update_rlwrap | |
if [ -r "$SYN_HOMEDIR/$PLATFORM/rlwrap" ]; then | |
[ ! "${NORLWRAP}" ] && RLWRAP="$SYN_HOMEDIR/$PLATFORM/rlwrap -b \"\"" | |
fi | |
# Don't debug probably a shell script | |
if [ "$SYN_MEMCHECK" ]; then | |
$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM $SYN_ARGS "$@"; | |
else | |
$RLWRAP $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM $SYN_ARGS "$@"; | |
fi | |
exit $? | |
else | |
fatal_error "$SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM : $SYN_PRGM is not found at this location." | |
fi | |
fi | |
# Ensure there's space on /tmp | |
# tmpspace=`/bin/df -k | grep -v '^Filesystem' | head -1 | awk '{print $4;}'` | |
# if [ "${tmpspace}" -lt ${reqtmp} ]; then | |
# echo "Warning: Insufficient space (only ${tmpspace}K available) on /tmp could cause instability." | |
# echo "At least ${reqtmp}K is required. Please clean up /tmp." | |
# fi | |
ERRFILE="/tmp/syn_stderr_$$.log"; | |
if [ "$DEBUG_MODE" = "1" ]; then | |
if [ "$TRACE_MODE" = "" ]; then | |
echo "Type:"; | |
echo " run $SYN_ARGS $@"; | |
echo "to start debugging."; | |
fi | |
$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM 2>$ERRFILE; | |
else | |
if [ "$SYN_MEMCHECK" ]; then | |
$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM "$@" 2>$ERRFILE; | |
else | |
$SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM $SYN_ARGS "$@" 2>$ERRFILE; | |
fi | |
fi | |
cat $ERRFILE; | |
if [ `grep -l "bin is not a valid registry file" $ERRFILE |wc -l` = "1" ]; then | |
echo "Please delete your ~/.Synplicity directory to restore your registry."; | |
fi | |
rm -f $ERRFILE; | |
SYN_UI_RC=$? | |
else | |
fatal_error "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM" | |
fi;; | |
p_plan | \ | |
licensedialog ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM ]; then | |
if [ "$SYN_MEMCHECK" ]; then | |
echo "$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM \"$@\"" | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM "$@" | |
else | |
exec $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM "$@" | |
fi | |
else | |
fatal_error "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM" | |
fi;; | |
assistant ) | |
if [ -x $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM ]; then | |
if [ -n "$SYN_HELP_FILE" ]; then | |
exec $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM $SYN_HELP_ARGS $SYN_HOMEDIR/$SYN_HELP_FILE "$@" -graphicssystem $QT_GRAPHICS_MODE | |
else | |
exec $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM "$@" -graphicssystem $QT_GRAPHICS_MODE | |
fi | |
else | |
fatal_error "Error: Could not find $SYN_HOMEDIR/$PLATFORM/mbin/$SYN_PRGM" | |
fi;; | |
protocompiler_runtime | \ | |
protocompiler_s_runtime| \ | |
protocompiler_dx_runtime ) | |
cwd=`pwd` | |
#set input directory (location of debug.prj) | |
runtime_dir="$cwd" | |
args_a=( $@ ) | |
parse_runtime_args | |
# choose flow | |
case $mode in | |
0) #config | |
: ${HAPS_INSTALL_DIR:?"Error: Need to set HAPS_INSTALL_DIR."} | |
tool=$HAPS_INSTALL_DIR/bin/$CONFTOOL | |
SYN_ARGS="$project $dev $cfgscript" | |
;; | |
1) #debug | |
tool=$SYN_HOMEDIR/$PLATFORM/$SYN_TOOL | |
SYN_ARGS="$SYN_PRODUCT $project $dbgscript" | |
;; | |
2) #bringup | |
tool=$SYN_HOMEDIR/$PLATFORM/$SYN_TOOL | |
SYN_ARGS="$SYN_PRODUCT -board_bringup $dbgscript" | |
;; | |
3) #query | |
tool=$SYN_HOMEDIR/$PLATFORM/$SYN_TOOL | |
SYN_ARGS="$SYN_PRODUCT -board_query board_template.tcl" | |
;; | |
4) #help | |
echo " " 1>&2 | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
echo "Usage:" | |
echo " $SYN_PRGM config [-in <user specified export location>/<confpro prj>/designs>] [-shell] [-device <device>] [-tcl <script>] or" | |
echo " $SYN_PRGM debug [-log|loga <logfile>] [-in <user specified export location>/<Design Name>/debug>] [-skip_rtl_loading] [-shell] [-tcl <script>] or" | |
echo " $SYN_PRGM board_bringup [-log|loga <logfile>] [-shell] [-tcl <script>] or" | |
echo " $SYN_PRGM board_query [-log|loga <logfile>] -shell" | |
echo " "; | |
echo "************************************************************" 1>&2 | |
echo " " 1>&2 | |
exit 2; | |
;; | |
esac | |
if ! [ -x $tool ]; then | |
fatal_error "Could not find $tool" | |
fi | |
if [ "$DEBUG_MODE" = "1" ]; then | |
echo "Type:"; | |
echo " run $@"; | |
echo "to start debugging."; | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM | |
fi | |
if [ $SYN_BATCH_ENABLED = "0" ] || ( ! [ ! "$optlogfile" ] ); then | |
USERNAME="$(id -u -n)"; | |
ERRFILE="/tmp/syn_stderr_${USERNAME}_$$.log"; | |
exec $tool $optargs $SYN_ARGS >$ERRFILE 2>&1; | |
fi | |
exec $tool $optargs $SYN_ARGS; | |
;; | |
*) | |
if [ "${SYN_NOEXEC:+set}" = "set" ]; then | |
if [ "${SYN_SAVE_OUTPUT}" != "" ]; then | |
exec $SYN_PRGM >/tmp/${SYN_PRGM}_$$.out; | |
SYN_SAVE_OUTPUT=""; | |
export SYN_SAVE_OUTPUT; | |
else | |
exec $SYN_PRGM; | |
fi | |
else if [ -x $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM ]; then | |
if [ "$DEBUG_MODE" = "1" ]; then | |
echo "Type:"; | |
echo " run $@"; | |
echo "to start debugging."; | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM | |
else if [ "$SYN_MEMCHECK" ]; then | |
echo "$SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM \"$@\"" | |
exec $SYN_DEBUGGER $SYN_DEBUGGER_ARGS $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM "$@" | |
else | |
exec $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM "$@" | |
fi | |
fi | |
else | |
fatal_error "Error: Could not find $SYN_HOMEDIR/$PLATFORM/$SYN_PRGM" | |
fi | |
SYN_SSC_ENV=""; | |
export SYN_SSC_ENV; | |
fi;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment