OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [example/] [i2c/] [EEPROM/] [Xilinx-SP601/] [make] - Rev 11

Go to most recent revision | Compare with Previous | Blame | View Log

#!/bin/sh
#
# Make script for SP601 board.
#
# Usage:
#   ./make |& tee log

source /opt/Xilinx/14.7/ISE_DS/settings64.sh

# Ensure the script to build the micro processor is present.
if [ -n "`which ssbcc | sed -n -e '/^which:/p'`" ]; then
  echo "FATAL ERROR:" > /dev/stderr;
  echo "Could not find \"ssbcc\" required for build" > /dev/stderr;
  exit 1;
fi

#
# Set the build parameters.
#

NAME=sp601
DEVICE=xc6slx16-2-csg324

FILES="";
FILES+=" ../uc/i2c_eeprom.v";
FILES+=" ${NAME}.v";

#
# Prepatory work
#

# Build the micro processor.
( cd ../uc; ssbcc --define-clog i2c_eeprom.9x8 ) || { echo "SSBCC failed" > /dev/stderr; exit 1; }

#
# Configure and run the synthesis
#

for fname in ${FILES}; do
  echo "verilog work \"${fname}\"";
done > ${NAME}.prj;

mkdir -p xst/projnav.tmp;

cat <<EOF > ${NAME}.xst
set -tmpdir "xst/projnav.tmp"
set -xsthdpdir "xst"
run
-ifn ${NAME}.prj
-ifmt mixed
-ofn ${NAME}
-ofmt NGC
-p ${DEVICE}
-top ${NAME}
-opt_mode Speed
-opt_level 1
-power NO
-iuc NO
-keep_hierarchy No
-netlist_hierarchy As_Optimized
-rtlview Yes
-glob_opt AllClockNets
-read_cores YES
-write_timing_constraints NO
-cross_clock_analysis NO
-hierarchy_separator /
-bus_delimiter <>
-case Maintain
-slice_utilization_ratio 100
-bram_utilization_ratio 100
-dsp_utilization_ratio 100
-lc Auto
-reduce_control_sets Auto
-fsm_extract YES -fsm_encoding Auto
-safe_implementation No
-fsm_style LUT
-ram_extract Yes
-ram_style Auto
-rom_extract Yes
-shreg_extract YES
-rom_style Auto
-auto_bram_packing NO
-resource_sharing YES
-async_to_sync NO
-shreg_min_size 2
-use_dsp48 Auto
-iobuf YES
-max_fanout 100000
-bufg 16
-register_duplication YES
-register_balancing No
-optimize_primitives NO
-use_clock_enable Auto
-use_sync_set Auto
-use_sync_reset Auto
-iob Auto
-equivalent_register_removal YES
-slice_utilization_ratio_maxmargin 5
EOF

xst \
  -ifn "${NAME}.xst" \
  -ofn "${NAME}.syr" \
|| { echo "XST Failed!" > /dev/stderr; exit 1; }

#
# Run through PAR
#

ngdbuild \
  -dd _ngo \
  -nt timestamp \
  -uc ${NAME}.ucf \
  -p ${DEVICE} \
  ${NAME}.ngc ${NAME}.ngd \
|| { echo "ngdbuild Failed!" > /dev/stderr; exit 1; }

map \
  -p ${DEVICE} \
  -w \
  -logic_opt off \
  -ol high \
  -t 1 \
  -xt 0 \
  -register_duplication off \
  -r 4 \
  -global_opt off \
  -mt off \
  -ir off \
  -pr off \
  -lc off \
  -power off \
  -o ${NAME}.ncd \
  ${NAME}.ngd ${NAME}.pcf \
|| { echo "MAP Failed!" > /dev/stderr; exit 1; }

par \
  -w \
  -ol high \
  -mt off \
  ${NAME}.ncd ${NAME}.ncd ${NAME}.pcf \
|| { echo "PAR Failed!" > /dev/stderr; exit 1; }

#
# Optionally perform timing analysis
#

if [ `false` ]; then
  trce \
    -v 3 \
    -s 3 \
    -n 3 \
    -fastpaths \
    -xml ${NAME}.twx \
    ${NAME}.ncd \
    -o ${NAME}.twr \
    ${NAME}.pcf \
    -ucf ${NAME}.ucf 
fi

#
# Generate the bitstream file
#

cat <<EOF >${NAME}.ut
-w
-g DebugBitstream:No
-g Binary:no
-g CRC:Enable
-g Reset_on_err:No
-g ConfigRate:2
-g ProgPin:PullUp
-g TckPin:PullUp
-g TdiPin:PullUp
-g TdoPin:PullUp
-g TmsPin:PullUp
-g UnusedPin:PullDown
-g UserID:0xFFFFFFFF
-g ExtMasterCclk_en:No
-g SPI_buswidth:1
-g TIMER_CFG:0xFFFF
-g multipin_wakeup:No
-g StartUpClk:CClk
-g DONE_cycle:4
-g GTS_cycle:5
-g GWE_cycle:6
-g LCK_cycle:NoWait
-g Security:None
-g DonePipe:No
-g DriveDone:No
-g en_sw_gsr:No
-g drive_awake:No
-g sw_clk:Startupclk
-g sw_gwe_cycle:5
-g sw_gts_cycle:4
EOF

bitgen -f ${NAME}.ut ${NAME}.ncd \
|| { echo "BITGEN Failed!" > /dev/stderr; exit 1; }

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.