| #!/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 $? |
| } |