Run StarRC Parasitic Extraction
Run StarRC parasitic extraction for all 4 corners.
fc/scripts/setup.tcl file starting from the current directory.fc/scripts/setup.tcl to extract DESIGN_NAME and PROJECT_PATH.$PROJECT_PATH/fc/${DESIGN_NAME}.dlib must contain the ${DESIGN_NAME}_dfm block.$PROJECT_PATH/starrc/scripts/:
extract_cmax_25c.cmdextract_cmax_125c.cmdextract_cmin_25c.cmdextract_cmin_125c.cmdTCAD_GRD_FILE path from one of the .cmd files).if [ -d "$PROJECT_PATH/starrc/spef" ] && [ "$(ls -A $PROJECT_PATH/starrc/spef 2>/dev/null)" ]; then
cp -a $PROJECT_PATH/starrc/spef $PROJECT_PATH/starrc/spef_backup_$(date +%Y%m%d_%H%M%S)
fi
StarRC runs 4 sequential extractions. For this design size (~400 nets), each takes seconds. For larger designs, use background execution.
cd $PROJECT_PATH/starrc && mkdir -p spef temp
cd $PROJECT_PATH/starrc/temp && \
StarXtract -clean ../scripts/extract_cmax_25c.cmd && \
StarXtract -clean ../scripts/extract_cmax_125c.cmd && \
StarXtract -clean ../scripts/extract_cmin_25c.cmd && \
StarXtract -clean ../scripts/extract_cmin_125c.cmd
For larger designs or if timeout is a concern:
cd $PROJECT_PATH/starrc && nohup make run > temp/starrc_run.log 2>&1 &
echo $! > /tmp/.starrc_pid
Then poll for completion.
Check all 4 SPEF files exist and have non-zero size:
ls -la $PROJECT_PATH/starrc/spef/cmax_25c.spef \
$PROJECT_PATH/starrc/spef/cmax_125c.spef \
$PROJECT_PATH/starrc/spef/cmin_25c.spef \
$PROJECT_PATH/starrc/spef/cmin_125c.spef
Check for errors in StarRC summary files:
grep -ri "error" $PROJECT_PATH/starrc/temp/stardir_*/summary/*.sum 2>/dev/null
Check for success.lock files in each stardir:
ls $PROJECT_PATH/starrc/temp/stardir_*/success.lock
=== StarRC Extraction Summary ===
| Corner | SPEF File | Size | Status |
|------------|----------------|----------|--------|
| cmax_25c | cmax_25c.spef | XXX KB | OK |
| cmax_125c | cmax_125c.spef | XXX KB | OK |
| cmin_25c | cmin_25c.spef | XXX KB | OK |
| cmin_125c | cmin_125c.spef | XXX KB | OK |