1. ##############Add "tsmc3ffe_iopads" in the extra_iplist  of scripts/con/block_config.tcl 


for now in ip_setup.tcl below fix is there

#SCP - temporary fix for ubumps

set bumpsFile "$env(GEV_IPLIB_ROOT)/$env(PROGRESS_DESCRIPTOR)/pads/lef/tsmc3ffe_iopads.lef"

if [file exists $bumpsFile] {

    lappend IP_SETUP(LEF_LIST) $bumpsFile

}


#AMR - temporary fix for ubumps

set bumpsFile "$env(GEV_IPLIB_ROOT)/$env(PROGRESS_DESCRIPTOR)/pads/oas/tsmc3ffe_iopads.oas"

if [file exists $bumpsFile] {

    lappend IP_SETUP(OASIS_FILES) $bumpsFile

}





2. Copy  <blk_name>.top_context.def.gz to source area

fscripts/avo_config.tcl

set TVAR(avo,block_rdl_from_top) $env(GEV_PROJECT_ROOT)/user/$USER/$env(PROJECT_DIR)/impl/$env(GEV_BLOCK)/source/$env(GEV_BLOCK).top_context.def.gz


If there is no top_context.def.gz available, uncomment below variable

# set TVAR(avo,allow_no_block_rdl_from_top) true



3. Run "add_rdl" target

raven  -E avo add_rdl $BLOCK

Make sure to check in the  log "avo/power/add_rdl/logs/add_rdl.log.gz" that top_context.def.gz is read in properly as shown below

GIANT_INFO: Loading rdl  <.....>_context.def.gz

4. STATIC STEPS (IR):

raven -E avo redhawk_sc_static $BLOCK

5. Dynamic STEPS (IVD):

raven -E avo.<tag> redhawk_sc_dynamic $BLOCK

6.Report check:


############################################################################################## 

Redhawk limits for static and IVD are below ( For QUD )

Voltage setpoints

Nominal : 0.68v

Static: 0.714v (Nom VDD + 5% of Nom VDD)

Dynamic: 0.646v (Nom VDD -5% of Nom VDD)

Voltage cut-offs

Static : 0.699V ( Static setpoint - 2% of Nom VDD)

Dynamic : 0.626V (Dynamic set point - 3% of Nom VDD)

############################################################################################## 


############################################################################################## 

Redhawk limits for static and IVD are below ( For NOD )

Voltage setpoints

Nominal : 0.75v

Static: 0.7875v (Nom VDD + 5% of Nom VDD)

Dynamic: 0.7125v (Nom VDD -5% of Nom VDD)

Voltage cut-offs

Static : 0.7725V ( Static setpoint - 2% of Nom VDD)

Dynamic : 0.69V (Dynamic set point - 3% of Nom VDD)

############################################################################################## 


cd avo<>/power/redhawk_sc_dynamic/rpts/

python3 /project/mercury/bin/block_scripts/combined_dvd.bucketize.py   power/redhawk_sc_dynamic_orig/rpts/Veff_dvd_data.rpt.gz <step size in %age> <Ideal_voltage> <nom_voltage> <rpt_prefix>

Eg: NOD : python3 /project/mercury/bin/block_scripts/combined_dvd.bucketize.py avo/power/redhawk_sc_dynamic/rpts/Veff_dvd_data.rpt.gz 0.5 0.7125 0.75 dynamic

Eg: QUD : python3 /project/mercury/bin/block_scripts/combined_dvd.bucketize.py avo/power/redhawk_sc_dynamic/rpts/Veff_dvd_data.rpt.gz 0.5 0.646 0.68 dynamic


Eg Output:

0.000 - 0.500 : 2374123

0.500 - 1.000 : 737599

1.000 - 1.500 : 126315

1.500 - 2.000 : 2901

2.000 - 2.500 : 122

2.500 - 3.000 : 8

If  we have any cells reported >3% are considered as violations at block level. It also dumps list of cells under each band under <rpt_prefix> directory


rpts/combined_histograms

dynamic.inst_viols.0_0.5.rpt    dynamic.inst_viols.3.0_3.5.rpt

dynamic.inst_viols.0.5_1.0.rpt  dynamic.inst_viols.3.5_4.0.rpt

dynamic.inst_viols.1.0_1.5.rpt  dynamic.inst_viols.4.0_4.5.rpt

dynamic.inst_viols.1.5_2.0.rpt  dynamic.inst_viols.4.5_5.0.rpt

dynamic.inst_viols.2.0_2.5.rpt  dynamic.inst_viols.5.0_5.5.rpt

dynamic.inst_viols.2.5_3.0.rpt  dynamic.inst_viols.5.5_6.0.rpt

7. Sanity Checks for both IR & IVD Runs:

a) Disconnect Instance report (avo/power/redhawk_sc_static/rpts/<blk_name>.disconnect.rpt)

b) Metal EM report: Current flowing in metal wire segment more than it can handle is reported as FAIL.

You can find the failures using the grep command as below

grep FAIL avo/power/redhawk_sc_static/rpts/metal.em.rpt

If the above failures are reported in AP layer, it can be waived for the block run.

c) Via EM report: For via EM report use the following grep command. Any violation on the RV via layer can be waived for the block run.

grep FAIL avo/power/redhawk_sc_static/rpts/via.em.rpt

d) Missing Via report (avo/power/redhawk_sc_static/rpts/unconnected_instance_pins.rpt)

################### RESTORING  REDHAWK SESSION ###################

Steps to load redhawk database :

  1.  cp -rf dynamic_nopackage.run.py restore.py

   2.  open  restore.py .  Remove all contents after   "db = gp.open_db " and add the command "populate_view_tags()"

   3. module add seascape/2024_R1.5

   4.  redhawk_sc -i restore.py

bsub -qa -q priority -R "rusage[mem=50000]" -Ip  redhawk_sc -i restore.py

    5.  In the shell type the command "open_console_window()" to start GUI

6) to exit "exit()"



zcat Veff_dvd_data.rpt.gz | grep VDD | awk '{if ($1<0.615 && $1 > 0.610 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDD | awk '{if ($1<0.610 && $1 > 0.605 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDD | awk '{if ($1<0.605 && $1 > 0.600 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDD | awk '{if ($1<0.600 ) print $0 }' | wc -l

 zcat Veff_dvd_data.rpt.gz | grep VDD | awk '{ print $1}' | sort -nk1 | head -n 1


zcat Veff_dvd_data.rpt.gz | grep VDDM | awk '{if ($1<0.685 && $1 > 0.680 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDDM | awk '{if ($1<0.680 && $1 > 0.675 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDDM | awk '{if ($1<0.675 && $1 > 0.670 ) print $0 }' | wc -l

zcat Veff_dvd_data.rpt.gz | grep VDDM | awk '{if ($1<0.670 ) print $0 }' | wc -l



STEPS TO RUN :

1. Copy context def to source directory

source/${MY_BLOCK}.top_context.def.gz


[NOTE : For blocks with multiple context def's 

change the below variable in the avo.config.tcl

set TVAR(avo,block_rdl_from_top) <full_path>/$env(GEV_BLOCK).top_context.def.gz


RUn1 :use the default procedure

RUN2 , etc with additional context def , create parallel "avo's by  creating links for the required tasks to run redhawk and change the context in avo_config.tcl

 ]


2. Add below IPs to variable extra_iplist in script scripts/con/block_config.tcl

"BCM3FFEXCORE_XXXO_UBMP_1P_40 LIB_MIMCAP2X1_UBUMP_BP40_VSS_A_TS3FFE_S0 tsmc3ffe_iopads"


3. Edit run script in avo/fscripts in konsole/terminal with below sed command

block_rhsc_scripts_path="/project/mercury/designers/tvenkata/block_rhsc_scripts"

sed -i "s?\$GEV_GSCRIPT_DIR/avo?$block_rhsc_scripts_path?g" avo/fscripts/add_rdl.innovus.run avo/fscripts/redhawk_sc_static.run avo/fscripts/redhawk_sc_dynamic.run

              OR

sed -i "s?\$GEV_GSCRIPT_DIR/avo?$block_rhsc_scripts_path?g" avo.<TAG>/fscripts/add_rdl.innovus.run avo.<TAG>/fscripts/redhawk_sc_static.run avo.<TAG>/fscripts/redhawk_sc_dynamic.run 


4. Run rhsc target

raven -E avo redhawk_sc_dynamic $MY_BLOCK


https://docs.google.com/presentation/d/1EjDEBHMryJ4r9TDBvP4QIHEWfyfgYFcPTFDUD8Osfo0/edit?slide=id.p3#slide=id.p3