improved testing

This commit is contained in:
Wolfgang Spraul 2012-09-29 06:32:10 +02:00
parent 3c94fff29a
commit b227c4151d
7 changed files with 244 additions and 861 deletions

6
.gitignore vendored
View File

@ -28,11 +28,11 @@ autotest
fp2bit
bit2fp
hello_world
blinking_led
#
# folders
#
autotest.tmp/
autotest.out/
test.gold/
test.out/
build-libs/
compare.gold/

228
Makefile
View File

@ -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

6
README
View File

@ -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):

View File

@ -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
{

View File

@ -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

View File

@ -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

73
blinking_led.c Normal file
View File

@ -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;
}