PD Comand Obul
PD Comand Obul
source ../scripts/icc_setup.tcl
sh rm -rf ORCA_TOP_LIB
../libraries/SAED32_2012-12-25/lib/stdcell_lvt/db_nldm
../libraries/SAED32_2012-12-25/lib/stdcell_hvt/db_nldm
../libraries/SAED32_2012-12-25/lib/sram_lp/db_nldm
../design_data
"]
saed32lvt_ss0p75vn40c.db
saed32lvt_ss0p95vn40c.db
saed32lvt_ulvl_ss0p95vn40c_i0p75v.db
saed32lvt_dlvl_ss0p75vn40c_i0p95v.db
saed32hvt_ss0p75vn40c.db
saed32hvt_ss0p95vn40c.db
saed32hvt_ulvl_ss0p95vn40c_i0p75v.db
saed32hvt_dlvl_ss0p75vn40c_i0p95v.db
saed32lvt_ff0p95vn40c.db
saed32lvt_ff1p16vn40c.db
saed32lvt_ulvl_ff1p16vn40c_i0p95v.db
saed32lvt_dlvl_ff0p95vn40c_i1p16v.db
saed32hvt_ff0p95vn40c.db
saed32hvt_ff1p16vn40c.db
saed32hvt_ulvl_ff1p16vn40c_i0p95v.db
saed32hvt_dlvl_ff0p95vn40c_i1p16v.db
saed32lvt_ff0p95v125c.db
saed32lvt_ff1p16v125c.db
saed32lvt_ulvl_ff1p16v125c_i0p95v.db
saed32lvt_dlvl_ff0p95v125c_i1p16v.db
saed32hvt_ff0p95v125c.db
saed32hvt_ff1p16v125c.db
saed32hvt_ulvl_ff1p16v125c_i0p95v.db
saed32hvt_dlvl_ff0p95v125c_i1p16v.db
saed32lvt_ss0p75v125c.db
saed32lvt_ss0p95v125c.db
saed32lvt_ulvl_ss0p95v125c_i0p75v.db
saed32lvt_dlvl_ss0p75v125c_i0p95v.db
saed32hvt_ss0p75v125c.db
saed32hvt_ss0p95v125c.db
saed32hvt_ulvl_ss0p95v125c_i0p75v.db
saed32hvt_dlvl_ss0p75v125c_i0p95v.db
"]
saed32sramlp_ss0p75vn40c_i0p75v.db
saed32sramlp_ss0p95vn40c_i0p95v.db
saed32sramlp_ff0p95vn40c_i0p95v.db
saed32sramlp_ff1p16vn40c_i1p16v.db
saed32sramlp_ff0p95v125c_i0p95v.db
saed32sramlp_ff1p16v125c_i1p16v.db
saed32sramlp_ss0p75v125c_i0p75v.db
saed32sramlp_ss0p95v125c_i0p95v.db
"]
set MW_REFERENCE_CONTROL_FILE "" ;
create_mw_lib \
-tech ../libraries/SAED32_2012-12-25/tech/milkyway/saed32nm_1p9m_mw.tf \
-bus_naming_style {[%d]} \
-mw_reference_library "../libraries/SAED32_2012-12-25/lib/stdcell_lvt/milkyway/saed32nm_lvt_1p9m
../libraries/SAED32_2012-12-25/lib/stdcell_hvt/milkyway/saed32nm_hvt_1p9m
../libraries/SAED32_2012-12-25/lib/sram_lp/milkyway/saed32sram_lp" \
ORCA_TOP_LIB
open_mw_lib ORCA_TOP_LIB
suppress_message "UID-3"
unsuppress_message "UID-3"
#-- load_upf ../design_data/ORCA_TOP.upf
if {[get_scan_chain] != 0} {
remove_sdc
remove_scenario -all
suppress_message UID-401
create_scenario func_worst
read_sdc ../design_data/ORCA_TOP_func_worst.sdc
set_tlu_plus_files \
-max_tluplus ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_1p9m_Cmax.tluplus \
-tech2itf_map ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_tf_itf_tluplus.map
create_scenario test_worst
read_sdc ../design_data/ORCA_TOP_test_worst.sdc
set_tlu_plus_files \
-max_tluplus ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_1p9m_Cmax.tluplus \
-tech2itf_map ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_tf_itf_tluplus.map
create_scenario func_best
read_sdc ../design_data/ORCA_TOP_func_best.sdc
set_tlu_plus_files \
-max_tluplus ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_1p9m_Cmin.tluplus \
-tech2itf_map ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_tf_itf_tluplus.map
create_scenario test_best
read_sdc ../design_data/ORCA_TOP_test_best.sdc
set_tlu_plus_files \
-max_tluplus ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_1p9m_Cmin.tluplus \
-tech2itf_map ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_tf_itf_tluplus.map
create_scenario leak
set_operating_conditions ff0p95v125c -analysis_type on_chip_variation
read_sdc ../design_data/ORCA_TOP_clocks_only.sdc
set_tlu_plus_files \
-max_tluplus ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_1p9m_Cmax.tluplus \
-tech2itf_map ../libraries/SAED32_2012-12-25/tech/star_rc/saed32nm_tf_itf_tluplus.map
current_scenario func_worst
current_scenario $scenario
remove_propagated_clock -all
current_scenario $cur_scenario
derive_pg_connection -create_net
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
create_voltage_area -coordinate [list [expr $urx - 420.28] $lly $urx [expr $lly + 180.576]] -power_domain
PD_RISC_CORE \
derive_pg_connection
save_upf ../results/init_design.upf
set_zero_interconnect_delay_mode true
set_zero_interconnect_delay_mode false
set_check_library_options -all
redirect -file ../reports/check_library.rpt {check_library}
8*******************************
open_mw_lib ORCA_TOP_LIB
open_mw_cel flat_dp
link
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_fp_placement_strategy -macros_on_edge on
set_fp_placement_strategy -sliver_size 10
set_fp_placement_strategy -IO_net_weight 1
set_fp_placement_strategy -plan_group_interface_net_weight 1
set_fp_placement_strategy -spread_spare_cells on
commit_fp_rail
extract_rc
report_timing -nosplit -cap -tran -input -net -delay max > ../reports/dp_report_timing_max_1.rpt
extract_rc
report_timing -nosplit -cap -tran -input -net -delay max > ../reports/dp_report_timing_max_2.rpt
save_mw_cel -overwrite
write_def -version 5.7 -rows_tracks_gcells -macro -pins -blockages -specialnets -vias -regions_groups -
verbose -output ../results/flat_dp_dump.DCT.def
source ../scripts/icc_setup.tcl
open_mw_lib ORCA_TOP_LIB
open_mw_cel place_opt_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
set_active_scenarios -all
current_scenario $scenario
set_active_scenarios $cur_active_scenarios
current_scenario $cur_scenario
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
report_total_power_strategy
report_place_opt_strategy
all_tieoff_cells
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
check_mv_design -verbose
set_active_scenarios [all_scenarios]
current_scenario $cur_scenario
set_active_scenarios -all
set_active_scenarios $cur_active_scenarios
current_scenario $scenario
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
check_mv_design -verbose
set_active_scenarios [all_scenarios]
current_scenario $cur_scenario
clock_opt -only_cts -no_clock_route
set_active_scenarios -all
set_active_scenarios $cur_active_scenarios
current_scenario $scenario
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
}
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_psyn_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
check_mv_design -verbose
set_active_scenarios [all_scenarios]
set_active_scenarios -all
set_active_scenarios $cur_active_scenarios
current_scenario $scenario
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
set_active_scenarios [all_scenarios]
current_scenario $cur_scenario
set_active_scenarios -all
set_active_scenarios $cur_active_scenarios
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
extract_rc
clock_opt -congestion
clock_opt -continue_on_missing_scandef
clock_opt -power
#legalize_placement
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_route_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
open_mw_lib ORCA_TOP_LIB
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
}
remove_attribute [get_lib_cells -quiet */CGL*] dont_use
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
check_mv_design -verbose
set_active_scenarios [all_scenarios]
current_scenario $cur_scenario
set_active_scenarios -all
}
set_active_scenarios $cur_active_scenarios
current_scenario $scenario
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
open_mw_lib ORCA_TOP_LIB
copy_mw_cel -from place_opt_cel -to clock_opt_cts_cel
open_mw_cel clock_opt_cts_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
remove_pnet_options
report_pnet_options
set_active_scenarios [all_scenarios]
current_scenario $cur_scenario
set_active_scenarios -all
set_active_scenarios $cur_active_scenarios
set_fix_hold [all_clocks]
current_scenario $prects_cur_scenario
set_active_scenarios $prects_active_scenarios
unset prects_active_scenarios
open_mw_lib ORCA_TOP_LIB
open_mw_cel route_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
}
remove_attribute [get_lib_cells -quiet */CGL*] dont_use
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
if {[all_level_shifters] != ""} {
set_dont_touch $LS_at_top_physical_hierarchy
if {[all_ao_cells] != ""} {
set_dont_touch $AO_at_top_physical_hierarchy
set_attribute $AO_at_top_physical_hierarchy is_fixed true
if {$RR_CELLS != ""} {
set_dont_touch $RR
echo "RM-Error: $num_hfn Nets with fanout > 500 exist prior to route_opt - Please check if marked
ideal - possibly add buffer tree"
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
route_opt -initial_route_only
gui_set_setting -window [gui_get_current_window -types Layout -mru] -setting showRoute -value false
gui_execute_events
gui_execute_events
# save snapshots
open_mw_lib ORCA_TOP_LIB
open_mw_cel route_opt_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
open_mw_lib ORCA_TOP_LIB
open_mw_cel route_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_attribute [all_macro_cells] is_fixed true
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
if {[all_level_shifters] != ""} {
set_dont_touch $LS_at_top_physical_hierarchy
if {[all_ao_cells] != ""} {
set_dont_touch $AO_at_top_physical_hierarchy
if {$RR_CELLS != ""} {
set_dont_touch $RR
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
report_preferred_routing_direction
route_opt -initial_route_only
return
gui_set_setting -window [gui_get_current_window -types Layout -mru] -setting showRoute -value false
gui_execute_events
gui_execute_events
# save snapshots
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
************8
open_mw_cel chip_finish_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
open_mw_lib ORCA_TOP_LIB
open_mw_cel route_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
if {[all_level_shifters] != ""} {
set_dont_touch $LS_at_top_physical_hierarchy
if {[all_ao_cells] != ""} {
set_dont_touch $AO_at_top_physical_hierarchy
if {$RR_CELLS != ""} {
set_dont_touch $RR
echo "RM-Error: $num_hfn Nets with fanout > 500 exist prior to route_opt - Please check if marked
ideal - possibly add buffer tree"
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
report_preferred_routing_direction
route_opt -initial_route_only
return
gui_set_setting -window [gui_get_current_window -types Layout -mru] -setting showRoute -value false
gui_execute_events
gui_execute_events
# save snapshots
gui_write_window_image -window [gui_get_current_window -view -mru] -file
../reports/route_opt.GR.png
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
#-- create_zrt_shield
-timing_preserve_setup_slack_threshold 0.1 \
-timing_preserve_hold_slack_threshold 0
route_zrt_eco
save_mw_cel -as chip_finish_cel
save_upf ../results/chip_finish.upf
open_mw_cel metal_fill_cel
link
suppress_message MWUI-031
suppress_message MWUI-032
unsuppress_message MWUI-031
unsuppress_message MWUI-032
if {[all_macro_cells] != "" } {
set_ignored_layers -max_routing_layer M5
set_ignored_layers -min_routing_layer M1
-route_xtalk_prevention true \
-route_xtalk_prevention_threshold 0.25 \
-analysis_effort medium
set_active_scenarios [lminus [all_scenarios] [get_scenarios -setup false -hold false -cts_mode true]]
save_upf ../results/metal_fill.upf
#####################################################################################
####
#####################################################################################
####
# "Brief_Description" column below intends to give you quick reference of what the option does.
# Please refer to man page of create_fp_placement or set_fp_placement_strategy for more details.
# H set_ideal_network on hfn N/A <on,off> runs set_ideal_network on high fanout nets before
fp_create_placement
# I high fanout net threshold 100 <integer> placement ignores nets with fanout more than
threshold
# also used to define high fanout nets for "H" and high
fanout net threshold for "W"
# L plan group name for "K" "" <string> if plan_groups is specified in K,pls specify the name of
plan group
# M voltage area names for "K" "" <string> if voltage_areas is specified in K,pls specify the name
of voltage area
# N macro orientation automatic <automatic,all,N> (set_fp_placement_strategy -
macro_orientation)
# U ipo ahfs off <on,off> allow ahfs buffer removal and change of high fanout
threshold
# A run number
# B objective
# D auto grouping
# E hierarchy gravity
# F congestion driven
# G timing driven
# H set_ideal_net_work on hfn
# I hfn threshold
# J effort
# K incremental
# L plan group name for K
# N macro orientation
# O sliver size
# P congestion effort
# Q io net weight
# T legalizer effort
# U ipo ahfs
# W ipo effort
# A B C D E F G H I J K L M N O P QRS T U V W X
Y
dp_explore run0 default auto low on off off off 100 low off "" "" automatic 10 low 1 1 on
high off none medium off off
dp_explore run1 default+moe_off+cong off low on on off off 100 low off "" "" automatic 10 low
1 1 on high off none medium off off
dp_explore run2 default+moe_off+cong+timing off low on on on off 100 low off "" "" automatic 10
low 1 1 on high off none medium off off
dp_explore run3 default+moe_on on low on off off off 100 low off "" "" automatic 10 low 1 1
on high off none medium off off
dp_explore run4 default+moe_on+timing on low on off on off 100 low off "" "" automatic 10 low
1 1 on high off none medium off off
dp_explore run5 default+moe_on+cong+timing on low on on on off 100 low off "" "" automatic 10
low 1 1 on high off none medium off off
dp_explore run6 default+hier_off+moe_off off low off off off off 100 low off "" "" automatic 10 low
1 1 on high off none medium off off
dp_explore run7 default+hier_off+moe_off+cong off low off on off off 100 low off "" "" automatic 10
low 1 1 on high off none medium off off
dp_explore run8 default+hier_off+moe_on+group on high off off off off 100 low off "" "" automatic 10
low 1 1 on high off none medium off off
dp_explore run9 default+high_effort_ipo off low on off off on 40 low off "" "" automatic 10 low 1
1 on high on high medium on off
#####################################################################################
######################################
# Tips
# The above predefined runs are only switching C,D,E,F,and G options which should give you good
sarting point.
# Feel free to customize other options. Option B is only for tracking purpose. You can rename it
whatever you want.
# Use # to comment out runs you don't want or simply remove them. Each run is independent like a tcl
command.
# You can create your own runs and simply append them to the above runs.
#####################################################################################
######################################