blob: 8a831587bcf4cc914b2ded69fbbdef9faeb40900 [file]
#!/bin/bash
if [ -z $VPR_OPTIONS ]; then
echo "Using default VPR options."
VPR_OPTIONS="@VPR_ARGS@"
fi
function parse_args {
OPTS=d:e:p:n:P:s:a:
LONGOPTS=device:,eblif:,pcf:,net:,part:,sdc:,additional_vpr_options:
PARSED_OPTS=`getopt --options=${OPTS} --longoptions=${LONGOPTS} --name $0 -- "$@"`
eval set -- "${PARSED_OPTS}"
DEVICE=""
DEVICE_NAME=""
PART=""
EBLIF=""
PCF=""
NET=""
SDC=""
ADDITIONAL_VPR_OPTIONS=""
while true; do
case "$1" in
-d|--device)
DEVICE=$2
shift 2
;;
-e|--eblif)
EBLIF=$2
shift 2
;;
-p|--pcf)
PCF=$2
shift 2
;;
-n|--net)
NET=$2
shift 2
;;
-P|--part)
PART=$2
shift 2
;;
-s|--sdc)
SDC=$2
shift 2
;;
-a|--additional_vpr_options)
ADDITIONAL_VPR_OPTIONS="$2"
shift 2
;;
--)
break
;;
esac
done
if [ -z $DEVICE ] && [ -n $PART ]; then
# Try to find device name. Accept only when exactly one is found
PART_DIRS=(${MYPATH}/../share/symbiflow/arch/*/${PART})
if [ ${#PART_DIRS[@]} -eq 1 ]; then
DEVICE=$(basename $(dirname "${PART_DIRS[0]}"))
fi
fi
if [ -z $DEVICE ]; then
echo "Please provide device name"
exit 1
fi
if [ -z $EBLIF ]; then
echo "Please provide blif file name"
exit 1
fi
export DEVICE=$DEVICE
export EBLIF=$EBLIF
export PCF=$PCF
export NET=$NET
export SDC=$SDC
export VPR_OPTIONS="$VPR_OPTIONS $ADDITIONAL_VPR_OPTIONS"
export ARCH_DIR=`realpath ${MYPATH}/../share/symbiflow/arch/$DEVICE`
export ARCH_DEF=${ARCH_DIR}/arch.timing.xml
export LOOKAHEAD=${ARCH_DIR}/rr_graph_${DEVICE}.lookahead.bin
export RR_GRAPH=${ARCH_DIR}/rr_graph_${DEVICE}.rr_graph.real.bin
export RR_GRAPH_XML=${ARCH_DIR}/rr_graph_${DEVICE}.rr_graph.real.xml
export PLACE_DELAY=${ARCH_DIR}/rr_graph_${DEVICE}.place_delay.bin
export DEVICE_NAME=`echo $DEVICE | sed -n 's/_/-/p'`
}
function run_vpr {
set -e
SDC_OPTIONS=""
if [ ! -z $SDC ]
then
SDC_OPTIONS="--sdc_file $SDC"
fi
vpr ${ARCH_DEF} \
${EBLIF} \
--device ${DEVICE_NAME} \
${VPR_OPTIONS} \
--read_rr_graph ${RR_GRAPH} \
--read_router_lookahead ${LOOKAHEAD} \
--read_placement_delay_lookup ${PLACE_DELAY} \
${SDC_OPTIONS} \
$@
return $?
}
function run_genfasm {
set -e
genfasm ${ARCH_DEF} \
${EBLIF} \
--device ${DEVICE_NAME} \
${VPR_OPTIONS} \
--read_rr_graph ${RR_GRAPH} \
$@
return $?
}
function run_vpr_xml_rr_graph {
set -e
vpr ${ARCH_DEF} \
${EBLIF} \
--read_rr_graph ${RR_GRAPH}
--write_rr_graph ${RR_GRAPH_XML}
$@
return $?
}