2015-12-31 12:05:04 +01:00
i n c l u d e . . / c o n f i g . m k
2015-07-18 13:10:40 +02:00
export LC_ALL = C
2016-02-01 23:32:03 +01:00
export ICE_SBTIMER_LP = 1
2015-07-18 13:10:40 +02:00
2017-07-03 00:38:44 +02:00
DEVICECLASS = 1k
2017-06-23 02:38:38 +02:00
i f e q ( $( DEVICECLASS ) , 3 8 4 )
DEVICE := lp384-cm49
THREEH = _384
e n d i f
i f e q ( $( DEVICECLASS ) , 1 k )
DEVICE := hx1k-tq144
e n d i f
2019-02-20 11:06:01 +01:00
i f e q ( $( DEVICECLASS ) , u 4 k )
DEVICE := u4k-sg48
RAM_SUFFIX := _8k
e n d i f
2017-06-23 02:38:38 +02:00
i f e q ( $( DEVICECLASS ) , 5 k )
2017-07-03 00:38:44 +02:00
DEVICE := up5k-sg48
2018-01-13 16:55:32 +01:00
RAM_SUFFIX := _8k
2017-06-23 02:38:38 +02:00
e n d i f
2018-05-06 23:00:36 +02:00
i f e q ( $( DEVICECLASS ) , 4 k )
DEVICE := lm4k-cm49
RAM_SUFFIX := _8k
e n d i f
2017-06-23 02:38:38 +02:00
i f e q ( $( DEVICECLASS ) , 8 k )
DEVICE := hx8k-ct256
RAM_SUFFIX = _8k
e n d i f
2017-03-07 22:39:04 +01:00
2015-07-18 13:10:40 +02:00
TESTS =
TESTS += binop
TESTS += pin2pin
TESTS += mesh
TESTS += fanout
TESTS += logic
TESTS += cluster
TESTS += iopack
TESTS += io
TESTS += gbio
TESTS += gbio2
TESTS += prim
TESTS += fflogic
2017-06-23 02:38:38 +02:00
i f n e q ( $( DEVICECLASS ) , 3 8 4 )
2017-03-07 22:39:04 +01:00
TESTS += ram40
TESTS += mem
TESTS += pll
TESTS += aig
e n d i f
2017-11-08 19:57:09 +01:00
i f e q ( $( DEVICECLASS ) , 5 k )
TESTS += dsp
TESTS += upip
e n d i f
2019-02-20 11:06:01 +01:00
i f e q ( $( DEVICECLASS ) , u 4 k )
TESTS += dsp
TESTS += uip
e n d i f
2017-11-08 19:57:09 +01:00
database : bitdata_io .txt bitdata_logic .txt bitdata_ramb $( RAM_SUFFIX ) .txt bitdata_ramt $( RAM_SUFFIX ) .txt bitdata_dsp 0_ 5k .txt bitdata_dsp 1_ 5k .txt bitdata_dsp 2_ 5k .txt bitdata_dsp 3_ 5k .txt bitdata_ipcon_ 5k .txt
2017-06-23 02:38:38 +02:00
i f n e q ( $( RAM_SUFFIX ) , )
2015-07-18 13:10:40 +02:00
cp cached_ramb.txt bitdata_ramb.txt
cp cached_ramt.txt bitdata_ramt.txt
2017-06-24 07:53:54 +02:00
e n d i f
i f n e q ( $( RAM_SUFFIX ) , _ 8 k )
cp cached_ramb_8k.txt bitdata_ramb_8k.txt
cp cached_ramt_8k.txt bitdata_ramt_8k.txt
e n d i f
i f n e q ( $( RAM_SUFFIX ) , _ 5 k )
2017-11-08 17:05:42 +01:00
cp cached_dsp0_5k.txt bitdata_dsp0_5k.txt
cp cached_dsp1_5k.txt bitdata_dsp1_5k.txt
cp cached_dsp2_5k.txt bitdata_dsp2_5k.txt
cp cached_dsp3_5k.txt bitdata_dsp3_5k.txt
cp cached_ipcon_5k.txt bitdata_ipcon_5k.txt
2015-07-18 13:10:40 +02:00
e n d i f
2021-09-06 11:11:52 +02:00
ICEDEVICE = $( DEVICECLASS) $( PYTHON3) database.py
$( PYTHON3) export.py
2015-07-18 13:10:40 +02:00
diff -U0 cached_io.txt bitdata_io.txt || cp -v bitdata_io.txt cached_io.txt
diff -U0 cached_logic.txt bitdata_logic.txt || cp -v bitdata_logic.txt cached_logic.txt
2017-06-23 02:38:38 +02:00
diff -U0 cached_ramb$( RAM_SUFFIX) .txt bitdata_ramb$( RAM_SUFFIX) .txt || cp -v bitdata_ramb$( RAM_SUFFIX) .txt cached_ramb$( RAM_SUFFIX) .txt
diff -U0 cached_ramt$( RAM_SUFFIX) .txt bitdata_ramt$( RAM_SUFFIX) .txt || cp -v bitdata_ramt$( RAM_SUFFIX) .txt cached_ramt$( RAM_SUFFIX) .txt
2017-11-08 17:05:42 +01:00
diff -U0 cached_dsp0_5k.txt bitdata_dsp0_5k.txt || cp -v bitdata_dsp0_5k.txt cached_dsp0_5k.txt
diff -U0 cached_dsp1_5k.txt bitdata_dsp1_5k.txt || cp -v bitdata_dsp1_5k.txt cached_dsp1_5k.txt
diff -U0 cached_dsp2_5k.txt bitdata_dsp2_5k.txt || cp -v bitdata_dsp2_5k.txt cached_dsp2_5k.txt
diff -U0 cached_dsp3_5k.txt bitdata_dsp3_5k.txt || cp -v bitdata_dsp3_5k.txt cached_dsp3_5k.txt
diff -U0 cached_ipcon_5k.txt bitdata_ipcon_5k.txt || cp -v bitdata_ipcon_5k.txt cached_ipcon_5k.txt
2015-07-18 13:10:40 +02:00
2015-09-27 10:54:19 +02:00
timings :
2017-11-24 17:31:08 +01:00
i f e q ( $( DEVICECLASS ) , 5 k )
cp tmedges.txt tmedges.tmp
2021-09-06 11:11:52 +02:00
set -e; for f in work_$( DEVICECLASS) _*/*.vsb; do echo $$ f; sed '/defparam/d' < $$ f > $$ f.fixed; yosys -q -f verilog -s tmedges.ys $$ f.fixed; $( PYTHON3) rename_dsps.py $$ f; done
2017-11-24 17:31:08 +01:00
sort -u tmedges.tmp > tmedges.txt && rm -f tmedges.tmp
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_up5k.txt work_*/*.sdf > timings_up5k.new
2017-11-24 17:31:08 +01:00
mv timings_up5k.new timings_up5k.txt
e l s e
2019-02-20 11:06:01 +01:00
i f e q ( $( DEVICECLASS ) , u 4 k )
cp tmedges.txt tmedges.tmp
2021-09-06 11:11:52 +02:00
set -e; for f in work_$( DEVICECLASS) _*/*.vsb; do echo $$ f; sed '/defparam/d' < $$ f > $$ f.fixed; yosys -q -f verilog -s tmedges.ys $$ f.fixed; $( PYTHON3) rename_dsps.py $$ f; done
2019-02-20 11:06:01 +01:00
sort -u tmedges.tmp > tmedges.txt && rm -f tmedges.tmp
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_u4k.txt work_*/*.sdf > timings_u4k.new
2019-02-20 11:06:01 +01:00
mv timings_u4k.new timings_u4k.txt
e l s e
2017-06-23 02:38:38 +02:00
i f e q ( $( DEVICECLASS ) , 8 k )
2016-02-01 23:32:03 +01:00
cp tmedges.txt tmedges.tmp
2017-07-03 00:38:44 +02:00
set -e; for f in work_$( DEVICECLASS) _*/*.vsb; do echo $$ f; yosys -q -f verilog -s tmedges.ys $$ f; done
2016-02-01 23:32:03 +01:00
sort -u tmedges.tmp > tmedges.txt && rm -f tmedges.tmp
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_hx8k.txt work_*/*.sdf > timings_hx8k.new
2016-02-01 23:32:03 +01:00
mv timings_hx8k.new timings_hx8k.txt
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_lp8k.txt work_*/*.slp > timings_lp8k.new
2016-02-01 23:32:03 +01:00
mv timings_lp8k.new timings_lp8k.txt
2015-09-27 10:54:19 +02:00
e l s e
2017-06-23 02:38:38 +02:00
ifeq ( $( DEVICECLASS) ,384)
2017-03-07 23:06:32 +01:00
cp tmedges.txt tmedges.tmp
2017-07-03 00:38:44 +02:00
set -e; for f in work_$( DEVICECLASS) _*/*.vsb; do echo $$ f; yosys -q -f verilog -s tmedges.ys $$ f; done
2017-03-07 23:06:32 +01:00
sort -u tmedges.tmp > tmedges.txt && rm -f tmedges.tmp
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_lp384.txt work_*/*.slp > timings_lp384.new
2017-03-07 23:06:32 +01:00
mv timings_lp384.new timings_lp384.txt
else
2016-02-01 23:32:03 +01:00
cp tmedges.txt tmedges.tmp
2017-07-03 00:38:44 +02:00
set -e; for f in work_$( DEVICECLASS) _*/*.vsb; do echo $$ f; yosys -q -f verilog -s tmedges.ys $$ f; done
2016-02-01 23:32:03 +01:00
sort -u tmedges.tmp > tmedges.txt && rm -f tmedges.tmp
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_hx1k.txt work_*/*.sdf > timings_hx1k.new
2016-02-01 23:32:03 +01:00
mv timings_hx1k.new timings_hx1k.txt
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -t timings_lp1k.txt work_*/*.slp > timings_lp1k.new
2016-02-01 23:32:03 +01:00
mv timings_lp1k.new timings_lp1k.txt
2017-03-07 23:06:32 +01:00
endif
2015-09-27 10:54:19 +02:00
e n d i f
2017-11-24 17:31:08 +01:00
e n d i f
2019-02-20 11:06:01 +01:00
e n d i f
2015-09-27 13:15:52 +02:00
timings_html :
2021-09-06 11:11:52 +02:00
$( PYTHON3) timings.py -h tmedges.txt -t timings_hx1k.txt -l "HX1K with default temp/volt settings" > timings_hx1k.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_hx8k.txt -l "HX8K with default temp/volt settings" > timings_hx8k.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_lp1k.txt -l "LP1K with default temp/volt settings" > timings_lp1k.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_lp8k.txt -l "LP8K with default temp/volt settings" > timings_lp8k.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_lp384.txt -l "LP384 with default temp/volt settings" > timings_lp384.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_up5k.txt -l "UP5K with default temp/volt settings" > timings_up5k.html
$( PYTHON3) timings.py -h tmedges.txt -t timings_u4k.txt -l "U4K with default temp/volt settings" > timings_u4k.html
2019-02-20 11:06:01 +01:00
data_cached.txt : cached_io .txt cached_logic .txt cached_ramb $( RAM_SUFFIX ) .txt cached_ramt $( RAM_SUFFIX ) .txt cached_dsp 0_ 5k .txt cached_dsp 1_ 5k .txt cached_dsp 2_ 5k .txt cached_dsp 3_ 5k .txt cached_ipcon_ 5k .txt
2015-07-18 13:10:40 +02:00
gawk '{ print "io", $$0; }' cached_io.txt > data_cached.new
gawk '{ print "logic", $$0; }' cached_logic.txt >> data_cached.new
2017-06-23 02:38:38 +02:00
gawk '{ print "ramb$(RAM_SUFFIX)", $$0; }' cached_ramb$( RAM_SUFFIX) .txt >> data_cached.new
gawk '{ print "ramt$(RAM_SUFFIX)", $$0; }' cached_ramt$( RAM_SUFFIX) .txt >> data_cached.new
2019-02-20 11:06:01 +01:00
2017-11-08 17:05:42 +01:00
gawk '{ print "dsp0_5k", $$0; }' cached_dsp0_5k.txt >> data_cached.new
gawk '{ print "dsp1_5k", $$0; }' cached_dsp1_5k.txt >> data_cached.new
gawk '{ print "dsp2_5k", $$0; }' cached_dsp2_5k.txt >> data_cached.new
gawk '{ print "dsp3_5k", $$0; }' cached_dsp3_5k.txt >> data_cached.new
gawk '{ print "ipcon_5k", $$0; }' cached_ipcon_5k.txt >> data_cached.new
2015-07-18 13:10:40 +02:00
mv data_cached.new data_cached.txt
2017-07-03 00:38:44 +02:00
bitdata_io.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2015-07-18 13:10:40 +02:00
grep ^io $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-07-03 00:38:44 +02:00
bitdata_logic.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2015-07-18 13:10:40 +02:00
grep ^logic $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-07-03 00:38:44 +02:00
bitdata_ramb$(RAM_SUFFIX).txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-06-23 02:38:38 +02:00
grep ^ramb$( RAM_SUFFIX) $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2015-07-18 13:10:40 +02:00
2017-07-03 00:38:44 +02:00
bitdata_ramt$(RAM_SUFFIX).txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-06-23 02:38:38 +02:00
grep ^ramt$( RAM_SUFFIX) $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2015-07-18 13:10:40 +02:00
2017-11-08 17:05:42 +01:00
bitdata_dsp0_5k.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-11-08 19:57:09 +01:00
grep ^dsp0_5k $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-11-08 17:05:42 +01:00
bitdata_dsp1_5k.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-11-08 19:57:09 +01:00
grep ^dsp1_5k $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-11-08 17:05:42 +01:00
bitdata_dsp2_5k.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-11-08 19:57:09 +01:00
grep ^dsp2_5k $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-11-08 17:05:42 +01:00
bitdata_dsp3_5k.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-11-08 19:57:09 +01:00
grep ^dsp3_5k $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-11-08 17:05:42 +01:00
bitdata_ipcon_5k.txt : data_cached .txt $( addprefix data_ $ ( DEVICECLASS ) _ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
2017-11-08 19:57:09 +01:00
grep ^ipcon_5k $^ | tr -s ' ' | tr -d '\r' | cut -f2- -d' ' | sort -u > $@
2017-11-08 17:05:42 +01:00
2015-07-18 13:10:40 +02:00
datafiles : $( addprefix data_ ,$ ( addsuffix .txt ,$ ( TESTS ) ) )
../icepack/icepack :
$( MAKE) -C ../icepack
d e f i n e d a t a _ t e m p l a t e
2017-07-03 00:38:44 +02:00
data_$(DEVICECLASS)_$(1).txt : make_ $( 1) .py ../icepack /icepack
2021-09-06 11:11:52 +02:00
ICEDEVICE = $( DEVICECLASS) $( PYTHON3) make_$( 1) .py
2017-07-03 00:38:44 +02:00
+ICEDEV= $( DEVICE) $( MAKE) -C work_$( DEVICECLASS) _$( 1)
2021-09-06 11:11:52 +02:00
ICEDEVICE = $( DEVICECLASS) $( PYTHON3) extract.py work_$( DEVICECLASS) _$( 1) /*.glb > $$ @
2015-07-18 13:10:40 +02:00
e n d e f
$( foreach test ,$ ( TESTS ) ,$ ( eval $ ( call data_template ,$ ( test ) ) ) )
%.ok : %.bin
bash check.sh $<
2017-07-03 00:38:44 +02:00
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _binop /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _pin 2pin /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _mesh /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _fanout /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _logic /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _cluster /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _iopack /*.bin ) ) )
check : $( addsuffix .ok ,$ ( basename $ ( wildcard work_ $ ( DEVICECLASS ) _pll /*.bin ) ) )
2015-07-18 13:10:40 +02:00
clean :
2017-07-03 00:38:44 +02:00
rm -rf work_$( DEVICECLASS) _*
2015-07-18 13:10:40 +02:00
rm -rf data_*.txt
rm -rf bitdata_*.txt
rm -rf database_*.txt
2016-02-01 23:32:03 +01:00
rm -rf timings_*.html
2015-07-18 13:10:40 +02:00
.PHONY : database datafiles check clean