From: Luke Kenneth Casson Leighton Date: Fri, 14 Feb 2020 21:02:00 +0000 (+0000) Subject: add synthesis-yosys.mk with ilang substituted X-Git-Tag: partial-core-ls180-gdsii~248 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0c39f85bc45718f34c015707e3c76ad78ee19ca5;p=soclayout.git add synthesis-yosys.mk with ilang substituted --- diff --git a/mk/synthesis-yosys.mk b/mk/synthesis-yosys.mk new file mode 100644 index 0000000..dffe7ed --- /dev/null +++ b/mk/synthesis-yosys.mk @@ -0,0 +1,53 @@ + + $(info Logical synthesis is using Yosys.) + + ifeq ($(YOSYS_TOP),) + $(error YOSYS_TOP 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::')) + VLOG_MODULE = $(firstword $(NETLISTS_NOMODELS)) + NETLISTS_VST = $(shell echo $(VLOG_MODULE) | tr '[:upper:]' '[:lower:]').vst + NETLISTS_SYNTH = $(foreach netlist,$(NETLISTS_NOMODELS), $(shell echo $(netlist) | tr '[:upper:]' '[:lower:]')) + CLEAN_SYNTHESIS = $(addsuffix .vst,$(NETLISTS_SYNTH)) $(VLOG_MODULE).blif $(VLOG_MODULE).tcl + + $(info | Verilog file & top model: "$(VLOG_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: %.v + rm -f $*.tcl; \ + echo "set ilang_file $*.v" >> $*.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)): $(VLOG_MODULE).blif + -@$(call run_if_older,$@,$(VLOG_MODULE).blif,$(call scl_cols,eval `$(CORIOLIS_TOP)/etc/coriolis2/coriolisEnv.py $(DEBUG_OPTION)`; $(BLIF2VST) $(VST_FLAGS) --cell=$(VLOG_MODULE)) )