Release Notes — v2.0-20260712
HeteroSTA3D v2.0-20260712
Released: July 13, 2026
Download: Official HeteroSTA and HeteroSTA3D release page
HeteroSTA3D archive SHA-256: e879e8b9e96c86f357d32a7c766e597693b16806a132bd3cd992f5707c029cbe
Highlights
- Direct integration with 3D EDA tools. In-memory
NetlistDBinput removes file-only handoffs, while the new cell-sizing, topology-query, and batch-read APIs support incremental optimization flows. - All-corner operations. Pass
dc_name="all"toheterosta3d_extract_rc_from_placement,heterosta3d_update_delay, orheterosta3d_update_arrivalsto apply the operation to every existing delay corner. - In-memory netlist input.
heterosta3d_set_netlistdblets an application transfer a pre-builtNetlistDBinto HeteroSTA3D using documented ownership rules. - Transparent die selection through cell-name suffixes. Cells named
*_topand*_bottomare matched to the corresponding die's Liberty data. - New
sizing_demo. The release includes an incremental example usingbatch_update_celltypes → extract_rc → update_delay → update_arrivals → report_wns_tns. - Documented API conventions. Public headers and the API Reference now define index domains, cell-array layout, ownership, pointer lifetime, and CPU/GPU memory rules.
New release APIs
Full signatures and usage requirements are in the API Reference.
| API | Use |
|---|---|
heterosta3d_reset |
Clear timing, netlist, and SDC state while preserving loaded Liberty data |
heterosta3d_set_netlistdb |
Transfer a pre-built NetlistDB into HeteroSTA3D |
heterosta3d_batch_update_celltypes |
Apply a per-cell type list to every delay corner |
heterosta3d_zero_slew |
Zero-initialize input-port slews before reading constraints |
heterosta3d_batch_read_sdc |
Read multiple SDC files for one delay corner |
heterosta3d_ignore_net |
Exclude a net from placement-based RC extraction |
heterosta3d_query_pin_direction |
Query whether a pin is input, output, or unknown |
heterosta3d_internal_get_celltype_of_pin |
Read back the cell type assigned to a pin's cell |
Renamed or changed APIs
heterosta3d_get_num_of_pinsandheterosta3d_get_num_of_netsno longer takedc_name.heterosta3d_get_pin2netnow takesbool use_cudainstead ofdc_name.heterosta3d_net2pin_startis nowheterosta3d_get_net2pin_start, and takesbool use_cudainstead ofdc_name.heterosta3d_net2pin_itemsis nowheterosta3d_get_net2pin_items, and takesbool use_cudainstead ofdc_name.heterosta3d_create_liberty_set_batchnow usesTimerEarlyOrLatewith the constantsEARLYandLATE, replacingearly_late_t,EL_EARLY, andEL_LATE.
The topology-query results are borrowed pointers and must not be freed. Pass use_cuda=false when reading them from host code and use_cuda=true when consuming them on the GPU. Their lengths and lifetimes are documented in the API Reference.
Public enum values
Heterosta3DDie:TOP(0) andBOTTOM(1).TimerEarlyOrLate:EARLY(0) andLATE(1). Use the declaration in the bundled public header.
HeteroSTA dependency compatibility
The two runtime libraries and their headers form one tested release unit. Use the libheterosta.so, libheterosta3d.so, heterosta.h, and heterosta3d.h from the same HeteroSTA3D archive. Do not replace only the bundled HeteroSTA library or header unless that exact combination is explicitly listed as compatible.
The v2.0 archive includes its matched HeteroSTA library and header.
The supported environment is Linux x86-64 with glibc 2.34 or newer, CUDA
Toolkit/runtime 12.8, NVIDIA Linux driver 580.65.06 or newer, OpenSSL 3, and
jansson. GPU mode additionally requires an NVIDIA GPU with compute capability
8.0, 8.6, 8.9, 9.0, or 12.0 (sm_80, sm_86, sm_89, sm_90, or sm_120).
License compatibility
Existing valid, unexpired v1.x HeteroSTA3D licenses can continue to be used with v2.0. A valid, unexpired HeteroSTA license and HeteroSTA3D license are both required at runtime.
Upgrade checklist (v1.1 → v2.0)
- Replace
EL_EARLY/EL_LATEwithEARLY/LATEwhen callingheterosta3d_create_liberty_set_batch. - Replace
heterosta3d_get_num_of_pins(sta, dc_name)withheterosta3d_get_num_of_pins(sta), and updateget_num_of_netsthe same way. - Replace
heterosta3d_get_pin2net(sta, dc_name)withheterosta3d_get_pin2net(sta, use_cuda). - Rename
heterosta3d_net2pin_start/itemstoheterosta3d_get_net2pin_start/itemsand passuse_cuda. - If you already own a
NetlistDB, useheterosta3d_set_netlistdbonce and follow its ownership-transfer rules; do not free the transferred pointer. - Use the HeteroSTA and HeteroSTA3D libraries and headers from the same v2.0 archive.
- Confirm both license environment variables contain unexpired licenses.
- Re-run timing reports and compare WNS/TNS against your v1.1 baseline.