From bbfc66fcf371e4b27a179fba86f4a43e75d42121 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sat, 16 Jan 2016 12:35:04 +0100 Subject: icefuzz improvements (hacks for sbtimer device info) --- icefuzz/Makefile | 1 + icefuzz/icecube.sh | 44 +++++++++++++++++++++++++++++++++++++------- icefuzz/make_pll.py | 18 +++++------------- 3 files changed, 43 insertions(+), 20 deletions(-) (limited to 'icefuzz') diff --git a/icefuzz/Makefile b/icefuzz/Makefile index 9140b3c..5faa3be 100644 --- a/icefuzz/Makefile +++ b/icefuzz/Makefile @@ -54,6 +54,7 @@ endif timings_html: python3 timings.py -h tmedges_1k.txt -t timings_1k.txt -l "HX1K with default temp/volt settings" > timings_1k.html + python3 timings.py -h tmedges_8k.txt -t timings_8k.txt -l "HX8K with default temp/volt settings" > timings_8k.html data_cached.txt: cached_io.txt cached_logic.txt cached_ramb$(EIGTHK).txt cached_ramt$(EIGTHK).txt gawk '{ print "io", $$0; }' cached_io.txt > data_cached.new diff --git a/icefuzz/icecube.sh b/icefuzz/icecube.sh index 52c1526..d3b6b84 100644 --- a/icefuzz/icecube.sh +++ b/icefuzz/icecube.sh @@ -233,25 +233,53 @@ if true; then fi # convert netlist -"$icecubedir"/sbt_backend/bin/linux/opt/edifparser "$icecubedir"/sbt_backend/devices/$devfile impl/impl.edf netlist -p$iCEPACKAGE -yinput.pcf -sinput.sdc -c --devicename $iCE40DEV +"$icecubedir"/sbt_backend/bin/linux/opt/edifparser "$icecubedir"/sbt_backend/devices/$devfile "$PWD"/impl/impl.edf "$PWD"/netlist -p$iCEPACKAGE -yinput.pcf -sinput.sdc -c --devicename $iCE40DEV # run placer -try_rerun "$icecubedir"/sbt_backend/bin/linux/opt/sbtplacer --des-lib netlist/oadb-top --outdir outputs/placer --device-file "$icecubedir"/sbt_backend/devices/$devfile --package $iCEPACKAGE --deviceMarketName $iCE40DEV --sdc-file netlist/Temp/sbt_temp.sdc --lib-file "$icecubedir"/sbt_backend/devices/$libfile --effort_level std --out-sdc-file outputs/placer/top_pl.sdc +try_rerun "$icecubedir"/sbt_backend/bin/linux/opt/sbtplacer --des-lib "$PWD"/netlist/oadb-top --outdir "$PWD"/outputs/placer --device-file "$icecubedir"/sbt_backend/devices/$devfile --package $iCEPACKAGE --deviceMarketName $iCE40DEV --sdc-file "$PWD"/Temp/sbt_temp.sdc --lib-file "$icecubedir"/sbt_backend/devices/$libfile --effort_level std --out-sdc-file "$PWD"/outputs/placer/top_pl.sdc # run packer -"$icecubedir"/sbt_backend/bin/linux/opt/packer "$icecubedir"/sbt_backend/devices/$devfile netlist/oadb-top --package $iCEPACKAGE --outdir outputs/packer --translator "$icecubedir"/sbt_backend/bin/sdc_translator.tcl --src_sdc_file outputs/placer/top_pl.sdc --dst_sdc_file outputs/packer/top_pk.sdc --devicename $iCE40DEV +"$icecubedir"/sbt_backend/bin/linux/opt/packer "$icecubedir"/sbt_backend/devices/$devfile "$PWD"/netlist/oadb-top --package $iCEPACKAGE --outdir "$PWD"/outputs/packer --translator "$icecubedir"/sbt_backend/bin/sdc_translator.tcl --src_sdc_file "$PWD"/outputs/placer/top_pl.sdc --dst_sdc_file "$PWD"/outputs/packer/top_pk.sdc --devicename $iCE40DEV # run router -"$icecubedir"/sbt_backend/bin/linux/opt/sbrouter "$icecubedir"/sbt_backend/devices/$devfile netlist/oadb-top "$icecubedir"/sbt_backend/devices/$libfile outputs/packer/top_pk.sdc --outdir outputs/router --sdf_file outputs/netlist/top_sbt.sdf --pin_permutation +"$icecubedir"/sbt_backend/bin/linux/opt/sbrouter "$icecubedir"/sbt_backend/devices/$devfile "$PWD"/netlist/oadb-top "$icecubedir"/sbt_backend/devices/$libfile "$PWD"/outputs/packer/top_pk.sdc --outdir "$PWD"/outputs/router --sdf_file "$PWD"/outputs/netlist/top_sbt.sdf --pin_permutation # run netlister -"$icecubedir"/sbt_backend/bin/linux/opt/netlister --verilog outputs/netlist/top_sbt.v --vhdl outputs/netlist/top_sbt.vhd --lib netlist/oadb-top --view rt --device "$icecubedir"/sbt_backend/devices/$devfile --splitio --in-sdc-file outputs/packer/top_pk.sdc --out-sdc-file outputs/netlist/top_sbt.sdc +"$icecubedir"/sbt_backend/bin/linux/opt/netlister --verilog "$PWD"/outputs/netlist/top_sbt.v --vhdl "$PWD"/outputs/netlist/top_sbt.vhd --lib "$PWD"/netlist/oadb-top --view rt --device "$icecubedir"/sbt_backend/devices/$devfile --splitio --in-sdc-file "$PWD"/outputs/packer/top_pk.sdc --out-sdc-file "$PWD"/outputs/netlist/top_sbt.sdc + +# hacks for sbtimer so it knows what device we are dealing with +ln -fs . sbt +ln -fs . foobar_Implmnt +cat > foobar_sbt.project << EOT +[Project] +Implementations=foobar_Implmnt + +[foobar_Implmnt] +DeviceFamily=$( echo $iCE40DEV | sed -re 's,(HX).*,,'; ) +Device=$( echo $iCE40DEV | sed -re 's,iCE40,,'; ) +DevicePackage=$iCEPACKAGE +Devicevoltage=1.14 +DevicevoltagePerformance=+/-5%(datasheet default) +DeviceTemperature=85 +TimingAnalysisBasedOn=Worst +OperationRange=Commercial +IOBankVoltages=topBank,2.5 bottomBank,2.5 leftBank,2.5 rightBank,2.5 +derValue=0.701346 +EOT # run timer -"$icecubedir"/sbt_backend/bin/linux/opt/sbtimer --des-lib netlist/oadb-top --lib-file "$icecubedir"/sbt_backend/devices/$libfile --sdc-file outputs/netlist/top_sbt.sdc --sdf-file outputs/netlist/top_sbt.sdf --report-file outputs/netlist/top_timing.rpt --device-file "$icecubedir"/sbt_backend/devices/$devfile --timing-summary +"$icecubedir"/sbt_backend/bin/linux/opt/sbtimer --des-lib "$PWD"/foobar_Implmnt/sbt/netlist/oadb-top --lib-file "$icecubedir"/sbt_backend/devices/$libfile --sdc-file "$PWD"/outputs/netlist/top_sbt.sdc --sdf-file "$PWD"/outputs/netlist/top_sbt.sdf --report-file "$PWD"/outputs/netlist/top_timing.rpt --device-file "$icecubedir"/sbt_backend/devices/$devfile --timing-summary # make bitmap -"$icecubedir"/sbt_backend/bin/linux/opt/bitmap "$icecubedir"/sbt_backend/devices/$devfile --design netlist/oadb-top --device_name $iCE40DEV --package $iCEPACKAGE --outdir outputs/bitmap --debug --low_power on --init_ram on --init_ram_bank 1111 --frequency low --warm_boot on +"$icecubedir"/sbt_backend/bin/linux/opt/bitmap "$icecubedir"/sbt_backend/devices/$devfile --design "$PWD"/netlist/oadb-top --device_name $iCE40DEV --package $iCEPACKAGE --outdir "$PWD"/outputs/bitmap --debug --low_power on --init_ram on --init_ram_bank 1111 --frequency low --warm_boot on +) + +( +set +x +echo "export FOUNDRY=\"$FOUNDRY\"" +echo "export SBT_DIR=\"$SBT_DIR\"" +echo "export TCL_LIBRARY=\"$TCL_LIBRARY\"" +echo "export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"" ) cp "$1.tmp"/outputs/bitmap/top_bitmap.bin "$1.bin" @@ -259,5 +287,7 @@ cp "$1.tmp"/outputs/bitmap/top_bitmap_glb.txt "$1.glb" cp "$1.tmp"/outputs/placer/top_sbt.pcf "$1.psb" cp "$1.tmp"/outputs/netlist/top_sbt.v "$1.vsb" cp "$1.tmp"/outputs/netlist/top_sbt.sdf "$1.sdf" +cp "$1.tmp"/outputs/netlist/top_timing.rpt "$1.rpt" + $scriptdir/../icepack/iceunpack "$1.bin" "$1.asc" diff --git a/icefuzz/make_pll.py b/icefuzz/make_pll.py index 7db509a..36ed8db 100644 --- a/icefuzz/make_pll.py +++ b/icefuzz/make_pll.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from fuzzconfig import * import numpy as np import os @@ -8,17 +9,8 @@ from numpy.random import randint, choice, permutation def randbin(n): return "".join([choice(["0", "1"]) for i in range(n)]) -num = 20 - -pins = [int(i) for i in """ - 1 2 3 4 7 8 9 10 11 12 19 20 21 22 23 24 25 26 28 29 31 32 33 34 - 37 38 39 41 42 43 44 45 47 48 49 50 52 56 58 60 61 62 63 64 67 68 70 71 - 73 74 75 76 78 79 80 81 87 88 90 91 93 94 95 96 97 98 99 101 102 104 105 106 107 - 112 113 114 115 116 117 118 119 120 121 122 128 129 134 135 136 137 138 139 141 142 143 144 -""".split()] - -pins.remove(49) -pins.remove(50) +pins.remove("49") +pins.remove("50") os.system("rm -rf work_pll") os.mkdir("work_pll") @@ -126,8 +118,8 @@ for idx in range(num): with open("work_pll/pll_%02d.pcf" % idx, "w") as f: for pll_pin, package_pin in zip(pin_names, list(permutation(pins))[0:len(pin_names)]): - if pll_pin == "packagepin": package_pin = 49 - print("set_io %s %d" % (pll_pin, package_pin), file=f) + if pll_pin == "packagepin": package_pin = "49" + print("set_io %s %s" % (pll_pin, package_pin), file=f) with open("work_pll/Makefile", "w") as f: print("all: %s" % " ".join(["pll_%02d.bin" % i for i in range(num)]), file=f) -- cgit v1.2.3