The below settings are needed to disable Tweaker and enable PrimeClosure ( Only 1 is supported, either enable Tweaker or PrimeClosure )
set TVAR(sta,enable_tweaker) false
set TVAR(sta,enable_primeclosure) true
The collaterals for PrimeClosure are generated during the dmsa_step. So make sure dmsa_sta step is run after enabling PrimeClosure
The below discussed settings are the same as in Tweaker, just the setting name changed from twkr to pc
By default, all VT types are open for timing and power ECO. The VT type is controlled using the below 3 variables in avo_config.tcl
set TVAR(pc,avaiVTcell) " E*ENRA* E*UNRA* E*ULRA* E*LNRA* E*LLRA* E*SNRA* "
set TVAR(pc,FASTtoSLOWmap) " @ENRA@ @UNRA@ @ULRA@ @LNRA@ @LLRA@ @SNRA@ : @UNRA@ @ULRA@ @LNRA@ @LLRA@ @SNRA@ : @ULRA@ @LNRA@ @LLRA@ @SNRA@ : @LNRA@ @LLRA@ @SNRA@ : @LLRA@ @SNRA@ : @SNRA@
set TVAR(pc,SLOWtoFASTmap) " @SNRA@ @LLRA@ @LNRA@ @ULRA@ @UNRA@ @ENRA@ : @LLRA@ @LNRA@ @ULRA@ @UNRA@ @ENRA@ : @LNRA@ @ULRA@ @UNRA@ @ENRA@ : @ULRA@ @UNRA@ @ENRA@ : @UNRA@ @ENRA@ : @ENRA@ "
We have to disable EN and SN cells from the above 3 variables, as given in the below example :
set TVAR(pc,avaiVTcell) " E*UNRA* E*ULRA* E*LNRA* E*LLRA* "
set TVAR(pc,FASTtoSLOWmap) " @UNRA@ @ULRA@ @LNRA@ @LLRA@ : @UNRA@ @ULRA@ @LNRA@ @LLRA@ : @ULRA@ @LNRA@ @LLRA@ : @LNRA@ @LLRA@ : @LLRA@ "
set TVAR(pc,SLOWtoFASTmap) " @LLRA@ @LNRA@ @ULRA@ @UNRA@ : @LLRA@ @LNRA@ @ULRA@ @UNRA@ : @LNRA@ @ULRA@ @UNRA@ : @ULRA@ @UNRA@ : @UNRA@ "
To avoid X1/X2 buffers during tweaker hold fixing, change the below settings in avo_config.tcl
set TVAR(pc,slk_cell_mapping_rule_regexp_hld_sizing) { @X[3-9]+ @X[3-9]+ : @DLY[0-9]+@ @DLY[0-9]+@ : @BUFX[3-9]+ @DLY[0-9]+X[0-9]+ }
set TVAR(pc,delayBuf) "E1LLRA_BUFX4 E2LLRA_BUFX4 E1LLRA_BUFX8 E2LLRA_BUFX8 E1LLRA_BUFX16 E2LLRA_BUFX16 E1LLRA_BUFX20 E2LLRA_BUFX20 E1LNRA_DLY025X2 E1LNRA_DLY025X4 E1LNRA_DLY050X4 E2LNRA_DLY025X2 E2LNRA_DLY025X4 E2LNRA_DLY025X8 E2LNRA_DLY050X2 E2LNRA_DLY050X8 E1LLRA_DLY025X2 E1LLRA_DLY025X4 E1LLRA_DLY050X4 E2LLRA_DLY025X2 E2LLRA_DLY025X4 E2LLRA_DLY025X8 E2LLRA_DLY050X2 E2LLRA_DLY050X8"
Also, exclude IO paths by setting the below variable to true :
set TVAR(pc,excludeIO) true
set TVAR(pc,exclude_io_cells) true
Disable split_load during setup fix, by using the below variable :
set TVAR(pc_eco,enable_tproc_pc_fix_setup_split_load) false (avo/fscripts/pc_timing_config.tcl)
Make changes in the below code in scripts/con/dont_touch_signals.tcl for PrimeClosure
if { [file exists $env(GEV_BLOCK_ROOT)/source/${DESIGN}.size_only_list.tcl ] } {
set fp [open "$env(GEV_BLOCK_ROOT)/source/${DESIGN}.size_only_list.tcl" "r"]
set file_data [read $fp]
set dont_touch_cells [list {*}$file_data]
if {($synopsys_program_name == "tweaker_shell") || ($synopsys_program_name == "pc_shell")} {
set_dont_touch_cell true -instance $dont_touch_cells
} else {
set_dont_touch $dont_touch_cells
}
Puts "cells with dont touch from trc and tetrc waivers: [llength $dont_touch_cells] , cells with dont touch applied:[sizeof_collection [get_cells $dont_touch_cells]]"
} else {
Puts "ERROR:dont touch cells not exist in the block"
}