Skip to content

Commit 2e73b59

Browse files
committed
Merge branch 'master' into ihpsg13g2_at
2 parents a2317fe + a008f1c commit 2e73b59

File tree

9 files changed

+65
-49
lines changed

9 files changed

+65
-49
lines changed

env.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
2121
export PATH="$(brew --prefix bison)/bin:$(brew --prefix flex)/bin:$(brew --prefix tcl-tk)/bin:$PATH"
2222
export CMAKE_PREFIX_PATH="$(brew --prefix or-tools)"
2323
fi
24+
25+
export FLOW_HOME=$DIR/flow

flow/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@ settings.mk
22
vars.sh
33
vars.gdb
44
vars.tcl
5-
copyright.txt

flow/Makefile

Lines changed: 7 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,10 @@ UNSET_VARS = for var in $(UNSET_VARIABLES_NAMES); do unset $$var; done
536536
SUB_MAKE = $(MAKE) $(foreach V,$(COMMAND_LINE_ARGS), $(if $($V),$V=$(shell echo "$($V)" | $(FLOW_HOME)/scripts/escape.sh),$V='')) --no-print-directory DESIGN_CONFIG=$(DESIGN_CONFIG)
537537
UNSET_AND_MAKE = @bash -c '$(UNSET_VARS); $(SUB_MAKE) $$@' --
538538

539-
copyright.txt:
539+
$(OBJECTS_DIR)/copyright.txt:
540540
@$(OPENROAD_CMD) $(SCRIPTS_DIR)/noop.tcl
541-
@touch copyright.txt
541+
mkdir -p $(OBJECTS_DIR)
542+
@touch $(OBJECTS_DIR)/copyright.txt
542543

543544
# Separate dependency checking and doing a step. This can
544545
# be useful to retest a stage without having to delete the
@@ -570,8 +571,8 @@ $(if $(5),$(5),$(RESULTS_DIR))/$(1)$(if $(4),$(4),.odb): $(2)
570571
$$(UNSET_AND_MAKE) do-$(1)
571572

572573
.PHONY: do-$(1)
573-
do-$(1): copyright.txt
574-
@echo Running $(3).tcl
574+
do-$(1): $(OBJECTS_DIR)/copyright.txt
575+
@echo Running $(3).tcl, stage $(1)
575576
@(trap 'mv $(LOG_DIR)/$(1).tmp.log $(LOG_DIR)/$(1).log' EXIT; \
576577
$(OPENROAD_CMD) $(SCRIPTS_DIR)/noop.tcl 2>&1 >$(LOG_DIR)/$(1).tmp.log; \
577578
$(TIME_CMD) $(OPENROAD_CMD) -no_splash $(SCRIPTS_DIR)/$(3).tcl -metrics $(LOG_DIR)/$(1).json 2>&1 | \
@@ -858,49 +859,11 @@ do-finish:
858859
mkdir -p $(LOG_DIR) $(REPORTS_DIR)
859860
$(UNSET_AND_MAKE) do-6_1_fill do-6_1_fill.sdc do-6_final.sdc do-6_report do-gds elapsed
860861

861-
.PHONY: skip_place
862-
skip_place: $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/2_floorplan.sdc
863-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_1_place_gp_skip_io.odb
864-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_2_place_iop.odb
865-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_3_place_gp.odb
866-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_4_place_resized.odb
867-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_5_place_dp.odb
868-
cp $(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/3_place.odb
869-
cp $(RESULTS_DIR)/2_floorplan.sdc $(RESULTS_DIR)/3_place.sdc
870-
871-
.PHONY: skip_resize
872-
skip_resize: $(RESULTS_DIR)/3_3_place_gp.odb
873-
cp $(RESULTS_DIR)/3_3_place_gp.odb $(RESULTS_DIR)/3_4_place_resized.odb
874-
875-
.PHONY: skip_cts
876-
skip_cts: $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/3_place.sdc
877-
# mock all intermediate results
878-
cp $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/4_1_cts.odb
879-
cp $(RESULTS_DIR)/3_place.sdc $(RESULTS_DIR)/4_cts.sdc
880-
cp $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/4_cts.odb
881-
882-
.PHONY: skip_route
883-
skip_route: $(RESULTS_DIR)/4_cts.odb $(RESULTS_DIR)/4_cts.sdc
884-
cp $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/5_1_grt.odb
885-
cp $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/5_2_route.odb
886-
cp $(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/6_1_fill.odb
887-
touch $(RESULTS_DIR)/6_final.spef
888-
889-
# A mock abstract is a fully or partially eviscerated macro. A mock
890-
# abstract can be useful when creating bug reports, previewing
891-
# macro placement, testing detailed routing, or other quick smoke-tests
892-
# at the top level.
893-
#
894-
# When creating a mock abstract, depending on what needs to be tested,
895-
# stages can be skipped.
896-
#
897-
# Leave out "skip_" targes as approperiate:
898-
#
899-
# make skip_place skip_cts skip_route generate_abstract
900862
.PHONY: generate_abstract
901863
generate_abstract: $(RESULTS_DIR)/6_final.gds $(RESULTS_DIR)/6_final.def $(RESULTS_DIR)/6_final.v $(RESULTS_DIR)/6_final.sdc
902864
$(UNSET_AND_MAKE) do-generate_abstract
903865

866+
# Set ABSTRACT_SOURCE if you want to create an abstract from another stage than 6_final.
904867
.PHONY: do-generate_abstract
905868
do-generate_abstract:
906869
mkdir -p $(LOG_DIR) $(REPORTS_DIR)
@@ -1023,7 +986,7 @@ nuke: clean_test clean_issues
1023986
rm -rf ./results ./logs ./reports ./objects
1024987
rm -rf layer_*.mps macrocell.list *best.plt *_pdn.def
1025988
rm -rf *.rpt *.rpt.old *.def.v pin_dumper.log
1026-
rm -f versions.txt copyright.txt dummy.guide
989+
rm -f versions.txt $(OBJECTS_DIR)/copyright.txt dummy.guide
1027990

1028991
.PHONY: vars
1029992
vars:

flow/designs/asap7/mock-array/Element/constraints.sdc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ set clk_port [get_ports $clk_port_name]
1414
create_clock -period $clk_period -waveform [list 0 [expr $clk_period / 2]] -name $clk_name $clk_port
1515
set_clock_uncertainty -setup 20.0 [get_clocks $clk_name]
1616
set_clock_uncertainty -hold 20.0 [get_clocks $clk_name]
17+
# From top level run's metrics
18+
#set_clock_latency -source 350 [get_clocks $clk_name]
1719

1820
create_clock -period $clk_period -waveform [list 0 [expr $clk_period / 2]] -name ${clk_name}_vir
1921
set_clock_uncertainty -setup 20.0 [get_clocks ${clk_name}_vir]
2022
set_clock_uncertainty -hold 20.0 [get_clocks ${clk_name}_vir]
2123
set_clock_latency 70 [get_clocks ${clk_name}_vir]
24+
# From top level run's metrics
25+
#set_clock_latency -source 380 [get_clocks ${clk_name}_vir]
2226

2327
set_max_transition 250 [current_design]
2428
set_max_transition 100 -clock_path [all_clocks]

flow/designs/asap7/mock-array/constraints.sdc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ set_clock_uncertainty 10 [get_clocks $clk_name]
1313

1414
create_clock -name ${clk_name}_vir -period $clk_period -waveform [list 0 [expr $clk_period/2]]
1515
set_clock_uncertainty 10 [get_clocks ${clk_name}_vir]
16-
set_clock_latency 380 [get_clocks ${clk_name}_vir] ;# Matching real clock latency
16+
set_clock_latency 380 [get_clocks ${clk_name}_vir] ;# Matching real clock latency
1717

1818
set clk_port [get_ports $clk_port_name]
1919
set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port]

flow/scripts/generate_abstract.tcl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ if {$design_stage >= 6 && [file exists $::env(RESULTS_DIR)/$stem.spef]} {
1616
if {$design_stage >= 4} {
1717
set_propagated_clock [all_clocks]
1818
}
19-
19+
# write_timing_model includes the source latency in the model
20+
set_clock_latency -source 0 [all_clocks]
2021
puts "Generating abstract views"
2122
write_timing_model $::env(RESULTS_DIR)/$::env(DESIGN_NAME).lib
2223
write_abstract_lef -bloat_occupied_layers $::env(RESULTS_DIR)/$::env(DESIGN_NAME).lef

flow/scripts/report_metrics.tcl

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,53 @@ proc report_metrics { stage when {include_erc true} {include_clock_skew true} }
152152
set path_delay -1
153153
set path_slack 0
154154
}
155+
156+
if { [llength [all_registers]] != 0} {
157+
report_puts "\n=========================================================================="
158+
report_puts "$when report_checks -path_delay max reg to reg"
159+
report_puts "--------------------------------------------------------------------------"
160+
report_checks -path_delay max -from [all_registers] -to [all_registers] -format full_clock_expanded >> $filename
161+
report_puts "\n=========================================================================="
162+
report_puts "$when report_checks -path_delay min reg to reg"
163+
report_puts "--------------------------------------------------------------------------"
164+
report_checks -path_delay min -from [all_registers] -to [all_registers] -format full_clock_expanded >> $filename
165+
166+
set inp_to_reg_critical_path [lindex [find_timing_paths -path_delay max -from [all_inputs] -to [all_registers]] 0]
167+
if {$inp_to_reg_critical_path != ""} {
168+
set target_clock_latency_max [sta::format_time [$inp_to_reg_critical_path target_clk_delay] 4]
169+
} else {
170+
set target_clock_latency_max 0
171+
}
172+
173+
174+
set inp_to_reg_critical_path [lindex [find_timing_paths -path_delay min -from [all_inputs] -to [all_registers]] 0]
175+
if {$inp_to_reg_critical_path != ""} {
176+
set target_clock_latency_min [sta::format_time [$inp_to_reg_critical_path target_clk_delay] 4]
177+
set source_clock_latency [sta::format_time [$inp_to_reg_critical_path source_clk_latency] 4]
178+
} else {
179+
set target_clock_latency_min 0
180+
set source_clock_latency 0
181+
}
182+
183+
report_puts "\n=========================================================================="
184+
report_puts "$when critical path target clock latency max path"
185+
report_puts "--------------------------------------------------------------------------"
186+
report_puts "$target_clock_latency_max"
187+
188+
report_puts "\n=========================================================================="
189+
report_puts "$when critical path target clock latency min path"
190+
report_puts "--------------------------------------------------------------------------"
191+
report_puts "$target_clock_latency_min"
192+
193+
report_puts "\n=========================================================================="
194+
report_puts "$when critical path source clock latency min path"
195+
report_puts "--------------------------------------------------------------------------"
196+
report_puts "$source_clock_latency"
197+
} else {
198+
puts "No registers in design"
199+
}
200+
# end if all_registers
201+
155202
report_puts "\n=========================================================================="
156203
report_puts "$when critical path delay"
157204
report_puts "--------------------------------------------------------------------------"

tools/OpenROAD

Submodule OpenROAD updated 570 files

tools/yosys

Submodule yosys updated 304 files

0 commit comments

Comments
 (0)