3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-05-25 11:26:22 +00:00

Update CI scripts for CMake

This commit is contained in:
Miodrag Milanovic 2026-05-22 12:31:30 +02:00
parent cad5353a2a
commit ba6083da16
30 changed files with 315 additions and 327 deletions

View file

@ -1,3 +1,5 @@
include common.mk
# Makefile for Sphinx documentation
#
@ -46,10 +48,10 @@ help:
.PHONY: clean
clean: clean-examples
rm -rf $(BUILDDIR)/*
rm -rf util/__pycache__
rm -rf source/generated
$(MAKE) -C source/_images clean
@rm -rf $(BUILDDIR)/*
@rm -rf util/__pycache__
@rm -rf source/generated
@$(MAKE) -C source/_images clean
.PHONY: html
html:
@ -235,7 +237,7 @@ test: test-examples test-macros
FORCE:
Makefile-%: FORCE
$(MAKE) -C $(@D) $(*F)
@$(MAKE) -C $(@D) $(*F)
CODE_EXAMPLES := $(wildcard source/code_examples/*/Makefile)
TEST_EXAMPLES := $(addsuffix -examples,$(CODE_EXAMPLES))
@ -245,45 +247,42 @@ clean-examples: $(CLEAN_EXAMPLES)
examples: $(TEST_EXAMPLES)
test-macros:
$(PYTHON) tests/macro_commands.py
@$(PYTHON) tests/macro_commands.py
.PHONY: images
images:
$(MAKE) -C source/_images
$(MAKE) -C source/_images convert
BUILD_DIR ?= ..
BUILD_CMD := $(BUILD_DIR)/$(PROGRAM_PREFIX)
@$(MAKE) -C source/_images
@$(MAKE) -C source/_images convert
.PHONY: extract
extract:
mkdir -p source/generated
$(BUILD_CMD)yosys -q -p 'help -dump-cmds-json source/generated/cmds.json'
$(BUILD_CMD)yosys -q -p 'help -dump-cells-json source/generated/cells.json'
@mkdir -p source/generated
@$(BUILD_CMD)yosys -q -p 'help -dump-cmds-json source/generated/cmds.json'
@$(BUILD_CMD)yosys -q -p 'help -dump-cells-json source/generated/cells.json'
cp ../passes/cmds/chformal.cc source/generated/
$(BUILD_CMD)yosys -qQT -h 'chformal' -l source/generated/chformal.log
@cp ../passes/cmds/chformal.cc source/generated/
@$(BUILD_CMD)yosys -qQT -h 'chformal' -l source/generated/chformal.log
mkdir -p source/generated/functional
cp ../backends/functional/smtlib.cc source/generated/functional/
-cd .. && diff -U 20 backends/functional/smtlib.cc backends/functional/smtlib_rosette.cc \
> docs/source/generated/functional/rosette.diff
@mkdir -p source/generated/functional
@cp ../backends/functional/smtlib.cc source/generated/functional/
-@cd .. && diff -U 20 backends/functional/smtlib.cc backends/functional/smtlib_rosette.cc \
> docs/source/generated/functional/rosette.diff || true
$(BUILD_CMD)yosys --help >source/generated/yosys
$(BUILD_CMD)yosys-smtbmc --help >source/generated/yosys-smtbmc
$(BUILD_CMD)yosys-witness --help >source/generated/yosys-witness
$(BUILD_CMD)yosys-config --help >source/generated/yosys-config
-$(BUILD_CMD)yosys-filterlib --help 2>source/generated/yosys-filterlib
@$(BUILD_CMD)yosys --help >source/generated/yosys
@$(BUILD_CMD)yosys-smtbmc --help >source/generated/yosys-smtbmc
@$(BUILD_CMD)yosys-witness --help >source/generated/yosys-witness
@$(BUILD_CMD)yosys-config --help >source/generated/yosys-config
-@$(BUILD_CMD)yosys-filterlib --help 2>source/generated/yosys-filterlib || true
ifeq ($(ABCEXTERNAL),)
-$(BUILD_CMD)yosys-abc --help 2>source/generated/yosys-abc
-@$(BUILD_CMD)yosys-abc --help 2>source/generated/yosys-abc > /dev/null || true
endif
.PHONY: gen
gen:
$(MAKE) examples
$(MAKE) images
$(MAKE) extract
@$(MAKE) examples
@$(MAKE) images
@$(MAKE) extract
.PHONY: reqs
reqs:
$(PYTHON) -m pip install -r source/requirements.txt
@$(PYTHON) -m pip install -r source/requirements.txt

9
docs/common.mk Normal file
View file

@ -0,0 +1,9 @@
ROOT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
BUILD_DIR ?= $(ROOT_DIR)/../build
BUILD_CMD := $(BUILD_DIR)/$(PROGRAM_PREFIX)
YOSYS ?= $(BUILD_CMD)yosys
YOSYS_CONFIG ?= $(BUILD_CMD)yosys-config
export YOSYS
export YOSYS_CONFIG

View file

@ -34,18 +34,18 @@ all_tex: $(TEX_FILES:.tex=.pdf) $(TEX_FILES:.tex=.svg)
# limit output size to US letter (same as latexpdf output) to avoid oversize error
%.pdf: %.dot
$(FAKETIME) dot -Tpdf -Gsize="8.5,11" -o $@ $<
@$(FAKETIME) dot -Tpdf -Gsize="8.5,11" -o $@ $< >/dev/null 2>&1
%.pdf: %.tex
cd $(@D) && $(FAKETIME) pdflatex $(<F) --interaction=nonstopmode
@cd $(@D) && $(FAKETIME) pdflatex $(<F) --interaction=nonstopmode >/dev/null 2>&1
%.svg: %.pdf
pdf2svg $< $@
@pdf2svg $< $@ >/dev/null 2>&1
.PHONY: clean tidy
tidy:
rm -f **/*.log **/*.aux
@rm -f **/*.log **/*.aux
clean: tidy
rm -rf code_examples
rm -f **/*.pdf **/*.svg
@rm -rf code_examples
@rm -f **/*.pdf **/*.svg

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
.PHONY: all dots examples
all: dots examples
@ -8,23 +6,23 @@ dots: test1.dot my_cmd.so
examples: test0.log test1.log test2.log my_cmd.so
my_cmd.so: my_cmd.cc
$(YOSYS)-config --exec --cxx --cxxflags --ldflags -o my_cmd.so -shared my_cmd.cc --ldlibs
@$(YOSYS_CONFIG) --exec --cxx --cxxflags --ldflags -o my_cmd.so -shared my_cmd.cc --ldlibs
test0.log: my_cmd.so
$(YOSYS) -QTl test0.log_new -m ./my_cmd.so -p 'my_cmd foo bar' -f verilog absval_ref.v
mv test0.log_new test0.log
@$(YOSYS) -QTl test0.log_new -m ./my_cmd.so -p 'my_cmd foo bar' -f verilog absval_ref.v >/dev/null 2>&1
@mv test0.log_new test0.log
test1.log: my_cmd.so
$(YOSYS) -QTl test1.log_new -m ./my_cmd.so -p 'clean; test1; dump' -f verilog absval_ref.v
mv test1.log_new test1.log
@$(YOSYS) -QTl test1.log_new -m ./my_cmd.so -p 'clean; test1; dump' -f verilog absval_ref.v >/dev/null 2>&1
@mv test1.log_new test1.log
test1.dot: my_cmd.so
$(YOSYS) -m ./my_cmd.so -p 'test1; show -format dot -prefix test1'
@$(YOSYS) -m ./my_cmd.so -p 'test1; show -format dot -prefix test1' >/dev/null 2>&1
test2.log: my_cmd.so
$(YOSYS) -QTl test2.log_new -m ./my_cmd.so -p 'hierarchy -top test; test2' -f verilog sigmap_test.v
mv test2.log_new test2.log
@$(YOSYS) -QTl test2.log_new -m ./my_cmd.so -p 'hierarchy -top test; test2' -f verilog sigmap_test.v >/dev/null 2>&1
@mv test2.log_new test2.log
.PHONY: clean
clean:
rm -f *.d *.so *.dot
@rm -f *.d *.so *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
DOT_NAMES = addr_gen_hier addr_gen_proc addr_gen_clean
DOT_NAMES += rdata_proc rdata_flat rdata_adffe rdata_memrdv2 rdata_alumacc rdata_coarse
@ -16,12 +14,12 @@ dots: $(DOTS) $(MAPDOTS)
examples: fifo.out fifo.stat
$(DOTS) fifo.out: fifo.v fifo.ys
$(YOSYS) fifo.ys -l fifo.out -Q -T
@$(YOSYS) fifo.ys -l fifo.out -Q -T >/dev/null 2>&1
$(MAPDOTS) fifo.stat: fifo.v fifo_map.ys
$(YOSYS) fifo_map.ys
@$(YOSYS) fifo_map.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
rm -f fifo.out fifo.stat
@rm -f *.dot
@rm -f fifo.out fifo.stat

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
DOTS = counter_00.dot counter_01.dot counter_02.dot counter_03.dot
@ -10,8 +8,8 @@ dots: $(DOTS)
examples:
$(DOTS): counter.v counter.ys mycells.lib
$(YOSYS) counter.ys
@$(YOSYS) counter.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
DOTS = macc_simple_xmap.dot macc_xilinx_xmap.dot
@ -10,12 +8,12 @@ dots: $(DOTS)
examples:
macc_simple_xmap.dot: macc_simple_*.v macc_simple_test.ys
$(YOSYS) macc_simple_test.ys
@$(YOSYS) macc_simple_test.ys >/dev/null 2>&1
macc_xilinx_xmap.dot: macc_xilinx_*.v macc_xilinx_test.ys
$(YOSYS) macc_xilinx_test.ys
@$(YOSYS) macc_xilinx_test.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
DOT_NAMES = opt_share opt_muxtree opt_merge opt_expr
@ -12,9 +10,9 @@ dots: $(DOTS)
examples:
%.dot: %.ys
$(YOSYS) $<
gvpack -u -o $@ $*_full.dot
@$(YOSYS) $< >/dev/null 2>&1
@gvpack -u -o $@ $*_full.dot >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
.PHONY: all dots examples
all: dots examples
@ -8,8 +6,8 @@ dots: scrambler_p01.dot scrambler_p02.dot
examples:
scrambler_p01.dot scrambler_p02.dot: scrambler.ys scrambler.v
$(YOSYS) scrambler.ys
@$(YOSYS) scrambler.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
SUMPROD = sumprod_00 sumprod_01 sumprod_02 sumprod_03 sumprod_04 sumprod_05
SUMPROD_DOTS := $(addsuffix .dot,$(SUMPROD))
@ -17,18 +15,18 @@ dots: select.dot $(SUMPROD_DOTS) $(MEMDEMO_DOTS) $(SUBMOD_DOTS)
examples: sumprod.out
select.dot: select.v select.ys
$(YOSYS) select.ys
@$(YOSYS) select.ys >/dev/null 2>&1
$(SUMPROD_DOTS) sumprod.out: sumprod.v sumprod.ys
$(YOSYS) sumprod.ys
@$(YOSYS) sumprod.ys >/dev/null 2>&1
$(MEMDEMO_DOTS): memdemo.v memdemo.ys
$(YOSYS) memdemo.ys
@$(YOSYS) memdemo.ys >/dev/null 2>&1
$(SUBMOD_DOTS): memdemo.v submod.ys
$(YOSYS) submod.ys
@$(YOSYS) submod.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -rf *.dot
rm -f sumprod.out
@rm -rf *.dot
@rm -f sumprod.out

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
EXAMPLE = example_first example_second example_third
EXAMPLE_DOTS := $(addsuffix .dot,$(EXAMPLE))
@ -14,18 +12,18 @@ dots: splice.dot $(EXAMPLE_DOTS) $(CMOS_DOTS)
examples: example.out
splice.dot: splice.v
$(YOSYS) -p 'prep -top splice_demo; show -format dot -prefix splice' splice.v
@$(YOSYS) -p 'prep -top splice_demo; show -format dot -prefix splice' splice.v >/dev/null 2>&1
$(EXAMPLE_DOTS): example.v example.ys
$(YOSYS) example.ys
@$(YOSYS) example.ys >/dev/null 2>&1
example.out: example_lscd.ys example.v
$(YOSYS) $< -l $@ -Q -T
@$(YOSYS) $< -l $@ -Q -T >/dev/null 2>&1
$(CMOS_DOTS): cmos.v cmos.ys
$(YOSYS) cmos.ys
@$(YOSYS) cmos.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -rf *.dot
rm -f example.out
@rm -rf *.dot
@rm -f example.out

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
.PHONY: all dots examples
all: dots examples
@ -9,15 +7,15 @@ examples:
.PHONY: test
test: stubnets.so
$(YOSYS) -ql test1.log -m ./stubnets.so test.v -p "stubnets"
$(YOSYS) -ql test2.log -m ./stubnets.so test.v -p "opt; stubnets"
$(YOSYS) -ql test3.log -m ./stubnets.so test.v -p "techmap; opt; stubnets -report_bits"
tail test1.log test2.log test3.log
@$(YOSYS) -ql test1.log -m ./stubnets.so test.v -p "stubnets" >/dev/null 2>&1
@$(YOSYS) -ql test2.log -m ./stubnets.so test.v -p "opt; stubnets" >/dev/null 2>&1
@$(YOSYS) -ql test3.log -m ./stubnets.so test.v -p "techmap; opt; stubnets -report_bits" >/dev/null 2>&1
@tail test1.log test2.log test3.log
stubnets.so: stubnets.cc
$(YOSYS)-config --exec --cxx --cxxflags --ldflags -o $@ -shared $^ --ldlibs
@$(YOSYS)-config --exec --cxx --cxxflags --ldflags -o $@ -shared $^ --ldlibs >/dev/null 2>&1
.PHONY: clean
clean:
rm -f test1.log test2.log test3.log
rm -f stubnets.so stubnets.d
@rm -f test1.log test2.log test3.log
@rm -f stubnets.so stubnets.d

View file

@ -1,12 +1,9 @@
include ../../../common.mk
DOT_TARGETS += proc_01 proc_02 proc_03
DOT_TARGETS += memory_01 memory_02
DOT_TARGETS += techmap_01
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
DOTS = $(addsuffix .dot,$(DOT_TARGETS))
.PHONY: all dots examples
@ -15,9 +12,9 @@ dots: $(DOTS)
examples:
%.dot: %.v %.ys
$(YOSYS) -p 'script $*.ys; show -notitle -prefix $* -format dot'
@$(YOSYS) -p 'script $*.ys; show -notitle -prefix $* -format dot' >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -1,6 +1,4 @@
PROGRAM_PREFIX :=
YOSYS ?= ../../../../$(PROGRAM_PREFIX)yosys
include ../../../common.mk
.PHONY: all dots examples
all: dots examples
@ -8,20 +6,20 @@ dots: red_or3x1.dot sym_mul.dot mymul.dot mulshift.dot addshift.dot
examples:
red_or3x1.dot: red_or3x1_*
$(YOSYS) red_or3x1_test.ys
@$(YOSYS) red_or3x1_test.ys >/dev/null 2>&1
sym_mul.dot: sym_mul_*
$(YOSYS) sym_mul_test.ys
@$(YOSYS) sym_mul_test.ys >/dev/null 2>&1
mymul.dot: mymul_*
$(YOSYS) mymul_test.ys
@$(YOSYS) mymul_test.ys >/dev/null 2>&1
mulshift.dot: mulshift_*
$(YOSYS) mulshift_test.ys
@$(YOSYS) mulshift_test.ys >/dev/null 2>&1
addshift.dot: addshift_*
$(YOSYS) addshift_test.ys
@$(YOSYS) addshift_test.ys >/dev/null 2>&1
.PHONY: clean
clean:
rm -f *.dot
@rm -f *.dot

View file

@ -5,6 +5,7 @@ from pathlib import Path
import re
import subprocess
import sys
import os
# basic logging setup
logging.basicConfig(level=logging.INFO)
@ -17,7 +18,7 @@ THIS_FILE = (TESTS_DIR / "macro_commands.py").relative_to(ROOT_DIR)
MACRO_SOURCE = TESTS_DIR.parent / "source" / "code_examples" / "macro_commands"
assert MACRO_SOURCE.exists(), f"can't find macro_commands in {MACRO_SOURCE}"
YOSYS = ROOT_DIR / "yosys"
YOSYS = Path(os.environ.get("YOSYS", ROOT_DIR / "yosys"))
assert YOSYS.exists(), f"can't find yosys executable in {YOSYS}"
raise_error = False