ucs_drv_fix.tcl

Usage Guide — UCS DRV Fix ECO Generator

Scriptucs_drv_fix.tcl
VersionUCS-1.2.0
Modified2026-03-19
PurposeAnalyze DRV violation lists and generate ECO Tcl grouped by violation type with configurable fix methods
EnvironmentPrimeTime (pt_shell) — analysis & ECO generation. Fusion Compiler / ICC2 — ECO execution only.
Supporttech@universalchipstudio.com
Quick Nav: Features Quick Start Arguments Violations Config Methods Config Method Sequence Config Key Reference Success / Failure Output ECO Execution Ref Lib Format Dependencies Debug Workflow Examples

Key Features

Quick Start

# In pt_shell with design loaded:
source /path/to/ucs_drv_fix.tcl

ucs_drv_fix \
    -violations_config /proj/run/drv/violations.config \
    -methods_config    /proj/run/drv/fix_method.config \
    -ref_lib           /proj/run/drv/lib_cell_info.txt.tcl \
    -eco               /proj/run/drv/eco_output.tcl \
    -debug 1
# Minimal — insert_buffer only (no -ref_lib needed)
ucs_drv_fix \
    -violations_config max_cap.violations_config \
    -methods_config    max_cap_bufonly.methods_config \
    -eco               eco_output.tcl

Arguments

OptionTypeDefaultDescription
-violations_configstring required Path to a violation config file. Maps violation type names to violation list file paths. One type: filepath mapping per line. See Violations Config Format.
-methods_configstring required Path to a methods config file. Defines the ordered method sequence and all per-method switches for each violation type. One type { ... } block per type. See Methods Config Format.
-ref_libstring— Path to cell library file (Tcl dict format defining ::cell_library_dict). Optional overall, but required when any violation type uses size_up, size_cell, or swap_vt. The script validates this at startup and exits with an error if a sizing method is configured without -ref_lib. See Ref Lib Format.
-ecostring— ECO output file path. The actual filename is auto-timestamped: <base>.YYYYMMDD.HH.tcl (based on the provided path). If omitted, ECO commands are accumulated in memory and only reported via log messages — no file is written.
-debug0–40 Debug verbosity level. The final effective level is license-controlled: effective = min(requested, licensed_max). If the requested level exceeds the licensed maximum, the script prints a notice and automatically downgrades.

0 — Off (production mode, no debug output)
1 — Flow-level: stage entry/exit, key I/O summary, basic command record
2 — Decision-level: branch decisions, filtering rationale, sizing chain trace
3 — Data-level: intermediate data dumps, structured dump files, fuller command trace
4 — Deep-diagnosis: raw state snapshots, Dumper output, highest-granularity detail
-investigatebooleanoff Add gui_add_annotation visualization commands to the ECO file for clustering investigation. Forces debug ≥ 1. Useful for visually inspecting cluster assignments in the GUI.
-helpboolean— Display detailed help message and exit. Does not require a loaded design.

Violations Config Format

One violation type per line. Each line maps a type name to its violation list file path. Lines starting with # are comments. Blank lines are ignored.

# violations.config — maps violation types to file paths
data_tran:   /proj/run/drv/data_tran.list
clock_tran:  /proj/run/drv/clock_tran.list
max_cap:     /proj/run/drv/max_cap.list
max_fanout:  /proj/run/drv/max_fanout.list

Violation List File Format

Each line defines one violation. Three formats are supported. Comments (#) and blank lines are ignored. Inline comments after data fields are stripped.

FormatExampleBehavior
<net_name> [limit] [slack]top/u_data/net123 0.120 -0.035First token treated as net name (implicit net target).
net <net_name> [limit] [slack]net top/u_data/net123 0.120 -0.035Explicit net target. net prefix consumed.
pin <pin_name> [limit] [slack]pin top/u_ifc/cell_A/Z 0.050 -0.015Pin target. Auto-resolved to net via get_nets -of_objects [get_pins ...] before processing.
Deduplication: Resolved nets are deduplicated across all violation types. If the same net appears in both data_tran and max_cap, it is processed only once (first occurrence wins). Pin-to-net resolution may produce the same net from different pins.
# max_cap.list — real example
TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSNET_50445 75.800000 -19.824252
pin TCDX/tcdx_ctrl/TREQQ/FxOptCts_ctmTdsLR_1_1567216/A2 75.800000 -10.605518
TCDX/tcdx_ctrl/TREQQ/SHIFTQ/tmp_net1578978 75.800000 -10.411594

Methods Config Format

One block per violation type. Each block contains key: value pairs controlling fix behavior. Lines starting with # are comments. Unknown keys trigger a warning.

# fix_method_fallback.config — Multi-type with fallback mode
# Try methods left to right, stop at first success

data_tran {
    fix_method:      size_cell,insert_buffer,clone_driver
    fix_method_mode: fallback
    fix_level:       2
    size_level:      1
    dont_touch_inst: /proj/cfg/dont_touch_inst.txt
    dont_size_ref:   *ISO*,*LS*
    insert_buffer_list:             BUFX4,BUFX8
    insert_buffer_cluster:          nature_on_route
    insert_buffer_first_distance_ratio:    0.5
    insert_buffer_repeater_distance_ratio: 0.9
    insert_buffer_exclude_hardmacro:       1
    enable_clone:    1
    clone_threshold: 8
}

clock_tran {
    fix_method:      insert_buffer
    fix_method_mode: fallback
    insert_buffer_list:    CKBUFX4,CKBUFX8
    insert_buffer_cluster: nature_on_route
    insert_buffer_first_distance_ratio:    0.3
    insert_buffer_repeater_distance_ratio: 0.8
}

max_cap {
    fix_method:      size_cell,swap_vt,insert_buffer
    fix_method_mode: fallback
    fix_level:       2
    dont_size_ref:   *ISO*,*LS*,*TIE*
    dont_swap_ref:   *ISO*,*LS*,*TIE*
    insert_buffer_list:    BUFX4,BUFX8,BUFX12
    insert_buffer_cluster: smart_cluster
    cluster_max_groups:    0
    cluster_min_fanout:    4
    cluster_min_group_pins: 3
}

max_fanout {
    fix_method:      clone_driver,insert_buffer
    fix_method_mode: fallback
    enable_clone:    1
    clone_threshold: 12
    insert_buffer_list:    BUFX8,BUFX12
    insert_buffer_cluster: smart_cluster
}
# max_cap.methods_config — Pipeline mode with all methods
# All methods run sequentially regardless of success

max_cap {
    fix_method:     size_up,swap_vt,insert_buffer,clone_driver
    fix_method_mode: pipeline
    insert_buffer_list:  BUFFD1BWP136P5M156H3P48CPDLVT
    insert_buffer_cluster: nature_on_route
    insert_buffer_first_distance_ratio:    0.4
    insert_buffer_repeater_distance_ratio: 0.7
    insert_buffer_exclude_hardmacro:       1
    cluster_min_fanout:  4
    clone_threshold:     4
    fix_level: 2
}

Method Sequence & Modes

fix_method

Comma-separated ordered list of method names. Methods are tried in order. Supported values:

MethodActionECO Command GeneratedRequires
size_up / size_cellUpsize driver cell to higher drive strength within the same VT type. Uses resistance-based sorting (lower resistance = stronger).size_cell <inst> <new_ref>-ref_lib
swap_vtSwap driver cell to a faster VT variant within the same drive strength. Uses resistance-based sorting (lower resistance = faster VT).size_cell <inst> <new_ref> ;# VT swap (level N)-ref_lib
insert_bufferInsert buffer on the violated net. Three sub-modes: nature_on_route (FC native), smart_cluster (k-means clustering), interface (interface-aware).add_buffer_on_route or ucs_cluster_insert_bufferinsert_buffer_list
clone_driverClone the driver instance and split fanout across clusters. Each clone serves one cluster's sink pins.ucs_cluster_clone_driverfanout ≥ clone_threshold
size_cell vs size_up: size_cell is treated identically to size_up. Both names are accepted. Method names are case-sensitive. Unknown method names are ignored with a warning.

fix_method_mode

ModeBehavior
fallback defaultTry methods left-to-right. Stop at first success. Remaining methods are skipped. The successful method is recorded in statistics.
pipelineRun all methods sequentially regardless of success. All successful methods are recorded. Useful for combined actions such as size_cell + insert_buffer.

Cumulative Sizing Chain

When fix_level is specified and consecutive sizing methods (size_up, size_cell, swap_vt) appear in the method list, they share a cumulative sizing budget. The first method consumes as many steps as it can, and remaining budget passes to the next sizing method. Only one size_cell ECO command is emitted for the final result.

# Example: fix_level: 3, methods: size_cell,swap_vt,insert_buffer
# Step 1: size_cell uses 2 steps (INVD2→INVD4, remaining budget = 1)
# Step 2: swap_vt uses 1 step (INVD4_HVT→INVD4_LVT, remaining budget = 0)
# Result: single ECO: size_cell inst INVD4_LVT
# Step 3: insert_buffer runs independently (not a sizing method)

Config Key Reference

Common Keys

KeyTypeDefaultDescription
fix_methodstring—Ordered comma-separated method list for this violation type.
fix_method_modestringfallbackMethod execution mode: fallback or pipeline.
dont_touch_instfile path—Path to a file listing wildcard instance patterns (one per line). Instances matching any pattern are skipped by size_up and swap_vt. Note: this is a file path, not an inline pattern string.

Size_up / Size_cell Keys

KeyTypeDefaultDescription
fix_levelinteger—Shared cumulative sizing budget across consecutive size_cell/size_up/swap_vt methods. When present, overrides size_level and swap_level. Methods consume from this shared budget sequentially.
size_levelinteger1Legacy per-method step count for size_cell/size_up. Used only when fix_level is not specified.
dont_size_refstring—Comma-separated wildcard ref patterns that must not be upsized. Example: *ISO*,*LS*,*TIE*. Inline patterns, not a file path.
max_size_pin_countinteger9Cells with library pin_count exceeding this threshold are excluded from size_up/size_cell. swap_vt is still allowed. Prevents upsizing complex cells (e.g., AOI222 with 5+ pins).

Swap_vt Keys

KeyTypeDefaultDescription
swap_levelinteger1Legacy per-method step count for swap_vt. Used only when fix_level is not specified.
dont_swap_refstring—Comma-separated wildcard ref patterns that must not be VT-swapped. Inline patterns, not a file path.

Insert_buffer Keys

KeyTypeDefaultDescription
insert_buffer_liststring—Comma-separated candidate buffer cell ref names. Current buffer selection is simple: first legal candidate from the list is used.
insert_buffer_clusterstring—Buffer insertion sub-mode. Supported values: nature_on_route, smart_cluster, interface. See table below.
insert_buffer_first_distance_ratiofloat—First buffer insertion distance as a ratio of total net route length. Used by nature_on_route mode. Example: 0.4 = 40% from driver.
insert_buffer_repeater_distance_ratiofloat—Repeater spacing as a ratio of total net route length. Used by nature_on_route mode. Example: 0.7 = repeaters every 70% of remaining length.
insert_buffer_exclude_hardmacro0/10When enabled, route-based insertion tries to avoid hard macros or hard blocks (if the tool supports the required attributes).
insert_buffer_first_distancefloat—Absolute first distance in microns. Required when insert_buffer_cluster: interface.
insert_buffer_repeater_distancefloat—Absolute repeater distance in microns. Required when insert_buffer_cluster: interface.

Insert Buffer Sub-Modes

ModeECO CommandDescription
nature_on_routeadd_buffer_on_route [get_nets N] BUF -first_distance_length_ratio R1 -repeater_distance_length_ratio R2 -no_legalizeUses FC/ICC2 native add_buffer_on_route command. Distance ratios control placement. -no_legalize is currently hardcoded.
smart_clusterucs_cluster_insert_buffer -net N -lib_cell C -max_groups G -min_fanout F -min_group_pins P -executeK-means clustering of sink pins by physical location. One buffer inserted per cluster at weighted centroid.
interfaceucs_insert_interface_buffer ... -executeInterface-aware buffer insertion using absolute distances. Resolves interface anchors from the violation target.

Clone_driver Keys

KeyTypeDefaultDescription
enable_clone0/10Enable or disable clone_driver for this violation type. When 0, clone_driver is skipped even if listed in fix_method.
clone_thresholdinteger8Minimum number of input-direction fanout pins required before clone_driver succeeds. If fanout is below threshold, clone is skipped and the method returns failure.

Cluster Control Keys

Used by both insert_buffer_cluster: smart_cluster and clone_driver.

KeyTypeDefaultDescription
cluster_max_groupsinteger0Maximum number of sink clusters. 0 = auto-detect optimal K using the elbow method (WCSS analysis). Range: 2 to min(5, num_pins/2).
cluster_min_fanoutinteger4Minimum number of sink pins required before clustering is attempted. Nets with fewer sinks are not clustered.
cluster_min_group_pinsinteger3Minimum number of pins per cluster after merge. Clusters smaller than this are merged into the nearest neighbor cluster by centroid distance.

Success / Failure Rules

MethodSuccess ConditionFailure Conditions
size_up / size_cellA larger legal replacement ref is found in the library for the resolved leaf driver.No larger cell in library; driver is input-port-driven; ref not found in cell_library_dict; blocked by dont_touch_inst, dont_size_ref, or max_size_pin_count; already at maximum drive strength in group.
swap_vtA faster-VT legal replacement ref is found in the library (same drive strength).No faster VT variant in library; blocked by dont_touch_inst or dont_swap_ref; already at fastest VT in group.
insert_bufferThe selected buffer mode can emit a valid ECO command for the target net.Net not found in design; no buffer candidates in insert_buffer_list; empty net collection.
clone_driverCloning is enabled (enable_clone: 1) AND the net's input fanout ≥ clone_threshold.enable_clone: 0; fanout below threshold; clustering fails to produce ≥ 2 clusters.

Output Files

FileLocationDescription
<eco>.YYYYMMDD.HH.tclPath from -ecoECO commands grouped by violation type. Each net section includes comment headers: Net, Type, Limit/Slack, Source, Driver (current ref). UCS clustered commands require ucs_drv_fix.tcl to be sourced before the ECO file.
ucs_drv_fix_YYYYMMDD_HHMMSS.logCurrent working directoryFull execution log with timestamped entries. Contains INFO/WARN/ERROR/DEBUG messages with stage, PID, user, and run ID.
debug/run_<id>/<stage>/Current working directoryDebug dump files. Generated when -debug ≥ 3. Organized by stage: 00_init/, 10_parse/, 20_analyze/, 30_generate/.

ECO File Structure

################################################################################
# UCS DRV Fix ECO Commands (ONE METHOD PER VIOLATION)
################################################################################
# Generated by: UCS DRV Fix UCS-1.2.0
# Date: Sat Apr 11 06:32:28 EDT 2026
# Host: atlsers0281.amd.com
# Total ECO commands: 6
# Fixed violations: 3
################################################################################

################################################################################
# Violation Type: max_cap
# Number of ECO commands: 6
################################################################################

################################################################################
# Net: TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSNET_50445
# Type: max_cap, Limit: 75.8, Slack: -19.824252
# Source: net TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSNET_50445
# Driver: TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSINV_102_445802 (INVD2SPG1AMDBWP136P5M156H3P48CPDLVT)
################################################################################
size_cell TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSINV_102_445802 INVD4SPG1AMDBWP136P5M156H3P48CPDLVT
add_buffer_on_route [get_nets TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSNET_50445] BUFFD1BWP136P5M156H3P48CPDLVT -first_distance_length_ratio 0.4 -repeater_distance_length_ratio 0.7 -no_legalize

ECO Execution in FC / ICC2

ECO files generated in PrimeTime are sourced in Fusion Compiler or ICC2 for implementation. The require_primetime check only runs inside the ucs_drv_fix proc, not when the script is sourced. So sourcing ucs_drv_fix.tcl in FC/ICC2 is safe — it only loads the proc definitions and ECO executor commands.

# In fc_shell or icc2_shell with design loaded:
source /path/to/ucs_drv_fix.tcl           ;# loads ucs_cluster_insert_buffer, ucs_cluster_clone_driver procs
source eco_output.20260413.06.tcl          ;# executes ECO commands
legalize_placement                          ;# legalize inserted buffers and clones
Important: ucs_drv_fix.tcl must be sourced before the ECO file because ucs_cluster_insert_buffer and ucs_cluster_clone_driver are UCS-defined procs (not FC built-in commands). Without sourcing the script first, these ECO commands will fail with "invalid command name".

ECO Executor Commands

These procs are defined as top-level Tcl commands (via define_proc_attributes) for use inside ECO files:

ucs_cluster_insert_buffer

ucs_cluster_insert_buffer \
    -net {net_name} \
    -lib_cell {BUFFD1BWP136P5M156H3P48CPDLVT} \
    [-max_groups 0] \
    [-min_fanout 4] \
    [-min_group_pins 3] \
    -execute

Clusters net sink pins using k-means, inserts one buffer per cluster at the weighted centroid location. -execute is required for actual execution; without it, the command is a no-op.

ucs_cluster_clone_driver

ucs_cluster_clone_driver \
    -net {net_name} \
    [-max_groups 0] \
    [-min_fanout 4] \
    [-min_group_pins 3] \
    -execute

Clusters net sink pins, creates one clone of the driver per cluster. Each clone is connected to its cluster's sinks. The original driver keeps cluster_0. Clone instances are named <driver>_ECO_CLONE_<date>_<NN>.

Ref Lib File Format

A Tcl file that defines ::cell_library_dict as a dict. Each entry maps a cell ref name to its attributes. The file is sourced by the cellsizer during library loading.

set ::cell_library_dict {
    BUFFD1BWP136P5M156H3P48CPDLVT {
        area            0.029952
        base_name       "BUFFD"
        size_base_name  "BUFFDSPG1AMDBWP136P5M156H3P48CPD"
        swap_base_name  "BUFFDSPG1AMDBWP136P5M156H3P48CPD"
        vt_type         "LVT"
        drive_strength  1
        pin_count       2
        resistance {
            average 2.633
            fall    2.682
            rise    2.583
        }
    }
    BUFFD2BWP136P5M156H3P48CPDLVT {
        area            0.044928
        base_name       "BUFFD"
        size_base_name  "BUFFDSPG1AMDBWP136P5M156H3P48CPD"
        swap_base_name  "BUFFDSPG1AMDBWP136P5M156H3P48CPD"
        vt_type         "LVT"
        drive_strength  2
        pin_count       2
        resistance {
            average 1.316
            fall    1.341
            rise    1.291
        }
    }
}

Cell Attribute Fields

FieldPurpose
base_nameCell family base name (without drive/VT suffix).
size_base_namesize_up grouping key. Cells with the same size_base_name + vt_type are in one group, sorted by resistance descending.
swap_base_nameswap_vt grouping key. Cells with the same swap_base_name + drive_strength are in one group, sorted by resistance descending.
vt_typeThreshold voltage type: ULVT, SLVT, LVT, RVT, HVT.
drive_strengthNumeric drive strength (1, 2, 4, 8, etc.).
pin_countTotal pin count. Used by max_size_pin_count filter.
resistance { average N fall N rise N }Output resistance. average is the primary sort key for both size_up and swap_vt. Lower resistance = stronger driver / faster VT.

Dependencies

The script sources 5 common library files at startup. Libraries are auto-located by searching upward from the script directory for a common/lib/tcl_lib/ directory.

LibraryPurpose
ucs_tcl_common_utils.tclLogging, formatting, tool detection, progress display.
ucs_tcl_dict_compat.tclTcl 8.3 dict command compatibility shim.
ucs_tcl_license_check.tclLicense validation, debug-level authorization (RSA+AES).
ucs_tcl_snps_common.tclCell sizing engine (cellsizer) and k-means clustering engine.
ucs_tcl_snps_drv_fix_utils.tclLow-level fix method implementations, driver resolution, ECO generation.

Debug & Diagnostics

OptionTypeDefaultDescription
-debuginteger (0-4)0 Debug verbosity level. Gated by license authorization:
1 = Flow-level (stage entry/exit, driver identification, method results)
2 = Decision-level (sizing chain trace, method selection rationale)
3 = Data-level (effective config dump, violation list dump, ECO command trace)
4 = Deep-diagnosis (raw state snapshots, clustering coordinates)

Log file: Automatically created as ucs_drv_fix_<YYYYMMDD_HHMMSS>.log in the current directory. Every log entry includes: timestamp, level, script name, run_id, PID, user, stage, and message.

[2026-04-11 06:32:28] [DEBUG] [ucs_drv_fix] [20260411_063227] [pid:1647017] [user:huiyinli] [20_analyze]       Driver: TCDX/tcdx_ctrl/TDATQCHAN0/FxPlace_HFSINV_102_445802 (INVD2SPG1AMDBWP136P5M156H3P48CPDLVT)
[2026-04-11 06:32:28] [DEBUG] [ucs_drv_fix] [20260411_063227] [pid:1647017] [user:huiyinli] [20_analyze]       Shared fix_level: 2
[2026-04-11 06:32:28] [DEBUG] [ucs_drv_fix] [20260411_063227] [pid:1647017] [user:huiyinli] [20_analyze]       size_up moved 1 step(s): INVD2SPG1AMDBWP136P5M156H3P48CPDLVT -> INVD4SPG1AMDBWP136P5M156H3P48CPDLVT

Workflow Diagram

  pt_shell (design loaded)
        |
        v
  +------------------+
  | source script    |  <-- loads procs + common libs
  +------------------+
        |
        v
  +------------------+
  | ucs_drv_fix      |  <-- CLI arguments
  +------------------+
        |
        v
  +------------------+
  | License Check    |  <-- .ucs_license.conf (RSA+AES)
  +------------------+
        |
        v
  +------------------+
  | Load Ref Lib     |  <-- cell_library_dict (if -ref_lib)
  | Build Sort Lists |      build_size_up_lists, build_swap_vt_lists
  +------------------+
        |
        v
  +------------------+
  | Parse Configs    |  <-- violations.config + methods.config
  +------------------+
        |
        v
  +------------------+
  | Load Violations  |  <-- per-type violation list files
  +------------------+
        |
        v  (per violation)
  +------------------+
  | Resolve Driver   |  <-- all_connected -leaf (handles hierarchy)
  +------------------+
        |
        v
  +------------------+     +------------------+     +------------------+
  | size_up/swap_vt  |     | insert_buffer    |     | clone_driver     |
  | (sizing chain)   |     | (route/cluster)  |     | (k-means clone)  |
  +------------------+     +------------------+     +------------------+
        |                         |                         |
        +-------------------------+-------------------------+
                                  |
                                  v
                        +------------------+
                        | ECO File Save    |  <-- grouped by violation type
                        +------------------+
                                  |
                                  v
                        +------------------+
                        | Statistics &     |
                        | Summary Report   |
                        +------------------+

  -------- Execution Phase (separate session) --------

  fc_shell / icc2_shell (design loaded)
        |
        v
  +------------------+
  | source script    |  <-- loads ECO executor procs
  +------------------+
        |
        v
  +------------------+
  | source ECO file  |  <-- size_cell, add_buffer_on_route,
  +------------------+      ucs_cluster_insert_buffer,
        |                    ucs_cluster_clone_driver
        v
  +------------------+
  | legalize_placement|
  +------------------+

Usage Examples

Conservative Data-Transition Repair

ucs_drv_fix \
    -violations_config data_tran.violations_config \
    -methods_config data_tran_conservative.methods_config \
    -ref_lib lib_cell_info.txt.tcl \
    -eco eco_data_tran.tcl

Config: fix_method: size_cell,swap_vt — try upsizing, then VT swap. No buffer insertion.

Buffer-First Repair (No Ref Lib Needed)

ucs_drv_fix \
    -violations_config max_cap.violations_config \
    -methods_config max_cap_bufonly.methods_config \
    -eco eco_max_cap.tcl

Config: fix_method: insert_buffer + insert_buffer_cluster: nature_on_route — route-based buffer insertion only. No -ref_lib required.

Aggressive Fallback (All Methods)

ucs_drv_fix \
    -violations_config all_violations.config \
    -methods_config full_fallback.methods_config \
    -ref_lib lib_cell_info.txt.tcl \
    -eco eco_aggressive.tcl \
    -debug 1

Config: fix_method: size_cell,swap_vt,insert_buffer,clone_driver + fix_method_mode: fallback — try all methods, stop at first success.

Combined Sizing + Buffering (Pipeline)

ucs_drv_fix \
    -violations_config max_cap.violations_config \
    -methods_config max_cap_pipeline.methods_config \
    -ref_lib lib_cell_info.txt.tcl \
    -eco eco_pipeline.tcl \
    -debug 2

Config: fix_method: size_cell,insert_buffer + fix_method_mode: pipeline — both methods run for every violation, maximizing fix coverage.

Cluster-Oriented Fanout Fix

ucs_drv_fix \
    -violations_config max_fanout.violations_config \
    -methods_config max_fanout.methods_config \
    -eco eco_fanout.tcl \
    -investigate

Config: fix_method: clone_driver,insert_buffer + insert_buffer_cluster: smart_cluster + clone_threshold: 12. With -investigate, clustering assignments are visualized via gui_add_annotation.

Deep Debugging

ucs_drv_fix \
    -violations_config violations.config \
    -methods_config methods.config \
    -ref_lib lib_cell_info.txt.tcl \
    -eco eco_debug.tcl \
    -debug 4

Full diagnostic output. Check ucs_drv_fix_*.log and debug/run_*/ for driver resolution, sizing chain trace, clustering coordinates, and raw state dumps.