3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-05-25 19:36:21 +00:00

Migrate build system to CMake

See #5895 for details.

This commit does not include CI or documentation changes.
This commit is contained in:
Catherine 2026-05-12 05:33:04 +00:00
parent 9d0cdb8551
commit 9b087b4aa7
207 changed files with 5202 additions and 2294 deletions

11
passes/CMakeLists.txt Normal file
View file

@ -0,0 +1,11 @@
add_subdirectory(cmds)
add_subdirectory(equiv)
add_subdirectory(fsm)
add_subdirectory(hierarchy)
add_subdirectory(memory)
add_subdirectory(opt)
add_subdirectory(pmgen)
add_subdirectory(proc)
add_subdirectory(sat)
add_subdirectory(techmap)
add_subdirectory(tests)

213
passes/cmds/CMakeLists.txt Normal file
View file

@ -0,0 +1,213 @@
add_subdirectory(sdc)
yosys_pass(exec
exec.cc
ENABLE_IF
YOSYS_ENABLE_SPAWN
)
yosys_pass(add
add.cc
)
yosys_pass(delete
delete.cc
)
yosys_pass(design
design.cc
ESSENTIAL
)
yosys_pass(design_equal
design_equal.cc
)
yosys_pass(select
select.cc
PROVIDES
cd
ls
ESSENTIAL
)
yosys_pass(show
show.cc
LIBRARIES
$<${YOSYS_ENABLE_READLINE}:PkgConfig::readline>
$<${YOSYS_ENABLE_EDITLINE}:PkgConfig::editline>
REQUIRES
read_rtlil
read_verilog
)
yosys_pass(viz
viz.cc
)
yosys_pass(rename
rename.cc
REQUIRES
write_verilog
)
yosys_pass(autoname
autoname.cc
)
yosys_pass(connect
connect.cc
)
yosys_pass(scatter
scatter.cc
)
yosys_pass(setundef
setundef.cc
)
yosys_pass(splitnets
splitnets.cc
)
yosys_pass(splitcells
splitcells.cc
)
yosys_pass(stat
stat.cc
REQUIRES
libparse
)
yosys_pass(internal_stats
internal_stats.cc
REQUIRES
libparse
)
yosys_pass(setattr
setattr.cc
PROVIDES
wbflip
setparam
chparam
)
yosys_pass(copy
copy.cc
)
yosys_pass(splice
splice.cc
)
yosys_pass(scc
scc.cc
)
yosys_pass(glift
glift.cc
)
yosys_pass(torder
torder.cc
)
yosys_pass(logcmd
logcmd.cc
)
yosys_pass(tee
tee.cc
)
yosys_pass(write_file
write_file.cc
)
yosys_pass(connwrappers
connwrappers.cc
)
yosys_pass(trace
trace.cc
PROVIDES
debug
)
yosys_pass(plugin
plugin.cc
INCLUDE_DIRS
${pybind11_INCLUDE_DIR}
LIBRARIES
$<${YOSYS_ENABLE_PLUGINS}:${Dlfcn_LIBRARIES}>
$<${YOSYS_ENABLE_PYTHON}:Python3::Python>
ESSENTIAL
)
yosys_pass(check
check.cc
)
yosys_pass(edgetypes
edgetypes.cc
)
yosys_pass(portlist
portlist.cc
)
yosys_pass(chformal
chformal.cc
)
yosys_pass(chtype
chtype.cc
)
yosys_pass(blackbox
blackbox.cc
)
yosys_pass(ltp
ltp.cc
)
yosys_pass(linux_perf
linux_perf.cc
)
yosys_pass(bugpoint
bugpoint.cc
REQUIRES
proc_clean
opt_clean
design
ENABLE_IF
YOSYS_ENABLE_SPAWN
)
yosys_pass(scratchpad
scratchpad.cc
)
yosys_pass(logger
logger.cc
)
yosys_pass(printattrs
printattrs.cc
)
yosys_pass(sta
sta.cc
)
yosys_pass(clean_zerowidth
clean_zerowidth.cc
)
yosys_pass(xprop
xprop.cc
REQUIRES
bmuxmap
demuxmap
)
yosys_pass(dft_tag
dft_tag.cc
)
yosys_pass(future
future.cc
)
yosys_pass(box_derive
box_derive.cc
)
yosys_pass(example_dt
example_dt.cc
)
yosys_pass(portarcs
portarcs.cc
)
yosys_pass(wrapcell
wrapcell.cc
)
yosys_pass(setenv
setenv.cc
)
yosys_pass(abstract
abstract.cc
)
yosys_pass(test_select
test_select.cc
)
yosys_pass(timeest
timeest.cc
)
yosys_pass(linecoverage
linecoverage.cc
)
yosys_pass(sort
sort.cc
)
yosys_pass(icell_liberty
icell_liberty.cc
)

View file

@ -1,64 +0,0 @@
ifeq ($(DISABLE_SPAWN),0)
OBJS += passes/cmds/exec.o
endif
OBJS += passes/cmds/add.o
OBJS += passes/cmds/delete.o
OBJS += passes/cmds/design.o
OBJS += passes/cmds/design_equal.o
OBJS += passes/cmds/select.o
OBJS += passes/cmds/show.o
OBJS += passes/cmds/viz.o
OBJS += passes/cmds/rename.o
OBJS += passes/cmds/autoname.o
OBJS += passes/cmds/connect.o
OBJS += passes/cmds/scatter.o
OBJS += passes/cmds/setundef.o
OBJS += passes/cmds/splitnets.o
OBJS += passes/cmds/splitcells.o
OBJS += passes/cmds/stat.o
OBJS += passes/cmds/internal_stats.o
OBJS += passes/cmds/setattr.o
OBJS += passes/cmds/copy.o
OBJS += passes/cmds/splice.o
OBJS += passes/cmds/scc.o
OBJS += passes/cmds/glift.o
OBJS += passes/cmds/torder.o
OBJS += passes/cmds/logcmd.o
OBJS += passes/cmds/tee.o
OBJS += passes/cmds/write_file.o
OBJS += passes/cmds/connwrappers.o
OBJS += passes/cmds/trace.o
OBJS += passes/cmds/plugin.o
OBJS += passes/cmds/check.o
OBJS += passes/cmds/edgetypes.o
OBJS += passes/cmds/portlist.o
OBJS += passes/cmds/chformal.o
OBJS += passes/cmds/chtype.o
OBJS += passes/cmds/blackbox.o
OBJS += passes/cmds/ltp.o
OBJS += passes/cmds/linux_perf.o
ifeq ($(DISABLE_SPAWN),0)
OBJS += passes/cmds/bugpoint.o
endif
OBJS += passes/cmds/scratchpad.o
OBJS += passes/cmds/logger.o
OBJS += passes/cmds/printattrs.o
OBJS += passes/cmds/sta.o
OBJS += passes/cmds/clean_zerowidth.o
OBJS += passes/cmds/xprop.o
OBJS += passes/cmds/dft_tag.o
OBJS += passes/cmds/future.o
OBJS += passes/cmds/box_derive.o
OBJS += passes/cmds/example_dt.o
OBJS += passes/cmds/portarcs.o
OBJS += passes/cmds/wrapcell.o
OBJS += passes/cmds/setenv.o
OBJS += passes/cmds/abstract.o
OBJS += passes/cmds/test_select.o
OBJS += passes/cmds/timeest.o
OBJS += passes/cmds/linecoverage.o
OBJS += passes/cmds/sort.o
OBJS += passes/cmds/icell_liberty.o
include $(YOSYS_SRC)/passes/cmds/sdc/Makefile.inc

View file

@ -0,0 +1,9 @@
yosys_pass(sdc
sdc.cc
LIBRARIES
$<${YOSYS_ENABLE_TCL}:PkgConfig::tcl>
DATA_DIR
sdc
DATA_FILES
graph-stubs.sdc
)

View file

@ -1,3 +0,0 @@
OBJS += passes/cmds/sdc/sdc.o
$(eval $(call add_share_file,share/sdc,passes/cmds/sdc/graph-stubs.sdc))

View file

@ -1,3 +1,4 @@
#include "kernel/yosys_config.h"
#ifdef YOSYS_ENABLE_TCL
#include "kernel/register.h"

View file

@ -442,7 +442,7 @@ struct ShowWorker
id2num(wire->name), shape.c_str(), is_borderless? " margin=0, width=0" : "", findLabel(wire->name.str()),
is_borderless
? "color=\"none\", fontcolor=\"black\""
: nextColor(RTLIL::SigSpec(wire), "color=\"black\", fontcolor=\"black\"").c_str(),
: nextColor(RTLIL::SigSpec(wire), "color=\"black\", fontcolor=\"black\"").c_str(),
src_href.c_str());
if (wire->port_input)
all_sources.insert(stringf("n%d", id2num(wire->name)));
@ -770,7 +770,7 @@ struct ShowPass : public Pass {
std::vector<std::pair<std::string, RTLIL::Selection>> color_selections;
std::vector<std::pair<std::string, RTLIL::Selection>> label_selections;
#if defined(_WIN32) || defined(YOSYS_DISABLE_SPAWN)
#if defined(_WIN32) || !defined(YOSYS_ENABLE_SPAWN)
std::string format = "dot";
std::string prefix = "show";
#else
@ -948,13 +948,13 @@ struct ShowPass : public Pass {
std::string cmd = stringf(DOT_CMD, format, dot_file, out_file, out_file, out_file);
#undef DOT_CMD
log("Exec: %s\n", cmd);
#if !defined(YOSYS_DISABLE_SPAWN)
#if defined(YOSYS_ENABLE_SPAWN)
if (run_command(cmd) != 0)
log_cmd_error("Shell command failed!\n");
#endif
}
#if defined(YOSYS_DISABLE_SPAWN)
#if !defined(YOSYS_ENABLE_SPAWN)
log_assert(viewer_exe.empty() && !format.empty());
#else
if (viewer_exe != "none") {

View file

@ -898,7 +898,7 @@ struct VizPass : public Pass {
log_header(design, "Generating Graphviz representation of design.\n");
log_push();
#if defined(_WIN32) || defined(YOSYS_DISABLE_SPAWN)
#if defined(_WIN32) || !defined(YOSYS_ENABLE_SPAWN)
std::string format = "dot";
std::string prefix = "show";
#else
@ -1029,13 +1029,13 @@ struct VizPass : public Pass {
std::string cmd = stringf(DOT_CMD, format, dot_file, out_file, out_file, out_file);
#undef DOT_CMD
log("Exec: %s\n", cmd);
#if !defined(YOSYS_DISABLE_SPAWN)
#if defined(YOSYS_ENABLE_SPAWN)
if (run_command(cmd) != 0)
log_cmd_error("Shell command failed!\n");
#endif
}
#if defined(YOSYS_DISABLE_SPAWN)
#if !defined(YOSYS_ENABLE_SPAWN)
log_assert(viewer_exe.empty() && !format.empty());
#else
if (!viewer_exe.empty()) {

View file

@ -0,0 +1,54 @@
yosys_pass(equiv_make
equiv_make.cc
equiv.h
)
yosys_pass(equiv_miter
equiv_miter.cc
equiv.h
)
yosys_pass(equiv_simple
equiv_simple.cc
equiv.h
)
yosys_pass(equiv_status
equiv_status.cc
equiv.h
)
yosys_pass(equiv_add
equiv_add.cc
equiv.h
)
yosys_pass(equiv_remove
equiv_remove.cc
equiv.h
)
yosys_pass(equiv_induct
equiv_induct.cc
equiv.h
)
yosys_pass(equiv_struct
equiv_struct.cc
equiv.h
)
yosys_pass(equiv_purge
equiv_purge.cc
equiv.h
)
yosys_pass(equiv_mark
equiv_mark.cc
equiv.h
)
yosys_pass(equiv_opt
equiv_opt.cc
equiv.h
REQUIRES
async2sync
check
clk2fflogic
design
equiv_induct
equiv_make
equiv_status
hierarchy
techmap
)

View file

@ -1,12 +0,0 @@
OBJS += passes/equiv/equiv_make.o
OBJS += passes/equiv/equiv_miter.o
OBJS += passes/equiv/equiv_simple.o
OBJS += passes/equiv/equiv_status.o
OBJS += passes/equiv/equiv_add.o
OBJS += passes/equiv/equiv_remove.o
OBJS += passes/equiv/equiv_induct.o
OBJS += passes/equiv/equiv_struct.o
OBJS += passes/equiv/equiv_purge.o
OBJS += passes/equiv/equiv_mark.o
OBJS += passes/equiv/equiv_opt.o

52
passes/fsm/CMakeLists.txt Normal file
View file

@ -0,0 +1,52 @@
yosys_core(fsmdata INTERFACE
fsmdata.h
DATA_DIR
include/passes/fsm
DATA_FILES
fsmdata.h
)
function(yosys_fsm_pass)
yosys_pass(${ARGV} REQUIRES fsmdata)
endfunction()
yosys_fsm_pass(fsm_detect
fsm_detect.cc
)
yosys_fsm_pass(fsm_extract
fsm_extract.cc
)
yosys_fsm_pass(fsm_opt
fsm_opt.cc
)
yosys_fsm_pass(fsm_expand
fsm_expand.cc
REQUIRES
fsm_opt
)
yosys_fsm_pass(fsm_recode
fsm_recode.cc
)
yosys_fsm_pass(fsm_info
fsm_info.cc
)
yosys_fsm_pass(fsm_export
fsm_export.cc
)
yosys_fsm_pass(fsm_map
fsm_map.cc
)
yosys_pass(fsm
fsm.cc
REQUIRES
fsm_detect
fsm_expand
fsm_export
fsm_extract
fsm_info
fsm_map
fsm_opt
fsm_recode
opt_clean
)

View file

@ -1,11 +0,0 @@
OBJS += passes/fsm/fsm.o
OBJS += passes/fsm/fsm_detect.o
OBJS += passes/fsm/fsm_extract.o
OBJS += passes/fsm/fsm_opt.o
OBJS += passes/fsm/fsm_expand.o
OBJS += passes/fsm/fsm_recode.o
OBJS += passes/fsm/fsm_info.o
OBJS += passes/fsm/fsm_export.o
OBJS += passes/fsm/fsm_map.o

View file

@ -0,0 +1,22 @@
yosys_pass(flatten
flatten.cc
)
yosys_pass(hierarchy
hierarchy.cc
LIBRARIES
verific
REQUIRES
read_rtlil
read_verilog
)
yosys_pass(keep_hierarchy
keep_hierarchy.cc
)
yosys_pass(submod
submod.cc
REQUIRES
opt_clean
)
yosys_pass(uniquify
uniquify.cc
)

View file

@ -1,7 +0,0 @@
OBJS += passes/hierarchy/flatten.o
OBJS += passes/hierarchy/hierarchy.o
OBJS += passes/hierarchy/uniquify.o
OBJS += passes/hierarchy/submod.o
OBJS += passes/hierarchy/keep_hierarchy.o

View file

@ -0,0 +1,59 @@
yosys_core(memlib
memlib.cc
memlib.h
)
function(yosys_memory_pass)
yosys_pass(${ARGV} REQUIRES memlib)
endfunction()
yosys_memory_pass(memory_dff
memory_dff.cc
)
yosys_memory_pass(memory_share
memory_share.cc
)
yosys_memory_pass(memory_collect
memory_collect.cc
)
yosys_memory_pass(memory_unpack
memory_unpack.cc
)
yosys_memory_pass(memory_bram
memory_bram.cc
)
yosys_memory_pass(memory_map
memory_map.cc
)
yosys_memory_pass(memory_memx
memory_memx.cc
)
yosys_memory_pass(memory_nordff
memory_nordff.cc
)
yosys_memory_pass(memory_narrow
memory_narrow.cc
)
yosys_memory_pass(memory_libmap
memory_libmap.cc
)
yosys_memory_pass(memory_bmux2rom
memory_bmux2rom.cc
)
yosys_pass(memory
memory.cc
REQUIRES
memory_bmux2rom
memory_bram
memory_collect
memory_dff
memory_map
memory_memx
memory_share
opt_clean
opt_mem
opt_mem_feedback
opt_mem_priority
opt_mem_widen
)

View file

@ -1,15 +0,0 @@
OBJS += passes/memory/memory.o
OBJS += passes/memory/memory_dff.o
OBJS += passes/memory/memory_share.o
OBJS += passes/memory/memory_collect.o
OBJS += passes/memory/memory_unpack.o
OBJS += passes/memory/memory_bram.o
OBJS += passes/memory/memory_map.o
OBJS += passes/memory/memory_memx.o
OBJS += passes/memory/memory_nordff.o
OBJS += passes/memory/memory_narrow.o
OBJS += passes/memory/memory_libmap.o
OBJS += passes/memory/memory_bmux2rom.o
OBJS += passes/memory/memlib.o

View file

@ -1 +0,0 @@
/peepopt*_pm.h

96
passes/opt/CMakeLists.txt Normal file
View file

@ -0,0 +1,96 @@
add_subdirectory(opt_clean)
yosys_pass(opt_merge
opt_merge.cc
)
yosys_pass(opt_mem_widen
opt_mem_widen.cc
)
yosys_pass(opt_muxtree
opt_muxtree.cc
)
yosys_pass(opt_reduce
opt_reduce.cc
)
yosys_pass(opt_dff
opt_dff.cc
REQUIRES
simplemap
)
yosys_pass(opt_share
opt_share.cc
)
yosys_pass(opt_expr
opt_expr.cc
)
yosys_pass(opt_hier
opt_hier.cc
)
yosys_pass(opt
opt.cc
REQUIRES
opt_clean
opt_dff
opt_expr
opt_hier
opt_merge
opt_muxtree
opt_reduce
opt_share
)
yosys_pass(opt_mem
opt_mem.cc
)
yosys_pass(opt_mem_feedback
opt_mem_feedback.cc
)
yosys_pass(opt_mem_priority
opt_mem_priority.cc
)
yosys_pass(share
share.cc
)
yosys_pass(wreduce
wreduce.cc
)
yosys_pass(opt_demorgan
opt_demorgan.cc
)
yosys_pass(rmports
rmports.cc
)
yosys_pass(opt_lut
opt_lut.cc
)
yosys_pass(opt_lut_ins
opt_lut_ins.cc
)
yosys_pass(opt_ffinv
opt_ffinv.cc
)
yosys_pass(pmux2shiftx
pmux2shiftx.cc
)
yosys_pass(muxpack
muxpack.cc
)
yosys_pass(opt_balance_tree
opt_balance_tree.cc
)
pmgen_command(peepopt
peepopt_shiftmul_right.pmg
peepopt_shiftmul_left.pmg
peepopt_shiftadd.pmg
peepopt_muldiv.pmg
peepopt_muldiv_c.pmg
peepopt_formal_clockgateff.pmg
PREFIX
peepopt
)
yosys_pass(peepopt
peepopt.cc
${PMGEN_peepopt_OUTPUT}
)

View file

@ -1,43 +0,0 @@
OBJS += passes/opt/opt.o
OBJS += passes/opt/opt_merge.o
OBJS += passes/opt/opt_mem.o
OBJS += passes/opt/opt_mem_feedback.o
OBJS += passes/opt/opt_mem_priority.o
OBJS += passes/opt/opt_mem_widen.o
OBJS += passes/opt/opt_muxtree.o
OBJS += passes/opt/opt_reduce.o
OBJS += passes/opt/opt_dff.o
OBJS += passes/opt/opt_share.o
OBJS += passes/opt/opt_expr.o
OBJS += passes/opt/opt_hier.o
ifneq ($(SMALL),1)
OBJS += passes/opt/share.o
OBJS += passes/opt/wreduce.o
OBJS += passes/opt/opt_demorgan.o
OBJS += passes/opt/rmports.o
OBJS += passes/opt/opt_lut.o
OBJS += passes/opt/opt_lut_ins.o
OBJS += passes/opt/opt_ffinv.o
OBJS += passes/opt/pmux2shiftx.o
OBJS += passes/opt/muxpack.o
OBJS += passes/opt/opt_balance_tree.o
OBJS += passes/opt/peepopt.o
GENFILES += passes/opt/peepopt_pm.h
passes/opt/peepopt.o: passes/opt/peepopt_pm.h
$(eval $(call add_extra_objs,passes/opt/peepopt_pm.h))
PEEPOPT_PATTERN = passes/opt/peepopt_shiftmul_right.pmg
PEEPOPT_PATTERN += passes/opt/peepopt_shiftmul_left.pmg
PEEPOPT_PATTERN += passes/opt/peepopt_shiftadd.pmg
PEEPOPT_PATTERN += passes/opt/peepopt_muldiv.pmg
PEEPOPT_PATTERN += passes/opt/peepopt_muldiv_c.pmg
PEEPOPT_PATTERN += passes/opt/peepopt_formal_clockgateff.pmg
passes/opt/peepopt_pm.h: passes/pmgen/pmgen.py $(PEEPOPT_PATTERN)
$(P) mkdir -p $(dir $@) && $(PYTHON_EXECUTABLE) $< -o $@ -p peepopt $(filter-out $<,$^)
endif
include $(YOSYS_SRC)/passes/opt/opt_clean/Makefile.inc

View file

@ -0,0 +1,11 @@
yosys_pass(opt_clean
cells_all.cc
cells_temp.cc
wires.cc
inits.cc
opt_clean.cc
opt_clean.h
keep_cache.h
PROVIDES
clean
)

View file

@ -1,10 +0,0 @@
OPT_CLEAN_OBJS =
OPT_CLEAN_OBJS += passes/opt/opt_clean/cells_all.o
OPT_CLEAN_OBJS += passes/opt/opt_clean/cells_temp.o
OPT_CLEAN_OBJS += passes/opt/opt_clean/wires.o
OPT_CLEAN_OBJS += passes/opt/opt_clean/inits.o
OPT_CLEAN_OBJS += passes/opt/opt_clean/opt_clean.o
$(OPT_CLEAN_OBJS): passes/opt/opt_clean/opt_clean.h
OBJS += $(OPT_CLEAN_OBJS)

View file

@ -1 +0,0 @@
/*_pm.h

View file

@ -0,0 +1,15 @@
pmgen_command(test_pmgen
test_pmgen.pmg
)
yosys_test_pass(pmgen
test_pmgen.cc
${PMGEN_test_pmgen_OUTPUT}
REQUIRES
synth_ice40
synth_xilinx
)
# Test implementation directly depends on generated files from these passes.
add_dependencies(yosys_test_pmgen
yosys_ice40_dsp
yosys_xilinx_srl
)

View file

@ -1,10 +0,0 @@
passes/pmgen/%_pm.h: passes/pmgen/pmgen.py passes/pmgen/%.pmg
$(P) mkdir -p $(dir $@) && $(PYTHON_EXECUTABLE) $< -o $@ -p $(notdir $*) $(filter-out $<,$^)
# --------------------------------------
OBJS += passes/pmgen/test_pmgen.o
GENFILES += passes/pmgen/test_pmgen_pm.h
passes/pmgen/test_pmgen.o: passes/pmgen/test_pmgen_pm.h techlibs/ice40/ice40_dsp_pm.h techlibs/xilinx/xilinx_srl_pm.h
$(eval $(call add_extra_objs,passes/pmgen/test_pmgen_pm.h))

View file

@ -0,0 +1,47 @@
yosys_pass(proc_prune
proc_prune.cc
)
yosys_pass(proc_clean
proc_clean.cc
)
yosys_pass(proc_rmdead
proc_rmdead.cc
)
yosys_pass(proc_init
proc_init.cc
)
yosys_pass(proc_arst
proc_arst.cc
REQUIRES
proc_clean
)
yosys_pass(proc_rom
proc_rom.cc
)
yosys_pass(proc_mux
proc_mux.cc
)
yosys_pass(proc_dlatch
proc_dlatch.cc
)
yosys_pass(proc_dff
proc_dff.cc
)
yosys_pass(proc_memwr
proc_memwr.cc
)
yosys_pass(proc
proc.cc
REQUIRES
proc_prune
proc_clean
proc_rmdead
proc_init
proc_arst
proc_rom
proc_mux
proc_dlatch
proc_dff
proc_memwr
opt_expr
)

View file

@ -1,12 +0,0 @@
OBJS += passes/proc/proc.o
OBJS += passes/proc/proc_prune.o
OBJS += passes/proc/proc_clean.o
OBJS += passes/proc/proc_rmdead.o
OBJS += passes/proc/proc_init.o
OBJS += passes/proc/proc_arst.o
OBJS += passes/proc/proc_rom.o
OBJS += passes/proc/proc_mux.o
OBJS += passes/proc/proc_dlatch.o
OBJS += passes/proc/proc_dff.o
OBJS += passes/proc/proc_memwr.o

74
passes/sat/CMakeLists.txt Normal file
View file

@ -0,0 +1,74 @@
yosys_pass(sat
sat.cc
)
yosys_pass(freduce
freduce.cc
)
yosys_pass(eval
eval.cc
)
yosys_pass(sim
sim.cc
REQUIRES
fstdata
PROVIDES
fst2tb
)
yosys_pass(miter
miter.cc
REQUIRES
flatten
opt_expr
)
yosys_pass(expose
expose.cc
)
yosys_pass(assertpmux
assertpmux.cc
)
yosys_pass(clk2fflogic
clk2fflogic.cc
REQUIRES
chformal
peepopt
)
yosys_pass(async2sync
async2sync.cc
REQUIRES
chformal
)
yosys_pass(formalff
formalff.cc
)
yosys_pass(supercover
supercover.cc
)
yosys_pass(fmcombine
fmcombine.cc
)
yosys_pass(mutate
mutate.cc
)
yosys_pass(cutpoint
cutpoint.cc
)
yosys_pass(fminit
fminit.cc
)
yosys_pass(recover_names
recover_names.cc
REQUIRES
flatten
)
yosys_pass(qbfsat
qbfsat.cc
REQUIRES
abc
opt
techmap
ENABLE_IF
YOSYS_ENABLE_SPAWN
)
yosys_pass(synthprop
synthprop.cc
)

View file

@ -1,23 +0,0 @@
OBJS += passes/sat/sat.o
OBJS += passes/sat/freduce.o
OBJS += passes/sat/eval.o
ifeq ($(ENABLE_ZLIB),1)
OBJS += passes/sat/sim.o
endif
OBJS += passes/sat/miter.o
OBJS += passes/sat/expose.o
OBJS += passes/sat/assertpmux.o
OBJS += passes/sat/clk2fflogic.o
OBJS += passes/sat/async2sync.o
OBJS += passes/sat/formalff.o
OBJS += passes/sat/supercover.o
OBJS += passes/sat/fmcombine.o
OBJS += passes/sat/mutate.o
OBJS += passes/sat/cutpoint.o
OBJS += passes/sat/fminit.o
OBJS += passes/sat/recover_names.o
ifeq ($(DISABLE_SPAWN),0)
OBJS += passes/sat/qbfsat.o
endif
OBJS += passes/sat/synthprop.o

View file

@ -0,0 +1,225 @@
yosys_core(libparse
libparse.cc
libparse.h
DATA_DIR
include/passes/techmap
DATA_FILES
libparse.h
)
yosys_pass(techmap
techmap.cc
REQUIRES
maccmap
proc
read_rtlil
read_verilog
sha1
simplemap
)
yosys_pass(simplemap
simplemap.cc
)
yosys_pass(dfflibmap
dfflibmap.cc
REQUIRES
dfflegalize
libparse
)
yosys_pass(maccmap
maccmap.cc
)
yosys_pass(booth
booth.cc
)
yosys_pass(libcache
libcache.cc
REQUIRES
libparse
)
set(abc_definitions
"$<$<BOOL:${YOSYS_ABC_EXECUTABLE}>:ABCEXTERNAL=\"${YOSYS_ABC_EXECUTABLE}\">"
$<${YOSYS_LINK_ABC}:YOSYS_LINK_ABC>
)
yosys_pass(abc
abc.cc
DEFINITIONS
${abc_definitions}
LIBRARIES
$<${YOSYS_LINK_ABC}:libyosys-abc>
REQUIRES
read_blif
ENABLE_IF
YOSYS_ENABLE_ABC
)
yosys_pass(abc9_exe
abc9_exe.cc
DEFINITIONS
${abc_definitions}
LIBRARIES
$<${YOSYS_LINK_ABC}:libyosys-abc>
ENABLE_IF
YOSYS_ENABLE_ABC
)
yosys_pass(abc9_ops
abc9_ops.cc
REQUIRES
proc
)
yosys_pass(abc9
abc9.cc
DEFINITIONS
${abc_definitions}
REQUIRES
abc9_exe
abc9_ops
aigmap
delete
design
opt
portarcs
read_verilog
scc
select
setattr
submod
techmap
wbflip
)
yosys_pass(abc_new
abc_new.cc
REQUIRES
abc9_exe
abc9_ops
box_derive
read_xaiger2
write_xaiger2
)
yosys_pass(iopadmap
iopadmap.cc
)
yosys_pass(clkbufmap
clkbufmap.cc
)
yosys_pass(hilomap
hilomap.cc
)
yosys_pass(extract
extract.cc
REQUIRES
opt_clean
proc
read_rtlil
read_verilog
subcircuit
write_rtlil
)
yosys_pass(extract_fa
extract_fa.cc
)
yosys_pass(extract_counter
extract_counter.cc
)
yosys_pass(extract_reduce
extract_reduce.cc
)
yosys_pass(alumacc
alumacc.cc
)
yosys_pass(dffinit
dffinit.cc
)
yosys_pass(pmuxtree
pmuxtree.cc
)
yosys_pass(bmuxmap
bmuxmap.cc
)
yosys_pass(demuxmap
demuxmap.cc
)
yosys_pass(bwmuxmap
bwmuxmap.cc
)
yosys_pass(muxcover
muxcover.cc
)
yosys_pass(aigmap
aigmap.cc
)
yosys_pass(tribuf
tribuf.cc
)
yosys_pass(lut2mux
lut2mux.cc
)
yosys_pass(lut2bmux
lut2bmux.cc
)
yosys_pass(nlutmap
nlutmap.cc
REQUIRES
abc
lut2mux
opt_clean
)
yosys_pass(shregmap
shregmap.cc
)
yosys_pass(deminout
deminout.cc
)
yosys_pass(insbuf
insbuf.cc
)
yosys_pass(bufnorm
bufnorm.cc
)
yosys_pass(attrmvcp
attrmvcp.cc
)
yosys_pass(attrmap
attrmap.cc
PROVIDES
paramap
)
yosys_pass(zinit
zinit.cc
)
yosys_pass(dfflegalize
dfflegalize.cc
)
yosys_pass(dffunmap
dffunmap.cc
)
yosys_pass(flowmap
flowmap.cc
)
yosys_pass(extractinv
extractinv.cc
)
yosys_pass(cellmatch
cellmatch.cc
)
yosys_pass(clockgate
clockgate.cc
REQUIRES
libparse
)
yosys_pass(constmap
constmap.cc
)
yosys_pass(arith_tree
arith_tree.cc
)
if (YOSYS_ENABLE_SPAWN)
yosys_cxx_executable(yosys-filterlib
OUTPUT_NAME yosys-filterlib
INCLUDE_IN_ALL
)
target_sources(yosys-filterlib PRIVATE filterlib.cc)
target_link_libraries(yosys-filterlib PRIVATE yosys_common)
endif()

View file

@ -1,68 +0,0 @@
OBJS += passes/techmap/techmap.o
OBJS += passes/techmap/simplemap.o
OBJS += passes/techmap/dfflibmap.o
OBJS += passes/techmap/maccmap.o
OBJS += passes/techmap/booth.o
OBJS += passes/techmap/libparse.o
OBJS += passes/techmap/libcache.o
ifeq ($(ENABLE_ABC),1)
OBJS += passes/techmap/abc.o
OBJS += passes/techmap/abc9.o
OBJS += passes/techmap/abc9_exe.o
OBJS += passes/techmap/abc9_ops.o
OBJS += passes/techmap/abc_new.o
ifneq ($(ABCEXTERNAL),)
passes/techmap/abc.o: CXXFLAGS += -DABCEXTERNAL='"$(ABCEXTERNAL)"'
passes/techmap/abc9.o: CXXFLAGS += -DABCEXTERNAL='"$(ABCEXTERNAL)"'
passes/techmap/abc9_exe.o: CXXFLAGS += -DABCEXTERNAL='"$(ABCEXTERNAL)"'
passes/techmap/abc_new.o: CXXFLAGS += -DABCEXTERNAL='"$(ABCEXTERNAL)"'
endif
endif
ifneq ($(SMALL),1)
OBJS += passes/techmap/iopadmap.o
OBJS += passes/techmap/clkbufmap.o
OBJS += passes/techmap/hilomap.o
OBJS += passes/techmap/extract.o
OBJS += passes/techmap/extract_fa.o
OBJS += passes/techmap/extract_counter.o
OBJS += passes/techmap/extract_reduce.o
OBJS += passes/techmap/alumacc.o
OBJS += passes/techmap/dffinit.o
OBJS += passes/techmap/pmuxtree.o
OBJS += passes/techmap/bmuxmap.o
OBJS += passes/techmap/demuxmap.o
OBJS += passes/techmap/bwmuxmap.o
OBJS += passes/techmap/muxcover.o
OBJS += passes/techmap/aigmap.o
OBJS += passes/techmap/tribuf.o
OBJS += passes/techmap/lut2mux.o
OBJS += passes/techmap/lut2bmux.o
OBJS += passes/techmap/nlutmap.o
OBJS += passes/techmap/shregmap.o
OBJS += passes/techmap/deminout.o
OBJS += passes/techmap/insbuf.o
OBJS += passes/techmap/bufnorm.o
OBJS += passes/techmap/attrmvcp.o
OBJS += passes/techmap/attrmap.o
OBJS += passes/techmap/zinit.o
OBJS += passes/techmap/dfflegalize.o
OBJS += passes/techmap/dffunmap.o
OBJS += passes/techmap/flowmap.o
OBJS += passes/techmap/extractinv.o
OBJS += passes/techmap/cellmatch.o
OBJS += passes/techmap/clockgate.o
OBJS += passes/techmap/constmap.o
OBJS += passes/techmap/arith_tree.o
endif
ifeq ($(DISABLE_SPAWN),0)
TARGETS += $(PROGRAM_PREFIX)yosys-filterlib$(EXE)
EXTRA_OBJS += passes/techmap/filterlib.o
$(PROGRAM_PREFIX)yosys-filterlib$(EXE): passes/techmap/filterlib.o
$(Q) mkdir -p $(dir $@)
$(P) $(CXX) -o $(PROGRAM_PREFIX)yosys-filterlib$(EXE) $(LINKFLAGS) $^ $(EXE_LIBS) $(LIBS)
endif

View file

@ -170,7 +170,7 @@ struct AbcSigVal {
};
// REUSE_YOSYS_ABC_PROCESSES only works when ABC is built with ENABLE_READLINE.
#if defined(__linux__) && !defined(YOSYS_DISABLE_SPAWN) && defined(YOSYS_ENABLE_READLINE)
#if defined(__linux__) && defined(YOSYS_ENABLE_SPAWN) && defined(YOSYS_ENABLE_READLINE)
#define REUSE_YOSYS_ABC_PROCESSES
#endif

View file

@ -0,0 +1,13 @@
yosys_test_pass(autotb
test_autotb.cc
)
yosys_test_pass(cell
test_cell.cc
)
yosys_test_pass(abcloop
test_abcloop.cc
)
yosys_pass(raise_error
raise_error.cc
)

View file

@ -1,6 +0,0 @@
OBJS += passes/tests/test_autotb.o
OBJS += passes/tests/test_cell.o
OBJS += passes/tests/test_abcloop.o
OBJS += passes/tests/raise_error.o