ucs_setup_fix

Usage Guide — Single-Corner Setup ECO Fix (Perl)

Scriptucs_setup_fix
Version4.2
Modified2026-03-31
PurposeParse setup timing reports and generate setup ECO recommendations
EnvironmentStandalone Perl (packaged executable), RHEL7 / RHEL8
Supporttech@universalchipstudio.com
Quick Nav: Features Quick Start Published Paths Options Strategies Filters Output Examples

Key Features

Quick Start

# Bottleneck strategy (default) — fix 1 high-occurrence cell per path
ucs_setup_fix -report setup.rpt -ref_lib lib.json

# Max delay: fix 3 worst delay cells per path
ucs_setup_fix -report setup.rpt -ref_lib lib.json \
    -strategy max_delay -num_cells 3

# Combined methods with custom output name and parallel parsing
ucs_setup_fix -report "rpt/*.rpt.gz" -ref_lib lib.json \
    -strategy bottleneck -method size_up,swap_vt \
    -output my_eco -jobs 4

Published Paths

LocationPath
Source verified/sta/setup/perl_modular/bin/ucs_setup_fix.pl + lib/SetupUtils.pm
RHEL7 executable publish/redhat7/sta/setup/perl_modular/bin/ucs_setup_fix
RHEL8 executable publish/redhat8/sta/setup/perl_modular/bin/ucs_setup_fix

Options

Required

OptionTypeDescription
-reportstring Timing report file path or glob pattern. Supports compressed (.gz) files. required repeatable
-ref_libstring JSON cell library file (produced by ucs_dump_lib_cell_attribute.tcl). required

Input & Parsing

OptionTypeDefaultDescription
-typestring setup Input type: setup (timing report) or cell_list (flat cell list).
-formatstring auto Report format: auto, pt (PrimeTime), or innovus_stylus. Auto-detection examines the report header.
-path_split_markerstring Startpoint: Line marker used to split timing paths in the report.
-jobsinteger 1 Number of parallel worker processes for report parsing. Set >1 for multi-file speedup.

Fix Strategy & Method

OptionTypeDefaultDescription
-strategystring bottleneck Fix priority strategy: worst_slack, bottleneck, max_delay, path_count, or all.
-methodstring size_up Sizing method: size_up, swap_vt, or comma-separated combo size_up,swap_vt.
-levelinteger 1 Sizing level (1–4). Higher levels attempt larger cell jumps.
-num_cellsinteger 1 Target number of successfully sized cells per path.
-slackfloat 0 Slack window: only paths with WNS below this value are considered.
-ps_thresholdfloat — Minimum slack improvement threshold in ps to accept a fix.

Cell & Instance Filters

OptionTypeDefaultDescription
-do_usestring— Whitelist file: only cells listed here are eligible candidates. Applied before dont_use.
-dont_usestring— Blacklist file: cells listed here are excluded from candidates. Supports wildcards (* and ?), e.g. *ELVT, *ULVT.
-dont_touchstring— Instance protection file: instances listed here are never modified.
-size_only_inststring— Instance constraint file: listed instances allow drive sizing only (no VT swap).
-swap_only_inststring— Instance constraint file: listed instances allow VT swap only (no drive sizing).
-size_only_refstring— Reference cell constraint file: listed reference cells allow drive sizing only.
-swap_only_refstring— Reference cell constraint file: listed reference cells allow VT swap only.
-max_size_pin_countinteger 9 Cells with more than N input pins are restricted to VT swap only (no drive sizing).

Output

OptionTypeDefaultDescription
-outputstringauto Custom output basename. Generates <basename>.tcl, <basename>.log, <basename>.txt. If omitted, auto-generates UCS timestamped names.
-eco_modestring catch ECO Tcl command format: catch (wrapped in catch for safety) or ucs_size_cell.
-debugflagoff Enable debug output.
-verboseflagoff Enable verbose progress output.
--help / -hflag— Show help and exit.
Wildcard support in dont_use: The -dont_use file supports shell-style wildcards. Each line is a pattern matched against cell names. For example, *ELVT excludes all cells ending in ELVT, *ULVT excludes all ULVT cells, and BUFFD?BWP* matches any single-character drive BUF cells.

Fix Strategies

StrategySort KeyBehavior
bottleneck Occurrence DESC, max_delay DESC Fix high-impact cells first (cells appearing in the most paths). Maximizes path coverage with minimum cell changes.
max_delay Max delay DESC, occurrence DESC Fix worst-delay cells first. Targets cells with the largest timing contribution.
worst_slack Worst slack ASC Fix cells on the most critical paths first.
path_count Path count DESC Fix cells present in the most paths.
all — Attempt to size every unique cell from every path. No coverage-based stopping.

Output Files

FileContent
<basename>.tcl ECO Tcl commands (size_cell wrapped in catch, or ucs_size_cell)
<basename>.log Detailed log with coverage statistics, path analysis, and sizing decisions
<basename>.txt Summary report with cell-level and path-level statistics

Usage Examples

Default Bottleneck Fix

ucs_setup_fix -report setup.rpt -ref_lib tsmc_n3c.json

Fix 1 high-occurrence cell per path using the bottleneck strategy.

Max Delay with Multiple Cells

ucs_setup_fix -report setup.rpt -ref_lib tsmc_n3c.json \
    -strategy max_delay -num_cells 5

Fix the 5 worst-delay cells per path.

Combined Methods with Whitelist and Blacklist

ucs_setup_fix -report setup.rpt -ref_lib tsmc_n3c.json \
    -method size_up,swap_vt \
    -do_use allowed_cells.txt \
    -dont_use blocked_cells.txt

Try both size_up and swap_vt, using only whitelisted cells minus blacklisted cells.

Parallel Parsing with Custom Output

ucs_setup_fix -report "rpt/*.rpt.gz" -ref_lib tsmc_n3c.json \
    -strategy bottleneck -num_cells 2 \
    -output corner_ff -jobs 8

Parse all matching report files with 8 workers, output as corner_ff.tcl / corner_ff.log / corner_ff.txt.

Instance Protection and Constraints

ucs_setup_fix -report setup.rpt -ref_lib tsmc_n3c.json \
    -dont_touch protected_instances.txt \
    -size_only_inst drive_only.txt \
    -swap_only_ref vt_swap_refs.txt \
    -max_size_pin_count 6

Level 2 Sizing with All Strategy

ucs_setup_fix -report setup.rpt -ref_lib tsmc_n3c.json \
    -strategy all -method size_up,swap_vt -level 2

Aggressive fix: attempt every cell with 2-step sizing jumps.