From b227c4151d11937ecf60560405483703e7736514 Mon Sep 17 00:00:00 2001 From: Wolfgang Spraul Date: Sat, 29 Sep 2012 06:32:10 +0200 Subject: [PATCH] improved testing --- .gitignore | 6 +- Makefile | 228 +++++++++---- README | 6 +- autotest.c | 2 +- autotest.gold/autotest_iob_cfg.log | 310 ----------------- autotest.gold/autotest_logic_cfg.log | 480 --------------------------- blinking_led.c | 73 ++++ 7 files changed, 244 insertions(+), 861 deletions(-) delete mode 100644 autotest.gold/autotest_iob_cfg.log delete mode 100644 autotest.gold/autotest_logic_cfg.log create mode 100644 blinking_led.c diff --git a/.gitignore b/.gitignore index 14b6839..7819d83 100644 --- a/.gitignore +++ b/.gitignore @@ -28,11 +28,11 @@ autotest fp2bit bit2fp hello_world +blinking_led # # folders # -autotest.tmp/ -autotest.out/ +test.gold/ +test.out/ build-libs/ -compare.gold/ diff --git a/Makefile b/Makefile index cad1926..a97ed4c 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,7 @@ DYNAMIC_LIBS = libs/libfpga-model.so libs/libfpga-bit.so \ .PHONY: all test clean install uninstall FAKE .SECONDARY: +.SECONDEXPANSION: all: new_fp fp2bit bit2fp draw_svg_tiles autotest hstrrep \ sort_seq merge_seq pair2net hello_world @@ -36,22 +37,159 @@ include Makefile.common libs/%.so: FAKE @make -C libs $(notdir $@) -test: test_logic_cfg test_iob_cfg test_routing_sw +# +# Testing section - there are three types of tests: +# +# 1. design +# +# design tests run a design binary to produce floorplan stdout, which is +# converted to binary configuration and back to floorplan. The resulting +# floorplan after conversion through binary must match the original +# floorplan. Additionally, the original floorplan is compared to a gold +# standard if one exists. +# +# ./binary -> .fp -> .bit -> .fp -> compare first .fp to second and gold .fp +# +# 2. autotest +# +# autotest runs an automated test of some fpga logic and produces a log output +# which is compared against a gold standard. +# +# ./autotest -> stdout -> compare with gold standard +# +# 3. compare +# +# tool output is parsed to extract different types of model data and compare +# against a gold standard. +# +# tool output -> awk/processing -> compare to gold standard +# +# - extensions +# +# .ftest = fpgatools run test (design, autotest, compare) +# +# .f2gd = fpgatools to-gold diff +# .ffbd = diff between first fp and after roundtrip through binary config +# .fb2f = fpgatools binary config back to floorplan +# .ff2b = fpgatools floorplan to binary config +# .fco = fpgatools compare output for missing/extra +# .fcr = fpgatools compare missing/extra result +# .fcm = fpgatools compare match +# .fcd = fpgatools compare diff +# .fce = fpgatools compare extra +# .fao = fpgatools autotest output +# .far = fpgatools autotest result (diff to gold output) +# -test_logic_cfg: autotest.out/autotest_logic_cfg.diff_to_gold +test_dirs := $(shell mkdir -p test.gold test.out) -test_iob_cfg: autotest.out/autotest_iob_cfg.diff_to_gold +DESIGN_TESTS := hello_world blinking_led +AUTO_TESTS := logic_cfg routing_sw io_sw iob_cfg +COMPARE_TESTS := xc6slx9_tiles xc6slx9_devs xc6slx9_ports xc6slx9_conns xc6slx9_sw xc6slx9_swbits -test_routing_sw: autotest.out/autotest_routing_sw.diff_to_gold +DESIGN_GOLD := $(foreach target, $(DESIGN_TESTS), test.gold/design_$(target).fp) +AUTOTEST_GOLD := $(foreach target, $(AUTO_TESTS), test.gold/autotest_$(target).fao) +COMPARE_GOLD := $(foreach target, $(COMPARE_TESTS), test.gold/compare_$(target).fco) -autotest_%.diff_to_gold: autotest_%.log - @diff -U 0 -I "^O #NODIFF" autotest.gold/autotest_$(*F).log $< > $@ || true - @if test -s $@; then echo "Test failed: $(*F), diff follows"; cat $@; else echo "Test succeeded: $(*F)"; fi; +test_gold: design_gold autotest_gold compare_gold +design_gold: $(DESIGN_GOLD) +autotest_gold: $(AUTOTEST_GOLD) +compare_gold: $(COMPARE_GOLD) -autotest_%.log: autotest fp2bit bit2fp - @mkdir -p $(@D) +test: test_design test_auto test_compare +test_design: $(foreach target, $(DESIGN_TESTS), test.out/design_$(target).ftest) +test_auto: $(foreach target, $(AUTO_TESTS), test.out/autotest_$(target).ftest) +test_compare: $(foreach target, $(COMPARE_TESTS), test.out/compare_$(target).ftest) + +# design testing targets + +design_%.ftest: design_%.ffbd + @if test -s $<; then echo "Design test: $(*F) - failed, diff follows"; cat $<; else echo "Design test: $(*F) - succeeded"; fi; + @if test -s test.gold/$(basename $(@F)).fp; then diff -U 0 test.gold/$(basename $(@F)).fp $(basename $@).fp > $(basename $@).f2gd || (echo Diff to gold: && cat $(basename $@).f2gd); fi; + +%.ffbd: %.fp %.fb2f + @diff -u $(basename $@).fp $(basename $@).fb2f >$@ || true + +%.fb2f: %.ff2b bit2fp + @./bit2fp $< 2>&1 >$@ + +%.ff2b: %.fp fp2bit + @./fp2bit $< $@ + +design_%.fp: $$* + @./$(*F) 2>&1 >$@ + +# autotest targets + +autotest_%.ftest: autotest_%.far + @if test -s $<; then echo "Test failed: $(*F) (autotest), diff follows"; cat $<; else echo "Test succeeded: $(*F) (autotest)"; fi; + +%.far: %.fao + @if test ! -e test.gold/$(*F).fao; then echo Gold test.gold/$(*F).fao does not exist, aborting.; false; fi; + @diff -U 0 -I "^O #NODIFF" test.gold/$(*F).fao $< >$@ || true + +autotest_%.fao: autotest fp2bit bit2fp ./autotest --test=$(*F) 2>&1 >$@ +# compare testing targets + +compare_%.ftest: compare_%.fcr + @echo Test: $(*F) \(compare\) + @cat $<|awk '{print " "$$0}' + +%.fcr: %.fcm %.fcd %.fce + @echo Matching lines - $*.fcm >$@ + @cat $*.fcm | wc -l >>$@ + @echo Missing lines - $*.fcd >>$@ + @cat $*.fcd | grep ^-[^-] | wc -l >>$@ + @if test -s $*.fce; then echo Extra lines - $*.fce: >>$@; cat $*.fce >>$@; fi; + +%.fcm: %.fco + @if test ! -e test.gold/$(*F).fco; then echo Gold test.gold/$(*F).fco does not exist, aborting.; false; fi; + @comm -1 -2 $< test.gold/$(*F).fco >$@ + +%.fcd: %.fco + @if test ! -e test.gold/$(*F).fco; then echo Gold test.gold/$(*F).fco does not exist, aborting.; false; fi; + @diff -u test.gold/$(*F).fco $< >$@ || true + +%.fce: %.fco + @cat $< | grep ^+[^+] >$@ || true + +compare_%_tiles.fco: compare_%.fp + @cat $<|awk '{if ($$1=="tile" && $$4=="name") printf "%s %s %s\n",$$2,$$3,$$5}'|sort >$@ + +compare_%_devs.fco: compare_%.fp + @cat $<|awk '{if ($$1=="dev") {if ($$6=="type") printf "%s %s %s %s\n",$$2,$$3,$$4,$$7; else printf "%s %s %s\n",$$2,$$3,$$4; }}'|sort >$@ + +compare_%_ports.fco: compare_%.fp + @cat $<|awk '{if ($$1=="port") printf "%s %s %s\n",$$2,$$3,$$4}'|sort >$@ + +compare_%_conns.fco: compare_%.fp sort_seq merge_seq + @cat $<|awk '{if ($$1=="conn") printf "%s %s %s %s %s %s\n",$$2,$$3,$$5,$$6,$$4,$$7}'|sort|./sort_seq -|./merge_seq -|awk '{printf "%s %s %s %s %s %s\n",$$1,$$2,$$5,$$3,$$4,$$6}'|sort >$@ + +compare_%_sw.fco: compare_%.fp + @cat $<|awk '{if ($$1=="sw") printf "%s %s %s %s %s\n",$$2,$$3,$$4,$$5,$$6}'|sort >$@ + +compare_%_swbits.fco: bit2fp + @./bit2fp --printf-swbits | sort > $@ + +compare_%.fp: new_fp + @./new_fp >$@ + +# todo: .cnets not integrated yet +%.cnets: %.fp pair2net + cat $<|awk '{if ($$1=="conn") printf "%s-%s-%s %s-%s-%s\n",$$2,$$3,$$4,$$5,$$6,$$7}' |./pair2net -|sort >$@ + @echo Number of conn nets: + @cat $@|wc -l + @echo Number of connection points: + @cat $@|wc -w + @echo Largest net: + @cat $@|awk '{if (NF>max) max=NF} END {print max}' + +# +# end of testing section +# + autotest: autotest.o $(DYNAMIC_LIBS) hello_world: hello_world.o $(DYNAMIC_LIBS) @@ -78,66 +216,30 @@ xc6slx9.fp: new_fp xc6slx9.svg: draw_svg_tiles ./draw_svg_tiles | xmllint --pretty 1 - > $@ -compare_all: compare_tiles compare_devs compare_conns \ - compare_ports compare_sw compare_swbits - -compare_gold: compare.gold/xc6slx9.swbits - -compare_%: xc6slx9.% - @comm -1 -2 $< compare.gold/$< > compare_$*_matching.txt - @echo Matching lines - compare_$*_matching.txt: - @cat compare_$*_matching.txt | wc -l - @diff -u compare.gold/$< $< > compare_$*_diff.txt || true - @echo Missing lines - compare_$*_diff.txt - @cat compare_$*_diff.txt | grep ^-[^-] | wc -l - @cat compare_$*_diff.txt | grep ^+[^+] > compare_$*_extra.txt || true - @if test -s compare_$*_extra.txt; then echo Extra lines - compare_$*_extra.txt: ; cat compare_$*_extra.txt; fi; - -%.tiles: %.fp - @cat $<|awk '{if ($$1=="tile" && $$4=="name") printf "%s %s %s\n",$$2,$$3,$$5}'|sort >$@ - -%.devs: %.fp - @cat $<|awk '{if ($$1=="dev") {if ($$6=="type") printf "%s %s %s %s\n",$$2,$$3,$$4,$$7; else printf "%s %s %s\n",$$2,$$3,$$4; }}'|sort >$@ - -%.cnets: %.fp pair2net - cat $<|awk '{if ($$1=="conn") printf "%s-%s-%s %s-%s-%s\n",$$2,$$3,$$4,$$5,$$6,$$7}' |./pair2net -|sort >$@ - @echo Number of conn nets: - @cat $@|wc -l - @echo Number of connection points: - @cat $@|wc -w - @echo Largest net: - @cat $@|awk '{if (NF>max) max=NF} END {print max}' - -%.conns: %.fp sort_seq merge_seq - @cat $<|awk '{if ($$1=="conn") printf "%s %s %s %s %s %s\n",$$2,$$3,$$5,$$6,$$4,$$7}'|sort|./sort_seq -|./merge_seq -|awk '{printf "%s %s %s %s %s %s\n",$$1,$$2,$$5,$$3,$$4,$$6}'|sort >$@ - -%.ports: %.fp - @cat $<|awk '{if ($$1=="port") printf "%s %s %s\n",$$2,$$3,$$4}'|sort >$@ - -%.sw: %.fp - @cat $<|awk '{if ($$1=="sw") printf "%s %s %s %s %s\n",$$2,$$3,$$4,$$5,$$6}'|sort >$@ - -%.swbits: bit2fp - ./bit2fp --printf-swbits | sort > $@ +# rm -f $(foreach test,$(TESTS),"autotest.out/autotest_$(test).diff_to_gold") +# rm -f $(foreach test,$(TESTS),"autotest.out/autotest_$(test).log") clean: @make -C libs clean rm -f $(OBJS) *.d - rm -f $(foreach test,$(TESTS),"autotest.out/autotest_$(test).diff_to_gold") - rm -f $(foreach test,$(TESTS),"autotest.out/autotest_$(test).log") - rmdir --ignore-fail-on-non-empty autotest.out || exit 0 rm -f draw_svg_tiles new_fp hstrrep sort_seq merge_seq autotest fp2bit bit2fp pair2net \ hello_world - rm -f xc6slx9.fp xc6slx9.svg \ - xc6slx9.tiles xc6slx9.devs xc6slx9.conns \ - xc6slx9.ports xc6slx9.sw xc6slx9.cnets xc6slx9.swbits \ - compare_tiles_matching.txt compare_tiles_diff.txt compare_tiles_extra.txt \ - compare_devs_matching.txt compare_devs_diff.txt compare_devs_extra.txt \ - compare_conns_matching.txt compare_conns_diff.txt compare_conns_extra.txt \ - compare_ports_matching.txt compare_ports_diff.txt compare_ports_extra.txt \ - compare_sw_matching.txt compare_sw_diff.txt compare_sw_extra.txt \ - compare_cnets_matching.txt compare_cnets_diff.txt compare_cnets_extra.txt \ - compare_swbits_matching.txt compare_swbits_diff.txt compare_swbits_extra.txt + rm -f xc6slx9.fp xc6slx9.svg + rm -f $(DESIGN_GOLD) $(AUTOTEST_GOLD) $(COMPARE_GOLD) + rm -f test.gold/compare_xc6slx9.fp + rm -f $(foreach f, $(DESIGN_TESTS), test.out/design_$(f).ffbd) + rm -f $(foreach f, $(DESIGN_TESTS), test.out/design_$(f).ff2b) + rm -f $(foreach f, $(DESIGN_TESTS), test.out/design_$(f).fb2f) + rm -f $(foreach f, $(DESIGN_TESTS), test.out/design_$(f).f2gd) + rm -f $(foreach f, $(DESIGN_TESTS), test.out/design_$(f).fp) + rm -f test.out/autotest_* + rm -f $(foreach f, $(COMPARE_TESTS), test.out/compare_$(f).fco) + rm -f $(foreach f, $(COMPARE_TESTS), test.out/compare_$(f).fcr) + rm -f $(foreach f, $(COMPARE_TESTS), test.out/compare_$(f).fcm) + rm -f $(foreach f, $(COMPARE_TESTS), test.out/compare_$(f).fcd) + rm -f $(foreach f, $(COMPARE_TESTS), test.out/compare_$(f).fce) + rm -f test.out/compare_xc6slx9.fp + rmdir --ignore-fail-on-non-empty test.out test.gold install: all @make -C libs install diff --git a/README b/README index bea6bcf..9c6ad0b 100644 --- a/README +++ b/README @@ -59,13 +59,11 @@ Design Principles TODO short-term (1 month): -* support counter sample (including clock, jtag) +* example: blinking_led +* example: counter (including clock, jtag) * support reading iologic switches * autotest: fix roundtrip issues in routing_sw test -* autotest: automate generation of gold standards * autotest: protect stderr of diff executable in autotest log -* autotest: cleanup extensions and switch to new extension system -* autotest: include samples such as hello_world in testing * 3 Debian packages: libfpga, libfpga-doc, fpgatools mid-term (6 months): diff --git a/autotest.c b/autotest.c index 6658f82..e28feb2 100644 --- a/autotest.c +++ b/autotest.c @@ -17,7 +17,7 @@ time_t g_start_time; #define MEMUSAGE() printf("O #NODIFF memusage %i\n", get_vm_mb()); #define TIME_AND_MEM() TIMESTAMP(); MEMUSAGE() -#define AUTOTEST_TMP_DIR "autotest.tmp" +#define AUTOTEST_TMP_DIR "test.out" struct test_state { diff --git a/autotest.gold/autotest_iob_cfg.log b/autotest.gold/autotest_iob_cfg.log deleted file mode 100644 index 2e4c4d6..0000000 --- a/autotest.gold/autotest_iob_cfg.log +++ /dev/null @@ -1,310 +0,0 @@ - -O fpgatools automatic test suite. Be welcome and be our guest. namo namaha. - -O Test: iob_cfg -O Diff: ./autotest_diff.sh -O Skip: 0 -O Dry run: 0 - -O Time measured in seconds from 0. -O #NODIFF timestamp 0 -O Memory usage reported in megabytes. -O #NODIFF memusage 25 -O Building memory model... -O Done -O #NODIFF timestamp 4 -O #NODIFF memusage 85 - -O begin dump autotest.tmp/autotest_iob_cfg_000001.diff -fp: -+dev y72 x12 IOB 1 istd LVCMOS33 -+dev y72 x12 IOB 1 bypass_mux I -+dev y72 x12 IOB 1 imux I -bit: -+dev y72 x12 IOB 1 istd LVCMOS33 -+dev y72 x12 IOB 1 bypass_mux I -+dev y72 x12 IOB 1 imux I -O end dump autotest.tmp/autotest_iob_cfg_000001.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000002.diff -fp: -+dev y72 x12 IOB 1 istd LVCMOS33 -+dev y72 x12 IOB 1 bypass_mux I -+dev y72 x12 IOB 1 imux I_B -bit: -+dev y72 x12 IOB 1 istd LVCMOS33 -+dev y72 x12 IOB 1 bypass_mux I -+dev y72 x12 IOB 1 imux I_B -O end dump autotest.tmp/autotest_iob_cfg_000002.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000003.diff -fp: -+dev y72 x12 IOB 0 istd LVCMOS33 -+dev y72 x12 IOB 0 bypass_mux I -+dev y72 x12 IOB 0 imux I -bit: -+dev y72 x12 IOB 0 istd LVCMOS33 -+dev y72 x12 IOB 0 bypass_mux I -+dev y72 x12 IOB 0 imux I -O end dump autotest.tmp/autotest_iob_cfg_000003.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000004.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000004.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000005.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_OCT_ON -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_OCT_ON -O end dump autotest.tmp/autotest_iob_cfg_000005.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000006.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_KEEPER -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_KEEPER -O end dump autotest.tmp/autotest_iob_cfg_000006.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000007.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_PULLUP -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_PULLUP -O end dump autotest.tmp/autotest_iob_cfg_000007.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000008.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_PULLDOWN -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE_PULLDOWN -O end dump autotest.tmp/autotest_iob_cfg_000008.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000009.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend DRIVE_LAST_VALUE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend DRIVE_LAST_VALUE -O end dump autotest.tmp/autotest_iob_cfg_000009.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000010.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 2 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 2 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000010.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000011.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 4 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 4 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000011.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000012.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 6 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 6 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000012.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000013.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000013.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000014.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 12 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 12 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000014.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000015.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 16 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 16 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000015.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000016.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 24 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 24 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000016.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000017.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew SLOW -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000017.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000018.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew FAST -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew FAST -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000018.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000019.diff -fp: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew QUIETIO -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -bit: -+dev y72 x12 IOB 2 ostd LVCMOS33 -+dev y72 x12 IOB 2 strength 8 -+dev y72 x12 IOB 2 slew QUIETIO -+dev y72 x12 IOB 2 O_used -+dev y72 x12 IOB 2 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000019.diff - -O begin dump autotest.tmp/autotest_iob_cfg_000020.diff -fp: -+dev y72 x12 IOB 3 ostd LVCMOS33 -+dev y72 x12 IOB 3 strength 8 -+dev y72 x12 IOB 3 slew SLOW -+dev y72 x12 IOB 3 O_used -+dev y72 x12 IOB 3 suspend 3STATE -+net 1 in y72 x12 IOB 3 pin O -bit: -+dev y72 x12 IOB 3 ostd LVCMOS33 -+dev y72 x12 IOB 3 strength 8 -+dev y72 x12 IOB 3 slew SLOW -+dev y72 x12 IOB 3 O_used -+dev y72 x12 IOB 3 suspend 3STATE -O end dump autotest.tmp/autotest_iob_cfg_000020.diff - -O Test completed. -O #NODIFF timestamp 1055 -O #NODIFF memusage 85 - diff --git a/autotest.gold/autotest_logic_cfg.log b/autotest.gold/autotest_logic_cfg.log deleted file mode 100644 index b0495b2..0000000 --- a/autotest.gold/autotest_logic_cfg.log +++ /dev/null @@ -1,480 +0,0 @@ - -O fpgatools automatic test suite. Be welcome and be our guest. namo namaha. - -O Test: logic_cfg -O Diff: ./autotest_diff.sh -O Skip: 0 - -O Time measured in seconds from 0. -O #NODIFF timestamp 0 -O Memory usage reported in megabytes. -O #NODIFF memusage 15 -O Building memory model... -O Done -O #NODIFF timestamp 4 -O #NODIFF memusage 74 - -O begin dump autotest.tmp/autotest_logic_cfg_000001.diff -fp: -+dev y68 x13 LOGIC 0 A_used -+dev y68 x13 LOGIC 0 A6_lut A1 -bit: -+dev y68 x13 LOGIC 0 A_used -+dev y68 x13 LOGIC 0 A6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000001.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000002.diff -fp: --dev y68 x13 LOGIC 0 A6_lut A1 -+dev y68 x13 LOGIC 0 A6_lut A2 -bit: --dev y68 x13 LOGIC 0 A6_lut A1 -+dev y68 x13 LOGIC 0 A6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000002.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000003.diff -fp: --dev y68 x13 LOGIC 0 A6_lut A2 -+dev y68 x13 LOGIC 0 A6_lut A3 -bit: --dev y68 x13 LOGIC 0 A6_lut A2 -+dev y68 x13 LOGIC 0 A6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000003.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000004.diff -fp: --dev y68 x13 LOGIC 0 A6_lut A3 -+dev y68 x13 LOGIC 0 A6_lut A4 -bit: --dev y68 x13 LOGIC 0 A6_lut A3 -+dev y68 x13 LOGIC 0 A6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000004.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000005.diff -fp: --dev y68 x13 LOGIC 0 A6_lut A4 -+dev y68 x13 LOGIC 0 A6_lut A5 -bit: --dev y68 x13 LOGIC 0 A6_lut A4 -+dev y68 x13 LOGIC 0 A6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000005.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000006.diff -fp: --dev y68 x13 LOGIC 0 A6_lut A5 -+dev y68 x13 LOGIC 0 A6_lut A6 -bit: --dev y68 x13 LOGIC 0 A6_lut A5 -+dev y68 x13 LOGIC 0 A6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000006.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000007.diff -fp: --dev y68 x13 LOGIC 0 A_used --dev y68 x13 LOGIC 0 A6_lut A6 -+dev y68 x13 LOGIC 0 B_used -+dev y68 x13 LOGIC 0 B6_lut A1 -bit: --dev y68 x13 LOGIC 0 A_used --dev y68 x13 LOGIC 0 A6_lut A6 -+dev y68 x13 LOGIC 0 B_used -+dev y68 x13 LOGIC 0 B6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000007.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000008.diff -fp: --dev y68 x13 LOGIC 0 B6_lut A1 -+dev y68 x13 LOGIC 0 B6_lut A2 -bit: --dev y68 x13 LOGIC 0 B6_lut A1 -+dev y68 x13 LOGIC 0 B6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000008.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000009.diff -fp: --dev y68 x13 LOGIC 0 B6_lut A2 -+dev y68 x13 LOGIC 0 B6_lut A3 -bit: --dev y68 x13 LOGIC 0 B6_lut A2 -+dev y68 x13 LOGIC 0 B6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000009.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000010.diff -fp: --dev y68 x13 LOGIC 0 B6_lut A3 -+dev y68 x13 LOGIC 0 B6_lut A4 -bit: --dev y68 x13 LOGIC 0 B6_lut A3 -+dev y68 x13 LOGIC 0 B6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000010.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000011.diff -fp: --dev y68 x13 LOGIC 0 B6_lut A4 -+dev y68 x13 LOGIC 0 B6_lut A5 -bit: --dev y68 x13 LOGIC 0 B6_lut A4 -+dev y68 x13 LOGIC 0 B6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000011.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000012.diff -fp: --dev y68 x13 LOGIC 0 B6_lut A5 -+dev y68 x13 LOGIC 0 B6_lut A6 -bit: --dev y68 x13 LOGIC 0 B6_lut A5 -+dev y68 x13 LOGIC 0 B6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000012.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000013.diff -fp: --dev y68 x13 LOGIC 0 B_used --dev y68 x13 LOGIC 0 B6_lut A6 -+dev y68 x13 LOGIC 0 C_used -+dev y68 x13 LOGIC 0 C6_lut A1 -bit: --dev y68 x13 LOGIC 0 B_used --dev y68 x13 LOGIC 0 B6_lut A6 -+dev y68 x13 LOGIC 0 C_used -+dev y68 x13 LOGIC 0 C6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000013.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000014.diff -fp: --dev y68 x13 LOGIC 0 C6_lut A1 -+dev y68 x13 LOGIC 0 C6_lut A2 -bit: --dev y68 x13 LOGIC 0 C6_lut A1 -+dev y68 x13 LOGIC 0 C6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000014.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000015.diff -fp: --dev y68 x13 LOGIC 0 C6_lut A2 -+dev y68 x13 LOGIC 0 C6_lut A3 -bit: --dev y68 x13 LOGIC 0 C6_lut A2 -+dev y68 x13 LOGIC 0 C6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000015.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000016.diff -fp: --dev y68 x13 LOGIC 0 C6_lut A3 -+dev y68 x13 LOGIC 0 C6_lut A4 -bit: --dev y68 x13 LOGIC 0 C6_lut A3 -+dev y68 x13 LOGIC 0 C6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000016.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000017.diff -fp: --dev y68 x13 LOGIC 0 C6_lut A4 -+dev y68 x13 LOGIC 0 C6_lut A5 -bit: --dev y68 x13 LOGIC 0 C6_lut A4 -+dev y68 x13 LOGIC 0 C6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000017.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000018.diff -fp: --dev y68 x13 LOGIC 0 C6_lut A5 -+dev y68 x13 LOGIC 0 C6_lut A6 -bit: --dev y68 x13 LOGIC 0 C6_lut A5 -+dev y68 x13 LOGIC 0 C6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000018.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000019.diff -fp: --dev y68 x13 LOGIC 0 C_used --dev y68 x13 LOGIC 0 C6_lut A6 -+dev y68 x13 LOGIC 0 D_used -+dev y68 x13 LOGIC 0 D6_lut A1 -bit: --dev y68 x13 LOGIC 0 C_used --dev y68 x13 LOGIC 0 C6_lut A6 -+dev y68 x13 LOGIC 0 D_used -+dev y68 x13 LOGIC 0 D6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000019.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000020.diff -fp: --dev y68 x13 LOGIC 0 D6_lut A1 -+dev y68 x13 LOGIC 0 D6_lut A2 -bit: --dev y68 x13 LOGIC 0 D6_lut A1 -+dev y68 x13 LOGIC 0 D6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000020.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000021.diff -fp: --dev y68 x13 LOGIC 0 D6_lut A2 -+dev y68 x13 LOGIC 0 D6_lut A3 -bit: --dev y68 x13 LOGIC 0 D6_lut A2 -+dev y68 x13 LOGIC 0 D6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000021.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000022.diff -fp: --dev y68 x13 LOGIC 0 D6_lut A3 -+dev y68 x13 LOGIC 0 D6_lut A4 -bit: --dev y68 x13 LOGIC 0 D6_lut A3 -+dev y68 x13 LOGIC 0 D6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000022.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000023.diff -fp: --dev y68 x13 LOGIC 0 D6_lut A4 -+dev y68 x13 LOGIC 0 D6_lut A5 -bit: --dev y68 x13 LOGIC 0 D6_lut A4 -+dev y68 x13 LOGIC 0 D6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000023.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000024.diff -fp: --dev y68 x13 LOGIC 0 D6_lut A5 -+dev y68 x13 LOGIC 0 D6_lut A6 -bit: --dev y68 x13 LOGIC 0 D6_lut A5 -+dev y68 x13 LOGIC 0 D6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000024.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000025.diff -fp: --dev y68 x13 LOGIC 0 D_used --dev y68 x13 LOGIC 0 D6_lut A6 -+dev y68 x13 LOGIC 1 A_used -+dev y68 x13 LOGIC 1 A6_lut A1 -bit: --dev y68 x13 LOGIC 0 D_used --dev y68 x13 LOGIC 0 D6_lut A6 -+dev y68 x13 LOGIC 1 A_used -+dev y68 x13 LOGIC 1 A6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000025.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000026.diff -fp: --dev y68 x13 LOGIC 1 A6_lut A1 -+dev y68 x13 LOGIC 1 A6_lut A2 -bit: --dev y68 x13 LOGIC 1 A6_lut A1 -+dev y68 x13 LOGIC 1 A6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000026.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000027.diff -fp: --dev y68 x13 LOGIC 1 A6_lut A2 -+dev y68 x13 LOGIC 1 A6_lut A3 -bit: --dev y68 x13 LOGIC 1 A6_lut A2 -+dev y68 x13 LOGIC 1 A6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000027.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000028.diff -fp: --dev y68 x13 LOGIC 1 A6_lut A3 -+dev y68 x13 LOGIC 1 A6_lut A4 -bit: --dev y68 x13 LOGIC 1 A6_lut A3 -+dev y68 x13 LOGIC 1 A6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000028.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000029.diff -fp: --dev y68 x13 LOGIC 1 A6_lut A4 -+dev y68 x13 LOGIC 1 A6_lut A5 -bit: --dev y68 x13 LOGIC 1 A6_lut A4 -+dev y68 x13 LOGIC 1 A6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000029.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000030.diff -fp: --dev y68 x13 LOGIC 1 A6_lut A5 -+dev y68 x13 LOGIC 1 A6_lut A6 -bit: --dev y68 x13 LOGIC 1 A6_lut A5 -+dev y68 x13 LOGIC 1 A6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000030.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000031.diff -fp: --dev y68 x13 LOGIC 1 A_used --dev y68 x13 LOGIC 1 A6_lut A6 -+dev y68 x13 LOGIC 1 B_used -+dev y68 x13 LOGIC 1 B6_lut A1 -bit: --dev y68 x13 LOGIC 1 A_used --dev y68 x13 LOGIC 1 A6_lut A6 -+dev y68 x13 LOGIC 1 B_used -+dev y68 x13 LOGIC 1 B6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000031.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000032.diff -fp: --dev y68 x13 LOGIC 1 B6_lut A1 -+dev y68 x13 LOGIC 1 B6_lut A2 -bit: --dev y68 x13 LOGIC 1 B6_lut A1 -+dev y68 x13 LOGIC 1 B6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000032.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000033.diff -fp: --dev y68 x13 LOGIC 1 B6_lut A2 -+dev y68 x13 LOGIC 1 B6_lut A3 -bit: --dev y68 x13 LOGIC 1 B6_lut A2 -+dev y68 x13 LOGIC 1 B6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000033.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000034.diff -fp: --dev y68 x13 LOGIC 1 B6_lut A3 -+dev y68 x13 LOGIC 1 B6_lut A4 -bit: --dev y68 x13 LOGIC 1 B6_lut A3 -+dev y68 x13 LOGIC 1 B6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000034.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000035.diff -fp: --dev y68 x13 LOGIC 1 B6_lut A4 -+dev y68 x13 LOGIC 1 B6_lut A5 -bit: --dev y68 x13 LOGIC 1 B6_lut A4 -+dev y68 x13 LOGIC 1 B6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000035.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000036.diff -fp: --dev y68 x13 LOGIC 1 B6_lut A5 -+dev y68 x13 LOGIC 1 B6_lut A6 -bit: --dev y68 x13 LOGIC 1 B6_lut A5 -+dev y68 x13 LOGIC 1 B6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000036.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000037.diff -fp: --dev y68 x13 LOGIC 1 B_used --dev y68 x13 LOGIC 1 B6_lut A6 -+dev y68 x13 LOGIC 1 C_used -+dev y68 x13 LOGIC 1 C6_lut A1 -bit: --dev y68 x13 LOGIC 1 B_used --dev y68 x13 LOGIC 1 B6_lut A6 -+dev y68 x13 LOGIC 1 C_used -+dev y68 x13 LOGIC 1 C6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000037.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000038.diff -fp: --dev y68 x13 LOGIC 1 C6_lut A1 -+dev y68 x13 LOGIC 1 C6_lut A2 -bit: --dev y68 x13 LOGIC 1 C6_lut A1 -+dev y68 x13 LOGIC 1 C6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000038.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000039.diff -fp: --dev y68 x13 LOGIC 1 C6_lut A2 -+dev y68 x13 LOGIC 1 C6_lut A3 -bit: --dev y68 x13 LOGIC 1 C6_lut A2 -+dev y68 x13 LOGIC 1 C6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000039.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000040.diff -fp: --dev y68 x13 LOGIC 1 C6_lut A3 -+dev y68 x13 LOGIC 1 C6_lut A4 -bit: --dev y68 x13 LOGIC 1 C6_lut A3 -+dev y68 x13 LOGIC 1 C6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000040.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000041.diff -fp: --dev y68 x13 LOGIC 1 C6_lut A4 -+dev y68 x13 LOGIC 1 C6_lut A5 -bit: --dev y68 x13 LOGIC 1 C6_lut A4 -+dev y68 x13 LOGIC 1 C6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000041.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000042.diff -fp: --dev y68 x13 LOGIC 1 C6_lut A5 -+dev y68 x13 LOGIC 1 C6_lut A6 -bit: --dev y68 x13 LOGIC 1 C6_lut A5 -+dev y68 x13 LOGIC 1 C6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000042.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000043.diff -fp: --dev y68 x13 LOGIC 1 C_used --dev y68 x13 LOGIC 1 C6_lut A6 -+dev y68 x13 LOGIC 1 D_used -+dev y68 x13 LOGIC 1 D6_lut A1 -bit: --dev y68 x13 LOGIC 1 C_used --dev y68 x13 LOGIC 1 C6_lut A6 -+dev y68 x13 LOGIC 1 D_used -+dev y68 x13 LOGIC 1 D6_lut A1 -O end dump autotest.tmp/autotest_logic_cfg_000043.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000044.diff -fp: --dev y68 x13 LOGIC 1 D6_lut A1 -+dev y68 x13 LOGIC 1 D6_lut A2 -bit: --dev y68 x13 LOGIC 1 D6_lut A1 -+dev y68 x13 LOGIC 1 D6_lut A2 -O end dump autotest.tmp/autotest_logic_cfg_000044.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000045.diff -fp: --dev y68 x13 LOGIC 1 D6_lut A2 -+dev y68 x13 LOGIC 1 D6_lut A3 -bit: --dev y68 x13 LOGIC 1 D6_lut A2 -+dev y68 x13 LOGIC 1 D6_lut A3 -O end dump autotest.tmp/autotest_logic_cfg_000045.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000046.diff -fp: --dev y68 x13 LOGIC 1 D6_lut A3 -+dev y68 x13 LOGIC 1 D6_lut A4 -bit: --dev y68 x13 LOGIC 1 D6_lut A3 -+dev y68 x13 LOGIC 1 D6_lut A4 -O end dump autotest.tmp/autotest_logic_cfg_000046.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000047.diff -fp: --dev y68 x13 LOGIC 1 D6_lut A4 -+dev y68 x13 LOGIC 1 D6_lut A5 -bit: --dev y68 x13 LOGIC 1 D6_lut A4 -+dev y68 x13 LOGIC 1 D6_lut A5 -O end dump autotest.tmp/autotest_logic_cfg_000047.diff - -O begin dump autotest.tmp/autotest_logic_cfg_000048.diff -fp: --dev y68 x13 LOGIC 1 D6_lut A5 -+dev y68 x13 LOGIC 1 D6_lut A6 -bit: --dev y68 x13 LOGIC 1 D6_lut A5 -+dev y68 x13 LOGIC 1 D6_lut A6 -O end dump autotest.tmp/autotest_logic_cfg_000048.diff - -O Test completed. -O #NODIFF timestamp 384 -O #NODIFF memusage 74 - diff --git a/blinking_led.c b/blinking_led.c new file mode 100644 index 0000000..1d38d66 --- /dev/null +++ b/blinking_led.c @@ -0,0 +1,73 @@ +// +// Author: Wolfgang Spraul +// +// This is free and unencumbered software released into the public domain. +// For details see the UNLICENSE file at the root of the source tree. +// + +#include "model.h" +#include "floorplan.h" +#include "control.h" + +int main(int argc, char** argv) +{ + struct fpga_model model; + int iob_inA_y, iob_inA_x, iob_inA_type_idx; + int iob_inB_y, iob_inB_x, iob_inB_type_idx; + int iob_out_y, iob_out_x, iob_out_type_idx; + int logic_y, logic_x, logic_type_idx; + net_idx_t inA_net, inB_net, out_net; + int rc; + + if ((rc = fpga_build_model(&model, XC6SLX9_ROWS, XC6SLX9_COLUMNS, + XC6SLX9_LEFT_WIRING, XC6SLX9_RIGHT_WIRING))) FAIL(rc); + + if ((rc = fpga_find_iob(&model, "P45", &iob_inA_y, &iob_inA_x, + &iob_inA_type_idx))) FAIL(rc); + if ((rc = fdev_iob_input(&model, iob_inA_y, iob_inA_x, + iob_inA_type_idx))) FAIL(rc); + + if ((rc = fpga_find_iob(&model, "P46", &iob_inB_y, &iob_inB_x, + &iob_inB_type_idx))) FAIL(rc); + if ((rc = fdev_iob_input(&model, iob_inB_y, iob_inB_x, + iob_inB_type_idx))) FAIL(rc); + + if ((rc = fpga_find_iob(&model, "P48", &iob_out_y, &iob_out_x, + &iob_out_type_idx))) FAIL(rc); + if ((rc = fdev_iob_output(&model, iob_out_y, iob_out_x, + iob_out_type_idx))) FAIL(rc); + + logic_y = 68; + logic_x = 13; + logic_type_idx = DEV_LOGX; + if ((rc = fdev_logic_set_lut(&model, logic_y, logic_x, logic_type_idx, + LUT_D, 6, "A3*A5", ZTERM))) FAIL(rc); + if ((rc = fdev_logic_out_used(&model, logic_y, logic_x, logic_type_idx, + LUT_D))) FAIL(rc); + + if ((rc = fnet_new(&model, &inA_net))) FAIL(rc); + if ((rc = fnet_add_port(&model, inA_net, iob_inA_y, iob_inA_x, + DEV_IOB, iob_inA_type_idx, IOB_OUT_I))) FAIL(rc); + if ((rc = fnet_add_port(&model, inA_net, logic_y, logic_x, DEV_LOGIC, + logic_type_idx, LI_D3))) FAIL(rc); + if ((rc = fnet_autoroute(&model, inA_net))) FAIL(rc); + + if ((rc = fnet_new(&model, &inB_net))) FAIL(rc); + if ((rc = fnet_add_port(&model, inB_net, iob_inB_y, iob_inB_x, + DEV_IOB, iob_inB_type_idx, IOB_OUT_I))) FAIL(rc); + if ((rc = fnet_add_port(&model, inB_net, logic_y, logic_x, DEV_LOGIC, + logic_type_idx, LI_D5))) FAIL(rc); + if ((rc = fnet_autoroute(&model, inB_net))) FAIL(rc); + + if ((rc = fnet_new(&model, &out_net))) FAIL(rc); + if ((rc = fnet_add_port(&model, out_net, logic_y, logic_x, DEV_LOGIC, + logic_type_idx, LO_D))) FAIL(rc); + if ((rc = fnet_add_port(&model, out_net, iob_out_y, iob_out_x, + DEV_IOB, iob_out_type_idx, IOB_IN_O))) FAIL(rc); + if ((rc = fnet_autoroute(&model, out_net))) FAIL(rc); + + if ((rc = write_floorplan(stdout, &model, FP_DEFAULT))) FAIL(rc); + return EXIT_SUCCESS; +fail: + return rc; +}