ASIC Design
ECO Flow and Physical Verification – LAB 6
Course Code: MVLD505P
Slot: L45 + L46
Submitted By:
Shreyas Joshi - 24MVD0097
Satya Deep K - 24MVD0093
Shubham Gupta - 24MVD0066
Submitted To
Dr. Jagannadha Naidu K
ECO Flow
I) Iteration 1:
i. Generating netlist, SDC and SPEF files:
ii. Using PrimeTime for Post Route STA:
iii. Initial Analysis Coverage:
iv. Annotated Parasitics:
v. Changes suggested by PrimeTime:
vi. Analysis based on suggested changes:
vii. Implementing and Placing ECO cells in ICC2:
viii. Legality check:
ix. Routing ECO Cells:
x. Buffer Insertion Done:
II) Iteration 2:
i. Generating netlist, SDC and SPEF files:
ii. Using PrimeTime for Post Route STA:
iii. Initial Analysis Coverage:
iv. Annotated Parasitics:
v. Analysis based on suggested changes:
vi. Visualizing Clock Gate hold violation:
vii. Fixing Hold Voiolation:
viii. Implementing and Placing ECO cells in ICC2:
ix. Legality check:
x. Routing ECO Cells done:
Physical Verification
Initial Design after ECO Flow done:
Inserting Filler cells:
Routing Filler Cells:
Design with Filler Cells:
Signoff DRC check:
LVS check:
Signoff Create Metal Filling:
Final Design Block after Metal Filling:
Utilization Report:
Appendix
I) ECO Flow:
- Commands to generate:
1. Netlist: write_verilog DG_netlist_r.v
2. SDC File: write_sdc -output DG_netlist_r.sdc
3. SPEF File: write_parasitics -output DG -formt spef
- Primetime of Best timing ff0p95v125c (pt_cbest.tcl)
#set std_cell_delay_corner "ff0p95v125c"
#set macro_cell_delay_corner "ff1p16v125c"
#provide path for routed netlist
#this should be dumped from the icc2 session and used as input here.
set input_verilog "./DG_netlist_r.v "
#provide path for sdc
set input_sdc "./DG_netlist_r.sdc "
#provide path for spef
set input_spef "./DG.worst_para_-40.spef "
set my_design "Dice_Game"
set DESIGN_REF_PATH "/home/synopsys/installs/LIBRARIES/SAED14nm_EDK_08_2024/"
set search_path " ./ \
${DESIGN_REF_PATH} "
set link_path "* \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_tt0p8v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ss0p72v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ff0p88v25c.db"
set target_library " \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_tt0p8v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ss0p72v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ff0p88v25c.db"
catch {sh mkdir db rpts}
read_verilog "${input_verilog}"
#read_verilog "./${input_verilog}"
#set link_create_black_boxes false
current_design $my_design
link_design $my_design
read_sdc "${input_sdc}"
#read_sdc "./${input_sdc}"
read_parasitics "${input_spef}" -keep_capacitive_coupling -format SPEF
#read_parasitics "./${input_spef}" -keep_capacitive_coupling -format SPEF
update_timing -full
save_session ./db/${my_design}_w.session
- Primetime of worst timing ff0p95v125c, ff1p16v125c (pt_cworst.tcl):
#set std_cell_delay_corner "ff0p95v125c"
#set macro_cell_delay_corner "ff1p16v125c"
#provide path for routed netlist
#this should be dumped from the icc2 session and used as input here.
set input_verilog "./it2_DG_netlist_r.v "
#provide path for sdc
set input_sdc "./it2_DG_netlist_r.sdc "
#provide path for spef
set input_spef "./it2_DG.tlup_max_125.spef "
set my_design "Dice_Game"
set DESIGN_REF_PATH "/home/synopsys/installs/LIBRARIES/SAED14nm_EDK_08_2024/"
set search_path " ./ \
${DESIGN_REF_PATH} "
set link_path "* \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_tt0p8v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ss0p72v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ff0p88v25c.db"
set target_library " \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_RVT/liberty/nldm/base/saed14rvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_HVT/liberty/nldm/base/saed14hvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_tt0p8v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ss0p72v25c.db \
${DESIGN_REF_PATH}/SAED14nm_EDK_STD_LVT/liberty/nldm/base/saed14lvt_base_ff0p88v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_tt0p8v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ss0p72v25c.db \
${DESIGN_REF_PATH}//SAED14nm_EDK_SRAM/liberty/nldm/saed14sram_ff0p88v25c.db"
catch {sh mkdir db rpts}
read_verilog "${input_verilog}"
#read_verilog "./${input_verilog}"
#set link_create_black_boxes false
current_design $my_design
link_design $my_design
read_sdc "${input_sdc}"
#read_sdc "./${input_sdc}"
read_parasitics "${input_spef}" -keep_capacitive_coupling -format SPEF
#read_parasitics "./${input_spef}" -keep_capacitive_coupling -format SPEF
update_timing -full
save_session ./db/${my_design}_w.session
- ECO Cell Insertion and Sizing in PrimeTime:
fix_eco_drc -type max_transition -verbose -methods size_cell
fix_eco_drc -type max_capacitance -verbose -methods size_cell
fix_eco_drc -type max_transition -verbose -buffer_list {SAEDLVT14_BUF_ECO_1 SAEDLVT14_BUF_ECO_2
SAEDLVT14_BUF_ECO_3 SAEDLVT14_BUF_ECO_4 SAEDLVT14_BUF_ECO_6 SAEDLVT14_BUF_ECO_7
SAEDLVT14_BUF_ECO_8}
fix_eco_drc -type max_capacitance -verbose -buffer_list {SAEDLVT14_BUF_ECO_1 SAEDLVT14_BUF_ECO_2
SAEDLVT14_BUF_ECO_3 SAEDLVT14_BUF_ECO_4 SAEDLVT14_BUF_ECO_6 SAEDLVT14_BUF_ECO_7
SAEDLVT14_BUF_ECO_8}
fix_eco_timing -type setup -slack_lesser_than 0 -methods size_cell
fix_eco_timing -type setup -slack_lesser_than 0 -buffer_list {SAEDLVT14_BUF_ECO_1 SAEDLVT14_BUF_ECO_2
SAEDLVT14_BUF_ECO_3 SAEDLVT14_BUF_ECO_4 SAEDLVT14_BUF_ECO_6 SAEDLVT14_BUF_ECO_7
SAEDLVT14_BUF_ECO_8}
fix_eco_timing -type hold -slack_lesser_than 0 -methods size_cell
fix_eco_timing -type hold -slack_lesser_than 0 -buffer_list {SAEDHVT14_BUF_ECO_1 SAEDHVT14_BUF_ECO_2
SAEDHVT14_BUF_ECO_3 SAEDHVT14_BUF_ECO_4 SAEDHVT14_BUF_ECO_6 SAEDHVT14_BUF_ECO_7
SAEDHVT14_BUF_ECO_8}
#write_changes -format icc2tcl -output pt_changes_1.tcl
- Changes in PrimeTime and Buffer insertion (Iteration 1):
###############################################################################
# Change list, formatted for IC Compiler
###############################################################################
current_instance
current_instance {C1}
size_cell {U_PTECO_HOLD_BUF37} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF70} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF73} {SAEDHVT14_DEL_R2V3_1}
current_instance
current_instance {clk_gate_point_reg}
size_cell {U_PTECO_HOLD_BUF349} {SAEDHVT14_DEL_R2V3_1}
current_instance
current_instance {C1/clk_gate_count_reg}
size_cell {U_PTECO_HOLD_BUF348} {SAEDHVT14_DEL_R2V3_1}
current_instance
current_instance {C1}
size_cell {U_PTECO_HOLD_BUF28} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF131} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF121} {SAEDHVT14_DEL_R2V3_2}
current_instance
current_instance {clk_gate_point_reg}
size_cell {U_PTECO_HOLD_BUF307} {SAEDHVT14_DEL_R2V3_1}
current_instance
current_instance {C1/clk_gate_count_reg}
size_cell {U_PTECO_HOLD_BUF41} {SAEDHVT14_BUF_ECO_8}
current_instance
current_instance {C1}
size_cell {U_PTECO_HOLD_BUF99} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF98} {SAEDHVT14_DEL_R2V3_2}
size_cell {U_PTECO_HOLD_BUF49} {SAEDHVT14_BUF_ECO_8}
current_instance
current_instance {C1/clk_gate_count_reg}
size_cell {U_PTECO_HOLD_BUF306} {SAEDRVT14_DEL_R2V3_1}
current_instance
current_instance {C1}
size_cell {U_PTECO_HOLD_BUF1} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF12} {SAEDHVT14_DEL_R2V3_1}
size_cell {U_PTECO_HOLD_BUF3} {SAEDHVT14_BUF_ECO_8}
size_cell {U_PTECO_HOLD_BUF24} {SAEDHVT14_BUF_ECO_8}
size_cell {U_PTECO_HOLD_BUF144} {SAEDHVT14_DEL_R2V3_2}
insert_buffer [get_pins {U11/A1}] SAEDHVT14_BUF_ECO_8 -new_net_names {net_PTECO_HOLD_NET2} -
new_cell_names {U_PTECO_HOLD_BUF2}
insert_buffer [get_pins {U9/A2}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET4} -
new_cell_names {U_PTECO_HOLD_BUF4}
insert_buffer [get_pins {count_reg_1_/D}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET5} -
new_cell_names {U_PTECO_HOLD_BUF5}
insert_buffer [get_pins {count_reg_0_/D}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET6} -
new_cell_names {U_PTECO_HOLD_BUF6}
insert_buffer [get_pins {count_reg_1_/Q}] SAEDHVT14_DEL_R2V3_1 -new_net_names {net_PTECO_HOLD_NET7} -
new_cell_names {U_PTECO_HOLD_BUF7}
current_instance
current_instance {C1/clk_gate_count_reg}
insert_buffer [get_pins {latch/D}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET8} -
new_cell_names {U_PTECO_HOLD_BUF8}
current_instance
current_instance {C1}
insert_buffer [get_pins {U_PTECO_HOLD_BUF99/A}] SAEDHVT14_BUF_ECO_8 -new_net_names
{net_PTECO_HOLD_NET9} -new_cell_names {U_PTECO_HOLD_BUF9}
insert_buffer [get_pins {count_reg_2_/D}] SAEDHVT14_BUF_ECO_8 -new_net_names {net_PTECO_HOLD_NET10} -
new_cell_names {U_PTECO_HOLD_BUF10}
insert_buffer [get_pins {U6/B2}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET11} -
new_cell_names {U_PTECO_HOLD_BUF11}
insert_buffer [get_pins {U_PTECO_HOLD_BUF9/A}] SAEDHVT14_BUF_ECO_8 -new_net_names
{net_PTECO_HOLD_NET13} -new_cell_names {U_PTECO_HOLD_BUF13}
insert_buffer [get_pins {U_PTECO_HOLD_BUF10/A}] SAEDHVT14_BUF_S_20 -new_net_names
{net_PTECO_HOLD_NET14} -new_cell_names {U_PTECO_HOLD_BUF14}
insert_buffer [get_pins {count_reg_2_/D}] SAEDHVT14_BUF_ECO_8 -new_net_names {net_PTECO_HOLD_NET15} -
new_cell_names {U_PTECO_HOLD_BUF15}
insert_buffer [get_pins {U11/A2}] SAEDHVT14_BUF_ECO_8 -new_net_names {net_PTECO_HOLD_NET16} -
new_cell_names {U_PTECO_HOLD_BUF16}
insert_buffer [get_pins {U12/A1}] SAEDHVT14_DEL_R2V1_1 -new_net_names {net_PTECO_HOLD_NET17} -
new_cell_names {U_PTECO_HOLD_BUF17}
insert_buffer [get_pins {U6/X}] SAEDHVT14_DEL_R2V2_1 -new_net_names {net_PTECO_HOLD_NET18} -
new_cell_names {U_PTECO_HOLD_BUF18}
insert_buffer [get_pins {U6/B1}] SAEDHVT14_BUF_S_20 -new_net_names {net_PTECO_HOLD_NET19} -
new_cell_names {U_PTECO_HOLD_BUF19}
insert_buffer [get_pins {U_PTECO_HOLD_BUF10/A}] SAEDHVT14_BUF_ECO_8 -new_net_names
{net_PTECO_HOLD_NET20} -new_cell_names {U_PTECO_HOLD_BUF20}
insert_buffer [get_pins {U_PTECO_HOLD_BUF16/A}] SAEDHVT14_BUF_S_20 -new_net_names
{net_PTECO_HOLD_NET21} -new_cell_names {U_PTECO_HOLD_BUF21}
insert_buffer [get_pins {U_PTECO_HOLD_BUF18/A}] SAEDHVT14_BUF_S_20 -new_net_names
{net_PTECO_HOLD_NET22} -new_cell_names {U_PTECO_HOLD_BUF22}
insert_buffer [get_pins {U10/A2}] SAEDHVT14_BUF_ECO_8 -new_net_names {net_PTECO_HOLD_NET23} -
new_cell_names {U_PTECO_HOLD_BUF23}
insert_buffer [get_pins {U_PTECO_HOLD_BUF19/A}] SAEDHVT14_BUF_ECO_1 -new_net_names
{net_PTECO_HOLD_NET25} -new_cell_names {U_PTECO_HOLD_BUF25}
insert_buffer [get_pins {U_PTECO_HOLD_BUF21/X}] SAEDHVT14_BUF_1P5 -new_net_names
{net_PTECO_HOLD_NET26} -new_cell_names {U_PTECO_HOLD_BUF26}
current_instance
- Changes in PrimeTime and Buffer insertion (Iteration 2):
###############################################################################
# Change list, formatted for IC Compiler
#
#
#
###############################################################################
current_instance
current_instance {C1}
size_cell {U_PTECO_HOLD_BUF25} {SAEDRVT14_BUF_U_0P5}
size_cell {U_PTECO_HOLD_BUF26} {SAEDRVT14_DEL_R2V2_2}
current_instance
current_instance {C2/clk_gate_fpulse_reg}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_20 -new_net_names {net1} -new_cell_names {U1}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_20 -new_net_names {net2} -new_cell_names {U2}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net3} -new_cell_names {U3}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net4} -new_cell_names {U4}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net5} -new_cell_names {U5}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net6} -new_cell_names {U6}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net7} -new_cell_names {U7}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net8} -new_cell_names {U8}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net9} -new_cell_names {U9}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net10} -new_cell_names {U10}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net11} -new_cell_names {U11}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net12} -new_cell_names {U12}
insert_buffer [get_pins {main_gate/A1}] SAEDHVT14_BUF_1 -new_net_names {net13} -new_cell_names {U13}
current_instance
- ECO Flow run:
source ./pt_changes_1.tcl
connect_pg_net -net VDD [get_pins -hier * -filter "name==VDD"]
connect_pg_net -net VSS [get_pins -hier * -filter "name==VSS"]
check_legality
#place_eco_cells -eco_changed_cells -displacement_threshold 5 -max_displacement_threshold 10
place_eco_cells -eco_changed_cells
check_legality
route_eco -utilize_dangling_wires true -reroute modified_nets_first_then_others -reuse_existing_global_route true
save_block -as DG_eco_done
report_timing
report_timing -delay_type min
report_constraints -all_violators
current_scenario func_slow
report_constraints -all_violators
#get_flat_cells *ropt*
II) Physical Verification TCL script run in icc2 (IC Compiler):
#Now Lets insert the filler cells
create_stdcell_fillers -lib_cells { */SAEDLVT14_FILL1 */SAEDLVT14_FILL2 */SAEDLVT14_FILL3
*/SAEDLVT14_FILL16 */SAEDLVT14_FILL32 */SAEDLVT14_FILL64 }
#Perform Logical Connections
connect_pg_net -net VSS [get_pins */VSS]
connect_pg_net -net VDD [get_pins */VDD]
# Delete the filler cells that have routing DRC violations
remove_stdcell_fillers_with_violation
#Let us verify and report routing design rule checking (DRC) violations, by using "check_routes" command
check_routes
# Set the DRC runset file.
set_app_options -name signoff.check_drc.runset -value ./icv_drc/saed14nm_1p9m_drc_rules.rs
set_app_options -name signoff.check_drc.max_errors_per_rule -value 1000
set_app_options -name signoff.check_drc.run_dir -value "icvDRC_run"
setenv _ICV_RSH_COMMAND ssh
signoff_check_drc
#set_app_options -list {signoff.fix_drc.init_drc_error_db "./icvDRC_run"}
#signoff_fix_drc
#Run the command to check the LVS,by using "check_lvs" command
check_lvs
#Metal fill
set_app_options -name signoff.create_metal_fill.runset -value ./icv_drc/saed14nm_1p9m_mfill_rules.rs
signoff_create_metal_fill
create_utilization_configuration -scope block core_utilization -include {all}
report_utilization -config core_utilization
save_block -as final
#close_block -f
#close_lib