| #!/bin/bash |
| |
| set -ex |
| |
| rm -rf synplify.tmp |
| mkdir synplify.tmp |
| cd synplify.tmp |
| |
| cat > impl_syn.prj << EOT |
| add_file -verilog -lib work ../../../picorv32.v |
| impl -add impl -type fpga |
| |
| # implementation attributes |
| set_option -vlog_std v2001 |
| set_option -project_relative_includes 1 |
| |
| # device options |
| set_option -technology SBTiCE40 |
| set_option -part iCE40HX8K |
| set_option -package CT256 |
| set_option -speed_grade |
| set_option -part_companion "" |
| |
| # compilation/mapping options |
| set_option -top_module "picorv32" |
| |
| # mapper_options |
| set_option -frequency auto |
| set_option -write_verilog 0 |
| set_option -write_vhdl 0 |
| |
| # Silicon Blue iCE40 |
| set_option -maxfan 10000 |
| set_option -disable_io_insertion 0 |
| set_option -pipe 1 |
| set_option -retiming 0 |
| set_option -update_models_cp 0 |
| set_option -fixgatedclocks 2 |
| set_option -fixgeneratedclocks 0 |
| |
| # NFilter |
| set_option -popfeed 0 |
| set_option -constprop 0 |
| set_option -createhierarchy 0 |
| |
| # sequential_optimization_options |
| set_option -symbolic_fsm_compiler 1 |
| |
| # Compiler Options |
| set_option -compiler_compatible 0 |
| set_option -resource_sharing 1 |
| |
| # automatic place and route (vendor) options |
| set_option -write_apr_constraint 1 |
| |
| # set result format/file last |
| project -result_format edif |
| project -result_file impl.edf |
| impl -active impl |
| project -run synthesis -clean |
| EOT |
| |
| icecubedir="${ICECUBEDIR:-/opt/lscc/iCEcube2.2014.08}" |
| export SBT_DIR="$icecubedir/sbt_backend" |
| export SYNPLIFY_PATH="$icecubedir/synpbase" |
| export LM_LICENSE_FILE="$icecubedir/license.dat" |
| export TCL_LIBRARY="$icecubedir/sbt_backend/bin/linux/lib/tcl8.4" |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$icecubedir/sbt_backend/bin/linux/opt" |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$icecubedir/sbt_backend/bin/linux/opt/synpwrap" |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$icecubedir/sbt_backend/lib/linux/opt" |
| export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$icecubedir/LSE/bin/lin" |
| "$icecubedir"/sbt_backend/bin/linux/opt/synpwrap/synpwrap -prj impl_syn.prj -log impl.srr |
| |
| grep 'instance.*cellRef' impl/impl.edf | sed 's,.*cellRef *,,; s,[ )].*,,;' | sort | uniq -c |