#!/bin/sh

# by teknohog, for synthesis and programming of Altera FPGAs, at least
# the Terasic DE2-115 board

SUBDIR=quartus_output
NICE="nice -n10"
IONICE="ionice -c 3"

# --64bit is removed in 11.0 >.<
QPATH=/space/Altera/11.1sp1/quartus/bin/
QPATH64=/space/Altera/10.1sp1/quartus/bin/


function backup () {
    # A backup might turn out useful
    for FILE in $SUBDIR/$PROJ.sof $PROJ.svf; do
	mv -f $FILE  ${FILE//$PROJ/$PROJ.old}
    done
}

function make_svf () {
    # USB Blaster limitation
    TCK_FREQ="12.0MHz"
    quartus_cpf -c -q $TCK_FREQ -g 3.3 -n p $SUBDIR/$PROJ.sof $PROJ.svf
}

function build () {
    backup
    
    if [ -n "$BITS" ]; then
	export PATH=$PATH:$QPATH64
    else
	export PATH=$PATH:$QPATH
    fi

    $NICE $IONICE quartus_sh $BITS --flow compile $PROJ
    make_svf
}

BUILD=false
BITS=""
while getopts bB opt; do
    case "$opt" in
	b) BUILD=true;;
	B) BUILD=true; BITS="--64bit";;
    esac
done
shift
PROJ=$1

build
