Skip to content

Commit a4c0637

Browse files
committed
Merge branch 'master' into secure-yosys0.45_new
2 parents 06daf1d + 999352c commit a4c0637

File tree

5 files changed

+42
-43
lines changed

5 files changed

+42
-43
lines changed

flow/Makefile

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,8 @@ do-yosys:
540540
.PHONY: do-yosys-canonicalize
541541
do-yosys-canonicalize: yosys-dependencies
542542
mkdir -p $(RESULTS_DIR) $(LOG_DIR) $(REPORTS_DIR) $(OBJECTS_DIR)
543-
($(TIME_CMD) $(YOSYS_EXE) $(YOSYS_FLAGS) -c $(SCRIPTS_DIR)/synth_canonicalize.tcl) 2>&1 | tee $(abspath $(LOG_DIR)/1_1_yosys_canonicalize.log)
543+
# NOTE! YOSYS_FLAGS is omitted here because "-v 3" silences helpful error messages
544+
($(TIME_CMD) $(YOSYS_EXE) -c $(SCRIPTS_DIR)/synth_canonicalize.tcl) 2>&1 | tee $(abspath $(LOG_DIR)/1_1_yosys_canonicalize.log)
544545

545546
$(RESULTS_DIR)/1_synth.rtlil: $(YOSYS_DEPENDENCIES)
546547
$(UNSET_AND_MAKE) do-yosys-canonicalize
@@ -697,17 +698,7 @@ endif
697698

698699
# STEP 3: Timing Driven Mixed Sized Placement
699700
#-------------------------------------------------------------------------------
700-
ifneq ($(MACRO_PLACEMENT)$(MACRO_PLACEMENT_TCL),)
701-
SKIP_TDMS:=1
702-
endif
703-
ifeq ($(RTLMP_FLOW), 1)
704-
SKIP_TDMS:=1
705-
endif
706-
ifneq ($(SKIP_TDMS), 1)
707701
$(eval $(call do-step,2_3_floorplan_tdms,$(RESULTS_DIR)/2_2_floorplan_io.odb $(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(LIB_FILES),tdms_place))
708-
else
709-
$(eval $(call do-copy,2_3_floorplan_tdms,2_2_floorplan_io.odb,$(RESULTS_DIR)/1_synth.v $(RESULTS_DIR)/1_synth.sdc $(LIB_FILES)))
710-
endif
711702

712703
# STEP 4: Macro Placement
713704
#-------------------------------------------------------------------------------

flow/scripts/floorplan.tcl

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,7 @@ set num_instances [llength [get_cells -hier *]]
4040
puts "number instances in verilog is $num_instances"
4141

4242
set additional_args ""
43-
if { [info exists ::env(ADDITIONAL_SITES)]} {
44-
append additional_args " -additional_sites $::env(ADDITIONAL_SITES)"
45-
}
46-
47-
proc env_var_exists_and_non_empty {env_var} {
48-
return [expr {[info exists ::env($env_var)] && ![string equal $::env($env_var) ""]}]
49-
}
43+
append_env_var additional_args ADDITIONAL_SITES -additional_sites 1
5044

5145
set use_floorplan_def [env_var_exists_and_non_empty FLOORPLAN_DEF]
5246
set use_footprint [env_var_exists_and_non_empty FOOTPRINT]
@@ -97,27 +91,27 @@ if {$use_floorplan_def} {
9791
exit 1
9892
}
9993

100-
if { [info exists ::env(MAKE_TRACKS)] } {
94+
if { [env_var_exists_and_non_empty MAKE_TRACKS] } {
10195
source $::env(MAKE_TRACKS)
10296
} elseif {[file exists $::env(PLATFORM_DIR)/make_tracks.tcl]} {
10397
source $::env(PLATFORM_DIR)/make_tracks.tcl
10498
} else {
10599
make_tracks
106100
}
107101

108-
if {[info exists ::env(FOOTPRINT_TCL)]} {
102+
if {[env_var_exists_and_non_empty FOOTPRINT_TCL]} {
109103
source $::env(FOOTPRINT_TCL)
110104
}
111105

112-
if { [info exists ::env(REMOVE_ABC_BUFFERS)] && $::env(REMOVE_ABC_BUFFERS) == 1 } {
106+
if { [env_var_equals REMOVE_ABC_BUFFERS 1] } {
113107
# remove buffers inserted by yosys/abc
114108
remove_buffers
115109
} else {
116110
repair_timing_helper 0
117111
}
118112

119113
##### Restructure for timing #########
120-
if { [info exist ::env(RESYNTH_TIMING_RECOVER)] && $::env(RESYNTH_TIMING_RECOVER) == 1 } {
114+
if { [env_var_equals RESYNTH_TIMING_RECOVER 1] } {
121115
repair_design
122116
repair_timing
123117
# pre restructure area/timing report (ideal clocks)
@@ -156,7 +150,7 @@ report_units
156150
report_units_metric
157151
report_metrics 2 "floorplan final" false false
158152

159-
if { [info exist ::env(RESYNTH_AREA_RECOVER)] && $::env(RESYNTH_AREA_RECOVER) == 1 } {
153+
if { [env_var_equals RESYNTH_AREA_RECOVER 1] } {
160154

161155
utl::push_metrics_stage "floorplan__{}__pre_restruct"
162156
set num_instances [llength [get_cells -hier *]]
@@ -194,7 +188,7 @@ if { [info exist ::env(RESYNTH_AREA_RECOVER)] && $::env(RESYNTH_AREA_RECOVER) ==
194188
utl::pop_metrics_stage
195189
}
196190

197-
if { [info exists ::env(POST_FLOORPLAN_TCL)] } {
191+
if { [env_var_exists_and_non_empty POST_FLOORPLAN_TCL] } {
198192
source $::env(POST_FLOORPLAN_TCL)
199193
}
200194

flow/scripts/load.tcl

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,3 @@ proc run_equivalence_test {} {
126126
puts "Repair timing output passed equivalence test"
127127
}
128128
}
129-
130-
proc append_env_var {list_name var_name prefix has_arg} {
131-
upvar $list_name list
132-
if {[info exist ::env($var_name)]} {
133-
lappend list $prefix
134-
if {$has_arg} {
135-
lappend list $::env($var_name)
136-
}
137-
}
138-
}

flow/scripts/tdms_place.tcl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
source $::env(SCRIPTS_DIR)/load.tcl
2-
load_design 2_2_floorplan_io.odb 1_synth.sdc
32

43
proc find_macros {} {
54
set macros ""
@@ -17,14 +16,21 @@ proc find_macros {} {
1716
return $macros
1817
}
1918

20-
set_dont_use $::env(DONT_USE_CELLS)
19+
if {!([env_var_exists_and_non_empty MACRO_PLACEMENT] ||
20+
[env_var_exists_and_non_empty MACRO_PLACEMENT_TCL]) &&
21+
![env_var_equals RTLMP_FLOW 1]} {
22+
load_design 2_2_floorplan_io.odb 1_synth.sdc
2123

22-
if {[find_macros] != ""} {
23-
global_placement -density $::env(PLACE_DENSITY) \
24-
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
25-
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
24+
set_dont_use $::env(DONT_USE_CELLS)
25+
26+
if {[find_macros] != ""} {
27+
log_cmd global_placement -density $::env(PLACE_DENSITY) \
28+
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
29+
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
30+
} else {
31+
puts "No macros found: Skipping global_placement"
32+
}
33+
write_db $::env(RESULTS_DIR)/2_3_floorplan_tdms.odb
2634
} else {
27-
puts "No macros found: Skipping global_placement"
35+
log_cmd exec cp $::env(RESULTS_DIR)/2_2_floorplan_io.odb $::env(RESULTS_DIR)/2_3_floorplan_tdms.odb
2836
}
29-
30-
write_db $::env(RESULTS_DIR)/2_3_floorplan_tdms.odb

flow/scripts/util.tcl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,21 @@ proc find_sdc_file {input_file} {
6464
}
6565
return [list $design_stage $sdc_file]
6666
}
67+
68+
proc env_var_equals {env_var value} {
69+
return [expr {[info exists ::env($env_var)] && $::env($env_var) == $value}]
70+
}
71+
72+
proc env_var_exists_and_non_empty {env_var} {
73+
return [expr {[info exists ::env($env_var)] && ![string equal $::env($env_var) ""]}]
74+
}
75+
76+
proc append_env_var {list_name var_name prefix has_arg} {
77+
upvar $list_name list
78+
if {[info exist ::env($var_name)]} {
79+
lappend list $prefix
80+
if {$has_arg} {
81+
lappend list $::env($var_name)
82+
}
83+
}
84+
}

0 commit comments

Comments
 (0)