$(info Logical synthesis is using Yosys.) ifeq ($(YOSYS_TOP),) $(error YOSYS_TOP has not been set) endif ifeq ($(LIBERTY_FILE),) $(error LIBERTY_FILE has not been set) endif ifeq ($(YOSYS_FLATTEN),) YOSYS_FLATTEN = No endif # ------------------------------------------------------------------- # Yosys Rules (pattern matching). NETLISTS_NOCORONA = $(foreach netlist,$(NETLISTS) ,$(shell echo $(netlist) | sed 's:.*_model::')) NETLISTS_NOMODELS = $(foreach netlist,$(NETLISTS_NOCORONA),$(shell echo $(netlist) | sed 's:.*corona::')) ILANG_MODULE = $(firstword $(NETLISTS_NOMODELS)) NETLISTS_VST = $(shell echo $(ILANG_MODULE) | tr '[:upper:]' '[:lower:]').vst NETLISTS_SYNTH = $(foreach netlist,$(NETLISTS_NOMODELS), $(shell echo $(netlist) | tr '[:upper:]' '[:lower:]')) CLEAN_SYNTHESIS = $(addsuffix .vst,$(NETLISTS_SYNTH)) $(ILANG_MODULE).blif $(ILANG_MODULE).tcl $(info | ILANG file & top model: "$(ILANG_MODULE)") $(info | Generated secondary VHDL structural files (vst):) $(foreach netlist,$(NETLISTS_SYNTH),$(info | - "$(netlist)")) # Any file put in "./non_generated/" will take precedence over the # generation. %.blif: ./non_generated/%.blif ; cp $< . %.blif: %.il rm -f $*.tcl; \ echo "set ilang_file $*.il" >> $*.tcl; \ echo "set ilang_top $*" >> $*.tcl; \ echo "set liberty_file $(LIBERTY_FILE)" >> $*.tcl; \ echo "yosys read_ilang \$$ilang_file" >> $*.tcl; \ echo "yosys hierarchy -check -top \$$ilang_top" >> $*.tcl; \ echo "yosys synth -top \$$ilang_top" >> $*.tcl; \ if [ "$(YOSYS_FLATTEN)" = "Yes" ]; then \ echo "yosys flatten \$$ilang_top" >> $*.tcl; \ echo "yosys hierarchy -top \$$ilang_top" >> $*.tcl; \ fi; \ echo "yosys dfflibmap -liberty \$$liberty_file" >> $*.tcl; \ echo "yosys abc -liberty \$$liberty_file" >> $*.tcl; \ echo "yosys clean" >> $*.tcl; \ echo "yosys write_blif $*.blif" >> $*.tcl; yosys -c $*.tcl $(addsuffix .vst,$(NETLISTS_SYNTH)): $(ILANG_MODULE).blif -@$(call run_if_older,$@,$(ILANG_MODULE).blif,$(call scl_cols,eval `$(CORIOLIS_TOP)/etc/coriolis2/coriolisEnv.py $(DEBUG_OPTION)`; $(BLIF2VST) $(VST_FLAGS) --cell=$(ILANG_MODULE)) )