Commit Graph

2161 Commits

Author SHA1 Message Date
James Cherry 9a11f094b9 typos/format
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
James Cherry 133580eeae Sta::findRequired(vertex) public
Signed-off-by: James Cherry <cherry@CerezoBook.local>
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 <cherry@CerezoBook.local>
2026-06-15 17:02:58 -07:00
James Cherry 376d86bbce rm Sdc::output_delay_ref_pin_map_
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-06-13 16:45:23 -07:00
James Cherry 740fa7d16c input ref pin graph edges
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-06-13 16:31:24 -07:00
James Cherry 4249ab7b98 set sta_pocv_mode update delays/slews
Signed-off-by: James Cherry <cherry@CerezoBook.local>
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 <dsengupta@precisioninno.com>

* update help string for report_checks to reflect variation

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

---------

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
2026-06-09 20:55:27 -07:00
James Cherry 014678a4f8 cursor
Signed-off-by: James Cherry <cherry@CerezoBook.local>
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 <cherry@CerezoBook.local>
2026-06-06 11:55:51 -07:00
James Cherry b0869d521c comment
Signed-off-by: James Cherry <cherry@CerezoBook.local>
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 <cherry@CerezoBook.local>
2026-05-29 16:32:47 -07:00
James Cherry 4239842d34 FindTCL.cmake
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-29 09:49:12 -07:00
James Cherry 8f84d721f3 report_tag_arrivals
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-28 12:43:10 -07:00
James Cherry 0c243b564b Dockerfile.ubuntu24.04
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-28 09:31:24 -07:00
James Cherry 41a3d86d8c Sta::unsetAnnotatedSlew
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-27 10:50:44 -07:00
James Cherry ffd54f38b1 rm hashPtr
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-27 10:44:55 -07:00
James Cherry 8f5b481495 ReportPath set field order/user defined field
Signed-off-by: James Cherry <cherry@CerezoBook.local>
2026-05-26 19:17:29 -07:00
Masanori Ogino de65ba62b4
Update CUDD upstream URL in README (#440)
Signed-off-by: Masanori Ogino <masanori.ogino@gmail.com>
2026-05-26 11:43:49 -07:00
James Cherry 4b4f382506 tcl 8.6.18
Signed-off-by: James Cherry <cherry@parallaxsw.com>
2026-05-21 19:56:10 -07:00
Deepashree Sengupta 5dbc473186
fix makeConcreteParasitics leak+testcase (#439)
* fix makeConcreteParasitics leak

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

* simplify test, update the address review comment

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

* reduce test verbosity

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

---------

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