| #!/bin/bash |
| set -e |
| |
| MYPATH=`realpath $0` |
| MYPATH=`dirname ${MYPATH}` |
| |
| source ${MYPATH}/env |
| echo "Writing bitstream ..." |
| |
| FRM2BIT="" |
| if [ ! -z ${FRAMES2BIT} ]; then |
| FRM2BIT="--frm2bit ${FRAMES2BIT}" |
| fi |
| |
| OPTS=d:f:b:p: |
| LONGOPTS=device:,fasm:,bit:,part: |
| |
| PARSED_OPTS=`getopt --options=${OPTS} --longoptions=${LONGOPTS} --name $0 -- $@` |
| eval set -- ${PARSED_OPTS} |
| |
| DEVICE="" |
| FASM="" |
| BIT="" |
| PART=xc7a35tcpg236-1 |
| |
| while true; do |
| case "$1" in |
| -d|--device) |
| DEVICE=$2 |
| shift 2 |
| ;; |
| -p|--part) |
| PART=$2 |
| shift 2 |
| ;; |
| -f|--fasm) |
| FASM=$2 |
| shift 2 |
| ;; |
| -b|--bit) |
| BIT=$2 |
| shift 2 |
| ;; |
| --) |
| break |
| ;; |
| esac |
| done |
| |
| DATABASE_DIR=${DATABASE_DIR:=$(prjxray-config)} |
| |
| if [ -z $DEVICE ]; then |
| # Try to find device name. Accept only when exactly one is found |
| PART_DIRS=(${DATABASE_DIR}/*/${PART}) |
| if [ ${#PART_DIRS[@]} -eq 1 ]; then |
| DEVICE=$(basename $(dirname "${PART_DIRS[0]}")) |
| else |
| echo "Please provide device name" |
| exit 1 |
| fi |
| fi |
| |
| DBROOT=`realpath ${DATABASE_DIR}/${DEVICE}` |
| |
| if [ -z $FASM ]; then |
| echo "Please provide fasm file name" |
| exit 1 |
| fi |
| |
| if [ -z $BIT ]; then |
| echo "Please provide bit file name" |
| exit 1 |
| fi |
| |
| xcfasm --db-root ${DBROOT} --part ${PART} --part_file ${DBROOT}/${PART}/part.yaml --sparse --emit_pudc_b_pullup --fn_in ${FASM} --bit_out ${BIT} ${FRM2BIT} |
| |