Apply ECO Changes in Fusion Compiler
Apply PrimeTime-generated ECO changes incrementally in Fusion Compiler.
fc/scripts/setup.tcl file starting from the current directory.fc/scripts/setup.tcl to extract DESIGN_NAME and PROJECT_PATH.$PROJECT_PATH/fc/scripts/eco_changes.tcl
$PROJECT_PATH/fc/${DESIGN_NAME}.dlibfc/scripts/flows/run_eco.tcl exists.flows/run_eco.tcl.TIMESTAMP=$(date +%Y%m%d_%H%M%S)
cp -a $PROJECT_PATH/fc/${DESIGN_NAME}.dlib $PROJECT_PATH/fc/backup_eco_${TIMESTAMP}.dlib
cp -a $PROJECT_PATH/fc/output $PROJECT_PATH/fc/output_backup_${TIMESTAMP}
cd $PROJECT_PATH/fc && mkdir -p scripts report output temp
cd $PROJECT_PATH/fc/temp && fc_shell -f ../scripts/flows/run_eco.tcl 2>&1 | tee ../report/run_eco.log
ECO typically takes 1-5 minutes. Use run_in_background: true if needed, or the nohup pattern:
cd $PROJECT_PATH/fc/temp && nohup fc_shell -f ../scripts/flows/run_eco.tcl > ../report/run_eco.log 2>&1 &
echo $! > /tmp/.fc_eco_pid
The ECO flow (stages/eco.tcl) produces the same reports as the DFM + output stages. Check:
DRC: Parse fc/report/dfm_drc.rpt
TOTAL VIOLATIONS = must be 0Total number of open nets = must be 0Total number of antenna violations = must be 0LVS: Parse fc/report/dfm_lvs.rpt
Total number of short violations is must be 0Total number of open nets is must be 0Total number of floating route violations is must be 0Timing (setup): Parse fc/report/final_timing.rpt
slack (MET) -- must not be (VIOLATED)Timing (hold): Parse fc/report/final_timing_hold.rpt
slack (MET) -- must not be (VIOLATED)Power: Parse fc/report/final_power.rpt
QoR: Parse fc/report/final_qor.rpt
No. of Violating Paths: must be 0Verify new outputs:
ls -la $PROJECT_PATH/fc/output/${DESIGN_NAME}_pt.v \
$PROJECT_PATH/fc/output/${DESIGN_NAME}_lvs.v \
$PROJECT_PATH/fc/output/${DESIGN_NAME}.sdc \
$PROJECT_PATH/fc/output/${DESIGN_NAME}.gds \
$PROJECT_PATH/fc/output/${DESIGN_NAME}.def
Same as /check-reports eco.
flows/run_full.tcl or create_lib during ECO.run_eco.log (append iteration number if tracking).