aboutsummaryrefslogtreecommitdiffstats
path: root/icefuzz
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-01-16 12:35:04 +0100
committerClifford Wolf <clifford@clifford.at>2016-01-16 12:35:04 +0100
commitbbfc66fcf371e4b27a179fba86f4a43e75d42121 (patch)
tree75b38b2d105fd49027f76d018bfb5d6dc3e36a8e /icefuzz
parentfdaac3542cf01ff757fd764871df0e81f4c62a3a (diff)
downloadicestorm-bbfc66fcf371e4b27a179fba86f4a43e75d42121.tar.gz
icestorm-bbfc66fcf371e4b27a179fba86f4a43e75d42121.tar.bz2
icestorm-bbfc66fcf371e4b27a179fba86f4a43e75d42121.zip
icefuzz improvements (hacks for sbtimer device info)
Diffstat (limited to 'icefuzz')
-rw-r--r--icefuzz/Makefile1
-rw-r--r--icefuzz/icecube.sh44
-rw-r--r--icefuzz/make_pll.py18
3 files changed, 43 insertions, 20 deletions
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)