tests: Check for btorsim --vcd
[SymbiYosys.git] / Makefile
1
2 DESTDIR =
3 PREFIX = /usr/local
4 PROGRAM_PREFIX =
5
6 # On Windows, manually setting absolute path to Python binary may be required
7 # for launcher executable to work. From MSYS2, this can be done using the
8 # following command: "which python3 | cygpath -w -m -f -".
9 ifeq ($(OS), Windows_NT)
10 PYTHON = $(shell cygpath -w -m $(PREFIX)/bin/python3)
11 endif
12
13 .PHONY: help install ci test html clean
14
15 help:
16 @echo ""
17 @echo "sudo make install"
18 @echo " build and install SymbiYosys (sby)"
19 @echo ""
20 @echo "make html"
21 @echo " build documentation in docs/build/html/"
22 @echo ""
23 @echo "make test"
24 @echo " run tests"
25 @echo ""
26 @echo "make ci"
27 @echo " run tests and check examples"
28 @echo " note: this requires a full Tabby CAD Suite or OSS CAD Suite install"
29 @echo ""
30 @echo "make clean"
31 @echo " cleanup"
32 @echo ""
33
34 install:
35 mkdir -p $(DESTDIR)$(PREFIX)/bin
36 mkdir -p $(DESTDIR)$(PREFIX)/share/yosys/python3
37 cp sbysrc/sby_*.py $(DESTDIR)$(PREFIX)/share/yosys/python3/
38 sed -e 's|##yosys-program-prefix##|"'$(PROGRAM_PREFIX)'"|' < sbysrc/sby_core.py > $(DESTDIR)$(PREFIX)/share/yosys/python3/sby_core.py
39 ifeq ($(OS), Windows_NT)
40 sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' \
41 -e "s|#!/usr/bin/env python3|#!$(PYTHON)|" < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby-script.py
42 gcc -DGUI=0 -O -s -o $(DESTDIR)$(PREFIX)/bin/sby.exe extern/launcher.c
43 else
44 sed 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby
45 chmod +x $(DESTDIR)$(PREFIX)/bin/sby
46 endif
47
48 .PHONY: check_cad_suite run_ci
49
50 ci: check_cad_suite
51 @$(MAKE) run_ci
52
53 run_ci: \
54 test_demo1 test_demo2 test_demo3 \
55 test_abstract_abstr test_abstract_props \
56 test_demos_fib_cover test_demos_fib_prove test_demos_fib_live \
57 test_multiclk_dpmem \
58 test_puzzles_djb2hash test_puzzles_pour853to4 test_puzzles_wolfgoatcabbage \
59 test_puzzles_primegen_primegen test_puzzles_primegen_primes_pass test_puzzles_primegen_primes_fail \
60 test_quickstart_demo test_quickstart_cover test_quickstart_prove test_quickstart_memory \
61 test
62 if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
63 YOSYS_NOVERIFIC=1 $(MAKE) run_ci; \
64 fi
65
66 check_cad_suite:
67 @if ! which tabbypip >/dev/null 2>&1; then \
68 echo "'make ci' requries the Tabby CAD Suite or the OSS CAD Suite"; \
69 echo "try 'make test' instead or run 'make run_ci' to proceed anyway."; \
70 exit 1; \
71 fi
72
73 test_demo1:
74 cd sbysrc && python3 sby.py -f demo1.sby
75
76 test_demo2:
77 cd sbysrc && python3 sby.py -f demo2.sby
78
79 test_demo3:
80 cd sbysrc && python3 sby.py -f demo3.sby
81
82 test_abstract_abstr:
83 @if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
84 cd docs/examples/abstract && python3 ../../../sbysrc/sby.py -f abstr.sby; \
85 else echo "skipping $@"; fi
86
87 test_abstract_props:
88 if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
89 cd docs/examples/abstract && python3 ../../../sbysrc/sby.py -f props.sby; \
90 else echo "skipping $@"; fi
91
92 test_demos_fib_cover:
93 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby cover
94
95 test_demos_fib_prove:
96 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby prove
97
98 test_demos_fib_live:
99 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby live
100
101 test_multiclk_dpmem:
102 cd docs/examples/multiclk && python3 ../../../sbysrc/sby.py -f dpmem.sby
103
104 test_puzzles_djb2hash:
105 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f djb2hash.sby
106
107 test_puzzles_pour853to4:
108 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f pour_853_to_4.sby
109
110 test_puzzles_wolfgoatcabbage:
111 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f wolf_goat_cabbage.sby
112
113 test_puzzles_primegen_primegen:
114 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primegen
115
116 test_puzzles_primegen_primes_pass:
117 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primes_pass
118
119 test_puzzles_primegen_primes_fail:
120 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primes_fail
121
122 test_quickstart_demo:
123 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f demo.sby
124
125 test_quickstart_cover:
126 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f cover.sby
127
128 test_quickstart_prove:
129 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f prove.sby
130
131 test_quickstart_memory:
132 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f memory.sby
133
134 test:
135 $(MAKE) -C tests test
136
137 html:
138 $(MAKE) -C docs html
139
140 clean:
141 $(MAKE) -C docs clean
142 rm -rf docs/build sbysrc/sby sbysrc/__pycache__