#!/bin/bash function parse_args { OPTS=d:f:e:p:n:P:j:s:t:c: LONGOPTS=device:,eblif:,pcf:,net:,part:,json:,sdc:,top:,corner: PARSED_OPTS=`getopt --options=${OPTS} --longoptions=${LONGOPTS} --name $0 -- $@` eval set -- ${PARSED_OPTS} DEVICE="" FAMILY="" DEVICE_NAME="" PART="" EBLIF="" PCF="" NET="" SDC="" JSON="" TOP="top" CORNER="" while true; do case "$1" in -d|--device) DEVICE=$2 shift 2 ;; -f|--family) FAMILY=$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 ;; -j|--json) JSON=$2 shift 2 ;; -s|--sdc) SDC=$2 shift 2 ;; -t|--top) TOP=$2 shift 2 ;; -c|--corner) CORNER=$2 shift 2 ;; --) break ;; esac done if [ -z $DEVICE ]; then echo "Please provide device name" exit 1 fi if [ -z $FAMILY ]; then echo "Please provide device family name" exit 1 fi if [ -z $EBLIF ]; then echo "Please provide blif file name" exit 1 fi export DEVICE=$DEVICE export FAMILY=$FAMILY export EBLIF=$EBLIF export PCF=$PCF export NET=$NET export SDC=$SDC export JSON=$JSON export CORNER=$CORNER if [[ "$DEVICE" == "qlf_k4n8_qlf_k4n8" ]]; then DEVICE_1="qlf_k4n8-qlf_k4n8_umc22_${CORNER}" elif [[ "$DEVICE" == "qlf_k6n10_qlf_k6n10" ]];then DEVICE_1="qlf_k6n10-qlf_k6n10_gf12" fi export TOP=$TOP export ARCH_DIR=`realpath ${MYPATH}/../share/symbiflow/arch/${DEVICE_1}_${DEVICE_1}` export ARCH_DEF=${ARCH_DIR}/arch_${DEVICE_1}_${DEVICE_1}.xml export RR_GRAPH=${ARCH_DIR}/${DEVICE_1}.rr_graph.bin export PLACE_DELAY=${ARCH_DIR}/rr_graph_${DEVICE_1}_${DEVICE_1}.place_delay.bin export ROUTE_DELAY=${ARCH_DIR}/rr_graph_${DEVICE_1}_${DEVICE_1}.lookahead.bin export DEVICE_NAME=${DEVICE_1} export VPR_CONFIG=`realpath ${MYPATH}/../share/symbiflow/scripts/${FAMILY}/vpr_config.sh` } function run_vpr { set -e source ${VPR_CONFIG} 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_placement_delay_lookup ${PLACE_DELAY} \ --read_router_lookahead ${ROUTE_DELAY} \ ${SDC_OPTIONS} \ $@ return $? } function run_genfasm { set -e source ${VPR_CONFIG} genfasm ${ARCH_DEF} \ ${EBLIF} \ --device ${DEVICE_NAME} \ ${VPR_OPTIONS} \ --read_rr_graph ${RR_GRAPH} \ $@ return $? }