Commit Graph
2161 Commits
Author SHA1 Message Date
James Cherry 9a11f094b9 typos/format
Signed-off-by: James Cherry <[email protected]>
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
James Cherry 133580eeae Sta::findRequired(vertex) public
Signed-off-by: James Cherry <[email protected]>
2026-06-16 12:00:17 -07:00
James Cherry 0fe167a80d sta_internal_bidirect_instance_paths_enabled use load->driver edges
Signed-off-by: James Cherry <[email protected]>
2026-06-15 17:02:58 -07:00
James Cherry 376d86bbce rm Sdc::output_delay_ref_pin_map_
Signed-off-by: James Cherry <[email protected]>
2026-06-13 16:45:23 -07:00
James Cherry 740fa7d16c input ref pin graph edges
Signed-off-by: James Cherry <[email protected]>
2026-06-13 16:31:24 -07:00
James Cherry 4249ab7b98 set sta_pocv_mode update delays/slews
Signed-off-by: James Cherry <[email protected]>
2026-06-10 10:38:15 -07:00
Drew Lewis 424cb1dff1 Add native gzip compression support to write_verilog (#448) 2026-06-10 09:12:19 -07:00
Deepashree Sengupta 65deb11d64 Address a few typos in docs related to SSTA (#447)
* Address a few typos in docs

Signed-off-by: dsengupta0628 <[email protected]>

* update help string for report_checks to reflect variation

Signed-off-by: dsengupta0628 <[email protected]>

---------

Signed-off-by: dsengupta0628 <[email protected]>
2026-06-09 20:55:27 -07:00
James Cherry 014678a4f8 cursor
Signed-off-by: James Cherry <[email protected]>
2026-06-06 20:12:33 -07:00
Drew Lewis b3458485ba Dont spin main for queue (#443)
* Use DynamicLatch in DispatchQueue to avoid main thread spinning

Replace the busy-yielding pending_task_count_ loop in DispatchQueue::finishTasks
with a blocking DynamicLatch. This avoids having the main thread consume CPU
cycles while waiting for dispatched tasks to complete.

The DynamicLatch implementation uses C++20 std::atomic::wait/notify_all for
efficient blocking and wakeup, with proper release-acquire semantics to ensure
task results are visible to the waiting thread.

* Reformat DynamicLatch to match DispatchQueue style

* Update attribution headers in DispatchQueue files to note modifications
2026-06-06 16:45:46 -07:00
James Cherry ffe126af2a PathGroups::inPathGroupNamed
Signed-off-by: James Cherry <[email protected]>
2026-06-06 11:55:51 -07:00
James Cherry b0869d521c comment
Signed-off-by: James Cherry <[email protected]>
2026-06-04 08:54:28 -07:00
James Cherry 13cd475ffa make_net/make_port bus bit without bus dcl pr441
Signed-off-by: James Cherry <[email protected]>
2026-05-29 16:32:47 -07:00
James Cherry 4239842d34 FindTCL.cmake
Signed-off-by: James Cherry <[email protected]>
2026-05-29 09:49:12 -07:00
James Cherry 8f84d721f3 report_tag_arrivals
Signed-off-by: James Cherry <[email protected]>
2026-05-28 12:43:10 -07:00
James Cherry 0c243b564b Dockerfile.ubuntu24.04
Signed-off-by: James Cherry <[email protected]>
2026-05-28 09:31:24 -07:00
James Cherry 41a3d86d8c Sta::unsetAnnotatedSlew
Signed-off-by: James Cherry <[email protected]>
2026-05-27 10:50:44 -07:00
James Cherry ffd54f38b1 rm hashPtr
Signed-off-by: James Cherry <[email protected]>
2026-05-27 10:44:55 -07:00
James Cherry 8f5b481495 ReportPath set field order/user defined field
Signed-off-by: James Cherry <[email protected]>
2026-05-26 19:17:29 -07:00
Masanori Ogino de65ba62b4 Update CUDD upstream URL in README (#440)
Signed-off-by: Masanori Ogino <[email protected]>
2026-05-26 11:43:49 -07:00
James Cherry 4b4f382506 tcl 8.6.18
Signed-off-by: James Cherry <[email protected]>
2026-05-21 19:56:10 -07:00
Deepashree Sengupta 5dbc473186 fix makeConcreteParasitics leak+testcase (#439)
* fix makeConcreteParasitics leak

Signed-off-by: dsengupta0628 <[email protected]>

* simplify test, update the address review comment

Signed-off-by: dsengupta0628 <[email protected]>

* reduce test verbosity

Signed-off-by: dsengupta0628 <[email protected]>

---------

Signed-off-by: dsengupta0628 <[email protected]>
2026-05-20 13:55:02 -07:00
Deepashree Sengupta 17380215ef expose levelizeobserver (#433)
Signed-off-by: dsengupta0628 <[email protected]>
2026-05-13 09:59:35 -07:00
James Cherry 4c8ef5b84a make report field
Signed-off-by: James Cherry <[email protected]>
2026-05-12 11:24:24 -07:00
James Cherry 30f862bf86 ord ctest turds
Signed-off-by: James Cherry <[email protected]>
2026-05-11 11:09:23 -07:00
James Cherry 8cbd400249 Liberty power_down_function parse resolves #428
Signed-off-by: James Cherry <[email protected]>
2026-05-08 10:10:21 -07:00
James Cherry 7e68e452d3 mv is_object to Util.i
Signed-off-by: James Cherry <[email protected]>
2026-05-07 11:11:32 -07:00
James Cherry 6eb6911d30 regression
Signed-off-by: James Cherry <[email protected]>
2026-05-06 08:51:10 -07:00
James Cherry 2a2450f4b7 read_sdc use cmd_mode
Signed-off-by: James Cherry <[email protected]>
2026-05-05 20:31:39 -07:00
James Cherry fa3c89f436 RequiredVistor integrate RequiredCmp
Signed-off-by: James Cherry <[email protected]>
2026-05-05 19:37:43 -07:00
James Cherry 2290ed97c0 rm cast
Signed-off-by: James Cherry <[email protected]>
2026-05-05 18:20:46 -07:00
James Cherry 4ec11fedba Sta::clockDomains
Signed-off-by: James Cherry <[email protected]>
2026-05-05 17:39:08 -07:00
James Cherry b31ae3cdbb Search::reportArrivals
Signed-off-by: James Cherry <[email protected]>
2026-05-05 17:33:02 -07:00
James Cherry 9ccaa8c9bf rm report_arrival_entries
Signed-off-by: James Cherry <[email protected]>
2026-05-05 17:28:25 -07:00
James Cherry 9065d915db copy() use copy constructors
Signed-off-by: James Cherry <[email protected]>
2026-05-05 17:25:09 -07:00
James Cherry 801d621d6b Dmp delay calc inline algs
Signed-off-by: James Cherry <[email protected]>
2026-05-05 17:08:16 -07:00
James Cherry 7fca318611 copy() use copy constructors
Signed-off-by: James Cherry <[email protected]>
2026-05-05 16:58:59 -07:00
James Cherry 0968c3f901 comments
Signed-off-by: James Cherry <[email protected]>
2026-05-05 16:41:14 -07:00
James Cherry afa2286edc copy() use copy constructors
Signed-off-by: James Cherry <[email protected]>
2026-05-05 16:35:40 -07:00
James Cherry e0ddce76ac mv Variables.tcl to sdc
Signed-off-by: James Cherry <[email protected]>
2026-05-05 15:39:09 -07:00
James Cherry c74dac5825 clear_network clear sta
Signed-off-by: James Cherry <[email protected]>
2026-05-05 15:37:23 -07:00
James Cherry 20af8fdaf6 rm get_object_type
Signed-off-by: James Cherry <[email protected]>
2026-05-05 15:35:18 -07:00
James Cherry 5b9d0f3aa8 is_object cleanup
Signed-off-by: James Cherry <[email protected]>
2026-05-05 15:02:51 -07:00
James Cherry bfbbe0d90e rm blank
Signed-off-by: James Cherry <[email protected]>
2026-05-05 14:27:30 -07:00
James Cherry c1ebbb90b1 Vertex::has_sim_value_
Signed-off-by: James Cherry <[email protected]>
2026-05-02 10:36:07 -07:00
James Cherry f813d949ae write_verilog port missing net (issue 429)
Signed-off-by: James Cherry <[email protected]>
2026-05-01 11:34:15 -07:00
James Cherry bd1cbefcd5 write_sdc -mode
Signed-off-by: James Cherry <[email protected]>
2026-05-01 10:32:20 -07:00
James Cherry f622da7134 set_mode
Signed-off-by: James Cherry <[email protected]>
2026-05-01 10:01:10 -07:00
James Cherry 6fd319474f regression
Signed-off-by: James Cherry <[email protected]>
2026-04-25 18:59:53 -07:00