@@ -212,6 +212,11 @@ export OBJECTS_DIR = $(WORK_HOME)/objects/$(PLATFORM)/$(DESIGN_NICKNAME)/$(FLOW_
212212export REPORTS_DIR = $(WORK_HOME ) /reports/$(PLATFORM ) /$(DESIGN_NICKNAME ) /$(FLOW_VARIANT )
213213export RESULTS_DIR = $(WORK_HOME ) /results/$(PLATFORM ) /$(DESIGN_NICKNAME ) /$(FLOW_VARIANT )
214214
215+ # BLOCKS is ORFS specific and is used to trigger hierarchical flow,
216+ # MACROS is a space separated list of macros used in the design,
217+ # but not necessarily built by ORFS using the BLOCKS mechanism.
218+ export MACROS ?= $(BLOCKS )
219+
215220ifdef BLOCKS
216221ifeq ($(MAKELEVEL ) ,0)
217222 $(info [INFO][FLOW] Invoked hierarchical flow.)
@@ -442,8 +447,7 @@ $(WRAPPED_LIBS):
442447# |____/ |_| |_| \_| |_| |_| |_|_____|____/___|____/
443448#
444449.PHONY : synth
445- synth : versions.txt \
446- $(RESULTS_DIR)/1_synth.v \
450+ synth : $(RESULTS_DIR ) /1_synth.v \
447451 $(RESULTS_DIR)/1_synth.sdc
448452
449453.PHONY : synth-report
@@ -466,24 +470,45 @@ $(SYNTH_STOP_MODULE_SCRIPT):
466470 ($( TIME_CMD) $( YOSYS_CMD) $( YOSYS_FLAGS) -c $( HIER_REPORT_SCRIPT) ) 2>&1 | tee $(LOG_DIR ) /1_1_yosys_hier_report.log
467471
468472ifeq ($(SYNTH_HIERARCHICAL ) , 1)
469- $( RESULTS_DIR ) /1_1_yosys.v : $(SYNTH_STOP_MODULE_SCRIPT )
473+ do-yosys : $(SYNTH_STOP_MODULE_SCRIPT )
470474endif
471475
472- $(RESULTS_DIR ) /1_1_yosys.v $(RESULTS_DIR ) /1_synth.sdc & : $(DONT_USE_LIBS ) $(WRAPPED_LIBS ) $(DONT_USE_SC_LIB ) $(DFF_LIB_FILE ) $(VERILOG_FILES ) $(CACHED_NETLIST ) $(LATCH_MAP_FILE ) $(ADDER_MAP_FILE ) $(SDC_FILE )
476+ export SDC_FILE_CLOCK_PERIOD = $(RESULTS_DIR ) /clock_period.txt
477+
478+ $(SDC_FILE_CLOCK_PERIOD ) : $(SDC_FILE )
479+ mkdir -p $(dir $@ )
480+ echo $(ABC_CLOCK_PERIOD_IN_PS ) > $@
481+
482+ .PHONY : yosys-dependencies
483+ yosys-dependencies : $(DONT_USE_LIBS ) $(WRAPPED_LIBS ) $(DONT_USE_SC_LIB ) $(DFF_LIB_FILE ) $(VERILOG_FILES ) $(CACHED_NETLIST ) $(LATCH_MAP_FILE ) $(ADDER_MAP_FILE )
484+
485+ .PHONY : do-yosys
486+ do-yosys : yosys-dependencies
473487 mkdir -p $(RESULTS_DIR ) $(LOG_DIR ) $(REPORTS_DIR )
474488 ($( TIME_CMD) $( YOSYS_CMD) $( YOSYS_FLAGS) -c $( SYNTH_SCRIPT) ) 2>&1 | tee $(LOG_DIR ) /1_1_yosys.log
489+
490+ $(RESULTS_DIR ) /1_1_yosys.v : $(SDC_FILE_CLOCK_PERIOD )
491+ $(UNSET_AND_MAKE ) do-yosys
492+
493+ $(RESULTS_DIR ) /1_synth.sdc : $(SDC_FILE )
494+ mkdir -p $(REPORTS_DIR )
475495 cp $(SDC_FILE ) $(RESULTS_DIR ) /1_synth.sdc
476496
477- $(RESULTS_DIR ) /1_synth.v : $(RESULTS_DIR ) /1_1_yosys.v
497+ .PHONY : do-synth
498+ do-synth :
478499 mkdir -p $(RESULTS_DIR ) $(LOG_DIR ) $(REPORTS_DIR )
479- cp $< $@
500+ cp $(RESULTS_DIR ) /1_1_yosys.v $(RESULTS_DIR ) /1_synth.v
501+
502+ $(RESULTS_DIR ) /1_synth.v : $(RESULTS_DIR ) /1_1_yosys.v
503+ $(UNSET_AND_MAKE ) do-synth
480504
481505.PHONY : clean_synth
482506clean_synth :
483- rm -f $(RESULTS_DIR ) /1_* .v $(RESULTS_DIR ) /1_synth.sdc
484- rm -f $(REPORTS_DIR ) /synth_*
485- rm -f $(LOG_DIR ) /1_*
486- rm -f $(SYNTH_STOP_MODULE_SCRIPT )
507+ rm -f $(RESULTS_DIR ) /1_* .v $(RESULTS_DIR ) /1_synth.sdc
508+ rm -f $(REPORTS_DIR ) /synth_*
509+ rm -f $(LOG_DIR ) /1_*
510+ rm -f $(SYNTH_STOP_MODULE_SCRIPT )
511+ rm -f $(SDC_FILE_CLOCK_PERIOD )
487512 rm -rf _tmp_yosys-abc-*
488513
489514
@@ -1064,7 +1089,7 @@ yosys:
10641089# Drop into a bash shell with all environment variables, useful for debugging
10651090.PHONY : bash
10661091bash :
1067- bash
1092+ bash --init-file <( echo " PS1='\[\e[32m\]Makefile Environment \[\e[0m\] \w $ ' " )
10681093
10691094.PHONY : all_defs
10701095all_defs : $(foreach file,$(RESULTS_ODB ) ,$(file ) .def)
0 commit comments