使用条件
运行 ucs_setup_smart_fix 前,需要先准备各 corner 的 timing report、cell delay JSON 和 cell metadata JSON。
| 输入 | 准备方式 | Smart Fix 配置 |
|---|---|---|
| Corner cell delay | ucs_lib_parser 直接解析每个 corner 的 .lib / .lib.gz,生成包含 timing arc 和 delay table 的 per-corner JSON。 | corners[].cell_data_files |
| Cell metadata | ucs_dump_lib_cell_attribute.tcl 必须在已加载目标库的 PrimeTime 会话中执行,导出 cell attribute JSON。 | lib_json |
| Timing reports | 为每个 corner 准备 PrimeTime setup timing report 列表。 | corners[].report_list_file |
ucs_lib_parser 负责直接解析 Liberty delay;ucs_dump_lib_cell_attribute 负责从 PrimeTime 环境取得 cell 属性。两者不是两个独立 Smart Fix 流程,而是同一次 Smart Fix 运行所需的数据准备条件。
Quick start
The executable is self-contained. Supply configuration, timing reports, cell timing JSON, and a valid UCS license.
chmod +x ucs_setup_smart_fix_RHEL8 ./ucs_setup_smart_fix_RHEL8 --config smart_fix.json
Configuration
Each corner uses a report-list file and one or more cell timing JSON files. Report lists accept globs and .gz files.
{
"corners": [{
"name": "ss_0p72v_125c",
"report_list_file": "reports/ss.list",
"cell_data_files": ["lib/ss_cells.json"],
"target_slack": 0.0,
"slack_window": [-200.0, 20.0]
}],
"lib_json": "lib/cell_metadata.json",
"method": "size_up,swap_vt",
"strategy": "worst_slack",
"ps_threshold": 1.0,
"output_dir": "./ucs_output",
"filters": {
"dont_touch_file": "filters/dont_touch.list",
"max_size_pin_count": 9,
"area_ratio": 1.5
},
"physical_blocks": [{
"name": "cpu",
"timing_prefix": "top/u_cpu/",
"def_file": "physical/cpu.def.gz",
"lef_file": "physical/lef.list"
}]
}Report list
# One path or glob per line rpts/pt_route_ss/*.rpt.gz /runs/project_a/rpts/setup_top.rpt
A positive target_slack automatically expands the upper slack-window bound so margin paths are retained.
Command line
CLI values override JSON.
| Option | Purpose |
|---|---|
| -c, --config | Required configuration JSON. |
| --output-dir / --output-eco | Override output root and ECO filename. |
| --lib-json | Cell metadata for candidate grouping. |
| --method | size_up, swap_vt, or both. |
| --strategy | worst_slack, bottleneck, max_delay, or path_count. |
| --corner-target | Repeatable CORNER:PS target override. |
| --ps-threshold | Minimum improvement in at least one corner. |
| --include-io | Include I/O paths; default is register-to-register. |
| --def-file / --lef-file | Legacy single-block physical inputs. |
| --dont-touch | Instance wildcard blacklist. |
| --size-only-inst / --swap-only-inst | Restrict matching instances by change axis. |
| --size-only-ref / --swap-only-ref | Restrict matching candidate references. |
| --max-size-pin-count / --area-ratio | Metadata-based candidate limits. |
| --debug | Level 0–4, capped by the license. |
./ucs_setup_smart_fix_RHEL8 \ --config smart_fix.json \ --corner-target ss_0p72v_125c:5.0 \ --strategy bottleneck \ --method size_up,swap_vt --debug 1
Decision rules
A change is committed only after every configured corner agrees it is safe.
Physical-aware sizing
With DEF and LEF, increased width is checked against the next solid obstacle in the placement row.
Top timing names map into subblock DEF files through physical_blocks[].timing_prefix. Placed fillers, well taps, endcaps, and covers count as removable whitespace; fixed cells remain obstacles.
Without matching DEF data, the module stays timing-fixable and is not physically checked. Missing physical data never blocks a timing fix.
Output files
Each invocation creates a timestamped directory.
The ECO uses guarded commands:
catch { size_cell [get_cells {top/u_cpu/U123}] BUFFD4_LVT }The execution log is created in the current working directory as ucs_setup_smart_fix_YYYYMMDD_HHMMSS.log.
License & runtime
| Platform | Linux x86_64; use the matching RHEL7/RHEL8 build. |
| Dependencies | No Python or NumPy. System openssl validates the UCS license. |
| License search | Executable directory, .COMMON/, then parent directories. |
| Network | No network service or listening port. |
Troubleshooting
| Message | Check |
|---|---|
| license check failed | License file, expiry, user authorization, and openssl. |
| missing Point column | Use PrimeTime -capacitance -transition_time -nets -input_pins. |
| no timing reports | Report-list paths and globs; relative entries resolve from the execution directory. |
| no fixes generated | Slack window, targets, candidate data, filters, timing tables, and threshold. |
UniversalChip Studio Support
Technical: tech@universalchipstudio.com
Business: support@universalchipstudio.com