Commit Graph

295 Commits

Author SHA1 Message Date
dsengupta0628 0c96ee9a22 upstream changes plus resolved conflict in ci.yml
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-06-29 15:38:16 +00:00
James Cherry c81f0c169d cleanup
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-06-22 16:54:27 -07:00
James Cherry 0e79e35d17 indent
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-06-18 13:52:33 -07:00
Drew Lewis 832c62b579
Refactor DMP solver to use Eigen and implement Determinant Guarded solver (#450)
This commit refactors the Dartu-Menezes-Pileggi (DMP) effective capacitance
algorithm solver to use the Eigen library, and implements a Determinant Guarded
solver to handle singular and near-singular Jacobians safely and efficiently.

Key changes:
1. Refactored the DMP solver to use Eigen stack-based data structures,
   replacing the custom Crout LU decomposition and solver.
2. Extracted the linear solver logic into a dedicated helper function
   DmpAlg::solveNewtonStep.
3. Implemented a "Determinant Guarded" solver:
   - Manually checks the determinant of the Jacobian (safety guard).
   - Throws a DmpError if the determinant is dangerously close to zero (|det| < 1e-12),
     safely triggering the lumped capacitance fallback.
   - Otherwise, solves using Eigen's highly optimized analytical inverse (fast path).
4. Added documentation in the comments on how to easily swap back to LU
   decomposition with partial pivoting (PartialPivLU) if any numerical
   precision issues arise in the future.

Benchmark Results (Optimized Release Build, 5,288 DMP calls):

| Test Case | Calls | 1. Original (Crout LU) | 2. Eigen (PartialPivLU) | 3. Eigen (Determinant Guarded) | Speedup (3 vs 1) | Speedup (3 vs 2) |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| power | 2,608 | 1.8822 ms | 1.6791 ms | 1.2702 ms | +32.5% | +24.4% |
| power_vcd | 2,608 | 1.8729 ms | 1.6704 ms | 1.2768 ms | +31.8% | +23.6% |
| spef_parasitics | 24 | 0.0193 ms | 0.0187 ms | 0.0140 ms | +27.5% | +25.1% |
| mcmm3 | 48 | 0.0728 ms | 0.0756 ms | 0.0817 ms | -12.2% | -8.1% |
| Total DMP Time | 5,288 | 3.8472 ms | 3.4438 ms | 2.6427 ms | +31.3% | +23.3% |
2026-06-18 13:52:14 -07:00
dsengupta0628 5dae3933dc Merge remote-tracking branch 'upstream/master' into sta_latest_0618 2026-06-18 17:45:09 +00:00
James Cherry 0fe167a80d sta_internal_bidirect_instance_paths_enabled use load->driver edges
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-06-15 17:02:58 -07:00
dsengupta0628 ac7dfe5fc2 Merge remote-tracking branch 'parallax_sta/master' into sta_update_latest_0505 2026-05-06 13:37:38 +00:00
James Cherry 9065d915db copy() use copy constructors
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-05-05 17:25:09 -07:00
James Cherry 801d621d6b Dmp delay calc inline algs
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-05-05 17:08:16 -07:00
James Cherry 7fca318611 copy() use copy constructors
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-05-05 16:58:59 -07:00
James Cherry afa2286edc copy() use copy constructors
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-05-05 16:35:40 -07:00
dsengupta0628 ae37dc6238 pickup changes from upstream, latest on 4/27
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-27 18:45:35 +00:00
James Cherry 1eb2e9b11d untabify
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-25 14:45:49 -07:00
James Cherry a1c3077139 message ids
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-23 18:12:40 -07:00
James Cherry c8b9ffb22d tidy
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-21 17:30:35 -07:00
dsengupta0628 c2b629d751 test codes updated to compile succesfully with new changes in upstream
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-20 14:47:52 +00:00
dsengupta0628 05b4e3a1d9 Latest pulled in changes on 4/20 from upstream to push all together with latest from 4/16
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-20 14:21:16 +00:00
James Cherry 6e7ec45bc8 rm extra swig module dcls
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-16 15:46:32 -07:00
James Cherry 12c59878ee prima non-ccs report dcalc resolves #418
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-16 15:13:28 -07:00
dsengupta0628 9fbfcc4fcb picked changes from upstream master, resolved conflict for levelized driververtices, parseBus for weird defs
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-16 21:37:37 +00:00
James Cherry 21848bcdd2 clang tidy
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-15 09:38:10 -07:00
dsengupta0628 92f23e1b6d regoldened regressions as now it correctly fallsback tableCalc and not PrimaDcalc
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-13 22:28:04 +00:00
dsengupta0628 5f698bf596 fix the path of checkArgs fail and no-ccs in liberty that causes garbage RC vals in report_dcalc
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-13 22:03:24 +00:00
James Cherry 63efee64bf tidy round1 2026-04-13 14:59:05 -07:00
dsengupta0628 d5925fcdcc changes from upstream 4/13 with prima delaycalc checkArgs refactor, some coverity fix but still problematic
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-13 21:26:42 +00:00
dsengupta0628 7da56adedd undo my changes to avoid prima dcalc crash to pick implementation from upstream
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-13 21:18:34 +00:00
James Cherry b136ba309a PrimaDelayCalc::reportGateDelay resolves #418
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-09 15:13:40 -07:00
dsengupta0628 3b8e81393d Merge branch 'master' into sta_latest_from_parallaxsw_0407 2026-04-07 21:53:36 +00:00
dsengupta0628 371b85cd20 latest STA plus changes to fix prima dcalc and read_spef issues, TCL regression added
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-07 20:48:15 +00:00
James Cherry 645f2669c9 report_dcalc prima resolves #418
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-07 10:45:04 -07:00
dsengupta0628 3eec04f4e8 update STA to Parallaxsw version on 4/7 with fix for issue 416 and some unrelated stuff
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-07 12:59:25 +00:00
Jaehyun Kim 0c15e18f94 build: Add -Werror by default
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-04-05 23:55:35 +09:00
dsengupta0628 fc7ac6c16c test/cpp changes
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-04-05 00:18:45 +00:00
James Cherry 84150e925b prima ceff
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-04 09:21:34 -07:00
James Cherry aedddcecd8 DMP use std::array
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-04 09:21:01 -07:00
James Cherry 2f85fdfee3 Dmp cleanup
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-03 16:46:05 -07:00
James Cherry e04f36b541 GraphDelayCalc::findInputArcDelay rm Slew
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-03 11:22:38 -07:00
James Cherry 5d40134239 ArnoldiDelayCalc rcmodel
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-04-03 11:22:38 -07:00
Jaehyun Kim ea22794652 Merge remote-tracking branch 'opensta/master' into secure-sta-test-by-opus
# Conflicts:
#	liberty/TableModel.cc

Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-04-02 12:21:14 +09:00
James Cherry 638ffa57d4 cleanup
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-31 16:45:47 -07:00
James Cherry 8c1ebce695 GraphDelayCalc::findInputDriverDelay rm finishDrvrPin
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-31 16:37:38 -07:00
James Cherry 1d4b516239 GraphDelayCalc::findInputArcDelay thread issue
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-31 13:59:59 -07:00
Jaehyun Kim 3ca78b11c8 Adapt test files to upstream API changes (string_view migration)
Update 16 test files to match upstream OpenSTA API refactoring:
- const char* → std::string/std::string_view across all test APIs
- EXPECT_STREQ → EXPECT_EQ for std::string/string_view returns
- nullptr → "" for string_view parameters (makeClock, makeClockGroups, etc.)
- PropertyValue("literal") → PropertyValue(std::string("literal")) to avoid
  bool constructor overload resolution
- Method renames: relatedGroundPin→relatedGroundPort,
  relatedPowerPin→relatedPowerPort, firstName→firstParam,
  secondName→secondParam
- Constructor changes: OperatingConditions (5-arg → 1-arg + setters),
  ModeDef::defineValue (3-arg → 1-arg + setSdfCond)
- LibertyAttrValue::floatValue returns std::pair<float,bool> now
- Filter API: separate args → single expression string + bool_props_as_int
- SDF version golden files: 3.0.1 → 3.1.0

All 6104 tests pass.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-03-31 16:34:40 +09:00
Jaehyun Kim 069de0498c Merge branch 'master' of https://github.com/The-OpenROAD-Project-private/OpenSTA into secure-sta-test-by-opus
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-03-31 15:27:01 +09:00
dsengupta0628 5f46ad3dfb Merge remote-tracking branch 'upstream/master' into sta_latest_merge_strings 2026-03-30 16:22:27 +00:00
Jaehyun Kim 422f774b64 Merge branch 'master' of https://github.com/The-OpenROAD-Project-private/OpenSTA into secure-sta-test-by-opus
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
2026-03-29 22:33:08 +09:00
James Cherry 6742692876 string squash
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-28 19:13:35 -07:00
dsengupta0628 4238a057dd combined latest osta
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-03-25 20:03:03 +00:00
James Cherry b9e439f41c delay calc clip delay to 0.0 resolves #405
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-24 18:42:47 -07:00
James Cherry 04f4528c2c ccs ceff pocv
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-03-22 19:34:59 -07:00