#!/bin/bash
# ------------------------------------------------------------------------------
#  Copyright (C) BAY9, 2015
# ------------------------------------------------------------------------------
#
# Compile script for ISE 14.7
#

# Clean / goto output dir
rm -r out  2>/dev/null
mkdir out
cd out

# Copy Xilinx config files
cp ../cfg/vrfX* . 

# Make some directories
mkdir -p xst/projnav.tmp/
mkdir -p _ngo

# Run ISE, filter useless warnings
echo "Run XST"
xst -intstyle ise \
    -ifn "./vrfX.xst" \
    -ofn "./vrfX.syr" \
    2>&1 > xst.log

grep -i warning xst.log                             \
  | grep -v renaming                                \
  | grep -v "is never"                              \
  | grep -v "is assigned but never"                 \
  | grep -v "is used but never"                     \
  | grep -v "internal tristates are replaced"       \
  | grep -v "of sequential type is unc"             \
  | grep -v "multiplication is partially used"      \
  | grep -v "will be trimmed"                       \
  > xst.warn

echo "Run NGDBUILD"
ngdbuild -intstyle ise \
         -dd _ngo \
         -nt timestamp \
         -uc vrfX.ucf \
         -p xc7a200t-fbg484-2 \
         vrfX.ngc vrfX.ngd \
         2>&1 > ngdbuild.log

echo "Run MAP"
map -intstyle ise \
    -p xc7a200t-fbg484-2 \
    -w \
    -logic_opt off \
    -ol high \
    -t 1 \
    -xt 0 \
    -register_duplication off \
    -r 4 \
    -mt 2 \
    -ir off \
    -pr off \
    -lc off \
    -power off \
    -o vrfX_map.ncd vrfX.ngd vrfX.pcf \
    2>&1 > map.log
  
echo "Run PAR"
par -w \
    -intstyle ise \
    -ol high \
    -mt 2 \
    vrfX_map.ncd vrfX.ncd vrfX.pcf \
    2>&1 > par.log

echo "Run TRCE"
trce -intstyle ise \
     -v 3 \
     -s 2 \
     -n 3 \
     -fastpaths \
     -xml vrfX.twx vrfX.ncd \
     -o vrfX.twr vrfX.pcf \
     -ucf vrfX.ucf \
     2>&1 > trce.log

echo "Run BITGEN"
bitgen -intstyle ise \
       -f vrfX.ut \
       vrfX.ncd \
       2>&1 > bitgen.log

