FC & Icc2 CMNDS
FC & Icc2 CMNDS
FC & ICC2
# To open lib
open_lib lib_name
# create lib
create_lib lib_name -ref_name { all ndm file}
current_lib
# lib set
ctrl + k == To show preference
ctrl + r == To show properties
ctrl +s == To open option windowtrl + k == To show preference
ctrl + r == To show properties
ctrl +s == To open option windowtrl + k == To show preference
ctrl + r == To show properties
ctrl +s == To open option windowreate a collection of the libraries you want to
analyze, which is known as a libset, by
using the create_libset command, as shown in the following example:
fc_shell> create_libset -name myLibset -libs {abcd1 abcd2}
You can specify the naming convention for this library by using the
set_lib_cell_naming_convention command, as shown in the following example:
fc_shell> set_lib_cell_naming_convention -library $lib \
-column 1 -pattern {[a-zA-Z0-9]*} -attribute
"lexical_cell_prefix_name"
fc_shell> set_lib_cell_naming_convention -library $lib \
-column 2 -pattern {D[0-9]*} -attribute "lexical_drive1_name"
fc_shell> set_lib_cell_naming_convention -library $lib \
2
-column 3 -pattern {WS} -attribute
"lexical_well_substrate_bias_architecure"
fc_shell> set_lib_cell_naming_convention -library $lib \
-column 4 -pattern {ULVT|SVT|LVT|MVT} -attribute
"lexical_device_threshold_voltage"
# iO pG pads creation
create_cell {io_power_pad1_ew io_power_pad2_ew io_power_pad3_ew
io_power_pad4_ew io_power_pad5_ew io_power_pad6_ew io_power_pad7_ew
io_power_pad8_ew} iOVDD_EW
create_cell {io_power_pad1_ns io_power_pad2_ns io_power_pad3_ns
io_power_pad4_ns io_power_pad5_ns io_power_pad6_ns io_power_pad7_ns
io_power_pad8_ns} iOVDD_NS
create_cell {io_ground_pad1_ew io_ground_pad2_ew io_ground_pad3_ew
io_ground_pad4_ew io_ground_pad5_ew io_ground_pad6_ew io_ground_pad7_ew
io_ground_pad8_ew} iOVSS_EW
create_cell {io_ground_pad1_ns io_ground_pad2_ns io_ground_pad3_ns
io_ground_pad4_ns io_ground_pad5_ns io_ground_pad6_ns io_ground_pad7_ns
io_ground_pad8_ns} iOVSS_NS
# IO guides creation
create_io_guide -name top_guide -side top -line {{0 1800} 1800} -offset {360 360}
-pad_cells $top
create_io_guide -name right_guide -side right -line {{1800 1800} 1800} -offset
{360 360} -pad_cells $right
create_io_guide -name left_guide -side left -line {{0.000 0.000} 1800} -offset {360
360} -pad_cells $left
create_io_guide -name bottom_guide -side bottom -line {{1800 0} 1800} -offset
{360 360} -pad_cells $bottom
report_io_guides "enter"
3
# power_io_constraints
set_power_io_constraints -io_guide_object [get_io_guides {top_guide
bottom_guide}] {{reference_cell:vSS_NS} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {top_guide
bottom_guide}] {{reference_cell:vDD_NS} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {top_guide
bottom_guide}] {{reference_cell:iOVSS_NS} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {top_guide
bottom_guide}] {{reference_cell:iOVDD_NS} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {left_guide right_guide}]
{{reference_cell:vSS_EW} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {left_guide right_guide}]
{{reference_cell:vDD_EW} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {left_guide right_guide}]
{{reference_cell:iOVDD_EW} {ratio:4}}
set_power_io_constraints -io_guide_object [get_io_guides {left_guide right_guide}]
{{reference_cell:iOVSS_EW} {ratio:4}}
# signal io constraints
set_signal_io_constraints -io_guide_object right_guide -constraint "{40} $right"
set_signal_io_constraints -io_guide_object left_guide -constraint "{40} $left"
set_signal_io_constraints -io_guide_object top_guide -constraint "{40} $top"
set_signal_io_constraints -io_guide_object bottom_guide -constraint "{40} $bottom"
# placing pads
place_io "enter"
# creating io fillers
set_attribute [get_lib_cells fILLER*] -name reference_orientation -value r90 "enter"
create_io_filler_cells -reference_cells {fILLER50 fILLER40 fILLER35 fILLER20
fILLER15 fILLER10 fILLER5 fILLER1 fILLER01} -io_guides [get_io_guides ] "enter"
# Tracks creation
remove_tracks -all "enter"
create_track -layer m1 -dir y -offset 0 -bbox [get_attribute [get_core_area ] bbox] -
relative_to core_area "enter"
create_track -layer m2 -dir x -offset 0 -bbox [get_attribute [get_core_area ] bbox] -
relative_to core_area "enter"
like that for aLL mETAL lAYERS "enter"
## Sites creation
remove_site_rows -all "enter"
create_site_array -site unit -boundary {{350 350} {1450 1450} } "enter"
# To save library
save_lib lib name "enter"
# To save block
save_block and save_block -as block_imported "enter"
# To fix macro
set_attribute [get_flat_cells -filter "is_hard_macro" ] physical_status fixed "enter"
# To unfix macros
set_attribute [get_flat_cells -filter "is_hard_macro" ]physical_status fixed -value
placed "enter"
# To fix ports
7
set_attribute [get_ports *] physical_status fixed "enter"
check_boundary_cells
compile_boundary_cells
compile_targeted_boundary_cells
remove_boundary_cell_rules
report_boundary_cell_rules
set_boundary_cell_rules
# To create filler
create_stdcell_fillers -lib_cells {fill_lib/fill1x fill_lib/fill2x}
report_cell_groups
# To get shapes
get_shapes
# To get vias
get_vias
# To check mismatch
8
report_design_mismatch "enter"
# Check utilization
report_utilization
# To create net
create_net -power vDD "enter"
create_net -power vSS "enter"
_________________________________________________________
create_net -power vDD "enter"
create_net -ground vSS "enter"
connect_pg_net -net vDD [get_pins -physical_context vDD] "enter"
connect_pg_net -net vSS [get_pins -physical_context vSS] "enter"
# To remove pg strategy
remove_pg_strategies -all "enter"
# To remove pg pattern
remove_pg_patterns -all "enter"
# To remove strips
remove_routes -stripe "enter"
# To remove rings
remove_routes ring "enter"
# To remove vias
remove_vias vIA_SA_29 "enter" to remove via
# Create pg ring
create_pg_ring_pattern ring_pattern_1 -horizontal_layer m9 -horizontal_width {10}
-horizontal_spacing {2} -vertical_layer m8 -vertical_width {5} -vertical_spacing {1}
"enter"
# Compile ring
compile_pg -strategies {core_ring_1 core_ring_2} "enter"
# Legalize placement
legalize placement
legalize-placement "enter"
10
# Details placement
detail placement
place_opt -to final_opto "enter"
# Report design
report_design
# Save design
save_design - block and dEF
# To create bound
create_bound -name bound_name
# The default effort is ultra; you can also specify low, medium, or high
# Sanity checks:---
1 - congestion -
a - global route congestion
go to view -> map -> global route congestion -> reload or report_congestion -
rerun_global_router
b - cell density
go to view -> map -> cell density
c - pin density
go to view -> map -.> pin density
2 - logical dRC
11
a - max trans
b - max cap
c -max fanout
3 - timing check (setup)
## Max transition
report_constraints -max_transition "enter"
## Max capacitance
report_constraints -max_capacitance "enter"
## Legality
check_legality "enter"
## Timing checks
report_timing -delay_type max "enter"
## Save block
save_block -as place_done "enter"
## Save dEF
write_def "enter"
## To create blockages
create_placement_blockage
## Fix----
1 - swapping of cells (hVT to lVT , lVT to hVT)
2 - up-sizing and down-sizing of cells
3 - inserting buffer
4 - cloning
5 - path group
## To get input pins name & nets name , output pins name & net name.
report_cells -connections [get_selection ]
# Strength
report_timing -from
i_ORCA_TOP/i_SDRAM_TOP/i_SDRAM_WRITE_FIFO/reg_array_reg_3__4_ -to
i_ORCA_TOP/i_SDRAM_TOP/i_SDRAM_WRITE_FIFO/data_out_sync_reg_4_
# The following example shows the command adds buffers on net1 using the
lib/BUF library cell. The repeater distance is 100 and the first distance is 80.
prompt> add_buffer_on_route -repeater_distance 100 \ -first_distance 80 net1 -
lib_cell lib/BUF
add_buffer_on_route -first_distance 30 -repeater_distance 100
I_ORCA_TOP/I_SDRAM_TOP/I_SDRAM_IF/eco_net_2_cts0 -lib_cell NBUFFX2_RVT
{adding multiple buffers on net}
13
fc_shell> add_buffer_on_route -repeater_distance 100
I_ORCA_TOP/I_PCI_W_MUX/pci_wfifo_data[3] -lib_cell saed32hvt_c/NBUFFX2_HVT
fc_shell> get_cells -of_objects [get_nets
I_ORCA_TOP/I_PCI_W_MUX/pci_wfifo_data[3]] == To see whether my cell is added
or not.
# It will show you cell cell name which is connected through below net.
fc_shell> get_cells -of_objects [get_nets
I_ORCA_TOP/I_PCI_W_MUX/pci_wfifo_data[3]]
{I_ORCA_TOP/I_PCI_W_MUX/U7 I_ORCA_TOP/I_PCI_W_MUX}
# To get_net report
report_net -connections net_pserr_n_in -nosplit
# The following example adds buffers on net1 using the lib/BUF library cell. One
location is specified and let command to detect layer.
prompt> add_buffer_on_route -location {100 200} -detect_layer net1 \
## To insert buffer
insert_buffer instance_name_with_pin space cell_name_from_library
# To remove buffer
remove_buffer instance_name
## sanity checks#####
###################################################
#################### clock tree synthesis #############
create_io_guide -name right_guide -side right -line {{1800 1800} 1800} -offset
{360 360} -pad_cells $right
16
report_analysis_coverage = it will show all violation with % , how much solve and
what is remains = pt_shell command
write_sdf sdf_name
report_timing -input_pins
set_max_transition
remove_max_transition
create_routing_rule
remove_routing_rules(2)
report_routing_rules(2)
# Clock_opt
####sanity checks###
###reports####
# redirect rpts/$node/report_clock_tree.rpt { report_clock_tree_options } -tee -file
# redirect rpts/$node/timing_summary.rpt {report_global_timing -
separate_all_groups} -tee -file
# redirect rpts/$node/congestion.rpt {report_congestion} -tee -file
# redirect rpts/$node/clock_drv_violations.rpt {report_clock_qor -type drc_violators
-all} -tee -file
# redirect rpts/$node/report_utilization.rpt {report_utilization} -tee -file
## sanity checks#####
### #### Enable win command on icc2 & fusion compiler #######
source ~ssb00853/.synopsys_icc2_gui/preferences.tcl ( write this command on fc or
icc2 shell )
open linux shell
cat ~ssb00853/.synopsys_icc2_gui/preferences.tcl ( write this command on linux
shell )
###################################################
#####
# To see units of inputs and outputs
report_units
# To show or get something on gui whether it is pins , ports, nets, and all....
change_selection [get_nets net_pserr_n_in]
# Write verilog
write_verilog -exclude physical_only_cells my_route_exclude.v
# Write parasitics
write_parasitics -format spef -output my_route.spef
# For timing
parasetic model
# Specify the minimum allowed capacitance for input ports, library cell pins, leaf
cell pins, clocks, or blocks
set_min_capacitance
# Specify the maximum allowed capacitance for input ports, library cell pins, leaf
cell pins, clocks, or blocks
set_max_capacitance
# Specify the maximum allowed signal transition time for input ports, library cell
pins, leaf cell pins, clocks, or blocks
set_max_transition
###################################################
#####
######### To read or set parasetic ############
EXAMPLES
#################### Report_parameters
#################
EXAMPLES
the following example reports the parasitic parameters for the current
corner.
NAME
set_operating_conditions
specifies the operating conditions that are used to establish
the process number, voltage, and temperature for the current
corner of the current design.
SYNTAX
status set_operating_conditions
[-analysis_type single | bc_wc | on_chip_variation]
[-library lib]
[condition]
[-min min_condition]
[-max max_condition]
[-min_library min_lib]
[-max_library max_lib]
[-object_list objects]
this example shows how to set the early and late process labels to dif-
ferent values for an entire design.
prompt> set_process_label -late wORST -early bEST
this example shows how to give default process labels for the design,
as well as different process labels for cells from a particular refer-
ence library.
this example shows how to give default process labels for the design,
but have process labels be ignored for cells from a particular refer-
ence library.
EXAMPLES
this example sets the same early and late process number for an entire
design.
this example sets separate early and late process numbers for an entire
design.
this example sets default process numbers for the design, as well as
different process numbers for cells from a particular reference
library.
NAME
set_voltage
applies an operating voltage to a list of supply nets, supply
ports, cells or ports, or to the current design.
EXAMPLES
the following example sets max (worst-case) and min (best-case) voltage
values of 1.05 and 1.2 on the supply net vDD1, for the corner corner3:
the following example sets the max and min top-level default primary
voltage to 1.05 volts for the current corner. this value will be used
for any cells that are not powered by supply nets.
###################################################
####
###################################################
#####
# There are four thing when you are goin to create timing setting////
display tiing setting :----- parasetic corner mode scenario
#report_supply_nets
#report_pvt
#to get the attributes of anythings
get_attribute [get_cells i_CLK_SOURCE_PCLK] area "enter"
[to get cell from design, select object] select attributes whatever you want
# To move one for more than one file from one directory to another directory
mv powerplan.tcl floorplan.tcl scripts
26
# To get error browser by using gui command
gui_error_browser -show
# fc_shell> check_
check_3d_design check_io_placement
check_pre_place_io
check_advanced_boundary_cells check_isolation_coverage
check_pt_qor
check_boundary_cells check_legality
check_rdl_routes
check_bufferability check_legalizer_sanity
check_routability
check_bump_spacing check_libcell_pin_access
check_routes
check_busplan_constraints check_license
check_routing_corridors
check_clock_gate_library_cell_availability check_lvs
check_rp_constraints
check_clock_trees check_macro_pin_access
check_sadp_tracks
check_consistency_settings check_mib_alignment
check_safety_intent
check_design check_mib_for_pin_placement
check_scan_chain
check_design_for_clock_trunk_planning check_multibit_library
check_secondary_pg_placement_constraints
check_design_states check_mv_design check_shapes
check_duplicates check_netlist
check_stage_settings
check_equivalent_power_domains check_objects_for_push_down
check_starrc_in_design
check_error check_pg_connectivity
check_supply_equivalence
check_feedthroughs check_pg_drc
check_targeted_boundary_cells
check_finfet_grid check_pg_missing_vias
check_tcd_cells
check_floorplan_rules check_physical_constraints
check_timing
check_freeze_silicon check_pin_placement
check_topology_plans
check_hier_design check_placement_constraints
check_variants
27
check_host_options check_pre_pin_placement
check_vclp_design
# fc_shell> list_blocks
lib orca_lib_33 /proj/pD_Training/training_2022/ssb00600/orca_lib_33 tech current
-> 0 oRCA.design may-10-15:01
+> 0 adiltrail.design may-12-16:03 current
2
#################### my power_plan
########################
####################################################
#
fc_shell> set_edrc_setting -check_drc {true}
fc_shell> set_edrc_setting -filter_same_net_spacing {true}
fc_shell> set_edrc_setting -check_fill {true}
fc_shell> set_edrc_setting -check_drc {false}
fc_shell> set_edrc_setting -check_drc {true}
source -v -e cts.tcl
given
set_app_options -name route.track.timing_driven -value true
set_app_options -name route.track.crosstalk_driven -value true
set_app_options -name route.global.timing_driven_-value true
set_app_options -name route.global.timing_driven-value true
set_app_options -name route.global.timing_driven -value true
set_ignored_layers -max_routing_layer m7 -min_routing_layer m2
30
set_app_options -name route.common.global_min_layer_mode -value
allow_pin_connenction
set_app_options -name route.common.global_min_layer_mode
set_app_options -name route.common.global_max_layer_mode -value soft
set_app_options -name route.common.global_min_layer_mode -value hard
set_app_options -name time.si_enable_analysis -value true
set_app_options -name time.enable_si_timing_windows -value true
route_global
route_track
route_detail
route_auto
route_opt
# Verify_pg_nets
clock_opt
#route_zrt_auto
#verify_zrt_route
#route_zrt_eco -max_detail_route_iterations 5
#verify_lvs -check_open_locator -check_short_locator
31
#insert_stdcell_filler \
-cell_without_metal "sHFILL128 sHFILL64 sHFILL3 sHFILL2 sHFILL1" \
-connect_to_power {vDD} \
-connect_to_ground {vSS}
# Save_mw_cel -overwrite
remove_scenario -all
create_scenario scan_min
source $scripts/min_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_scan
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario scan_max
source $scripts/max_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_scan
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario func_min
source $scripts/min_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
32
read_sdc $sdc_file_func_min
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario func_max
source $scripts/max_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_func_max
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
###################################################
##################### for generating report #############
## Sanity checks#####
## To insert buffer
insert_buffer instance name with pin space cell name from library
# TO remove buffer
remove_buffer instance name
remove_eco_repeater I_ORCA_TOP/I_PCI_W_MUX/eco_cell
34
# To get the location of eco cell
get_attribute [get_cell I_ORCA_TOP/eco_cell] bbox