Repository navigation
Conversation
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
There was a problem hiding this comment.
Code Review
This pull request refactors the setup repair optimization flow in the rsz tool by removing several experimental policies and introducing a setup repair profiler (RepairSetupProfiler) and a sequential timing estimator (SequentialTimingEstimator). It also updates the delay estimator to support caching, fanin side load evaluations, and dual rise/fall checks. The code review identifies several critical issues, including potential null pointer dereferences in DelayEstimator.cc and SequentialTimingEstimator.cc, an incorrect pointer comparison instead of a string comparison, unsafe usage of std::string_view where a null-terminated string is expected, and a missing Boost hash header in DelayEstimator.hh.
a6d613b to
116f5af
Compare
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Something went wrong. Try again later by commenting “@codex review”. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Something went wrong. Try again later by commenting “@codex review”. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
What: the Mt delay estimator models the fanin side loads, the opposite output transition, the latch D-side driver and the flip-flop setup and hold change of a cell swap, and SizeUpMt and VtSwapMt charge them. Why: scoring a swap on the selected path alone let a scored gain turn into a loss after the timing update. How: side models in DelayEstimator and SequentialTimingEstimator, input cap budgets that workers can check without STA, and ArcDelayState renamed to EstimatorContext. The side models are off by default. Setup repair profiler review follow-ups: the profiler constructor takes a RepairSetupProfiler::Mode instead of an int, CRIT_VT_SWAP samples WNS and TNS before its sweep, and the Bazel TestResizerMt target drops the --gtest_filter that skipped the profiler and fixture tests. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
116f5af to
ef64398
Compare
|
Codex:
|
|
I tested removing the filter arg and all tests pass so I'm unclear on the purpose. |
It was for local testing, but mistakenly merged. I removed it. |
Part 4 of 12 of the PARALLEL_EVAL setup repair stack. It builds on #11796, which is merged, so it shows its own commit only.
Summary
Problem
Changes
DelayEstimator: the fanin side loads, the opposite output transition and the D-side driver of a latch at the path start;SequentialTimingEstimatorranks the flip-flop setup and hold change from the Liberty check tables.dual_rf_drive_guardcan drop cells that are weaker on rise or fall.ArcDelayStatebecomesEstimatorContext.Follow-ups from the #11796 review
RepairSetupProfilerconstructor takes aRepairSetupProfiler::Modeinstead of anint;Optimizer::run()converts-profile_modeonce, where it makes the profiler.CRIT_VT_SWAPrecords WNS and TNS at thephase_beforepoint oftiming.csvbefore its sweep. With-phases CRIT_VT_SWAP, the profile had only thefinal_progressrow.TestResizerMttarget drops--gtest_filter=TestResizerMtThreadPool.*, which ran only the 5 thread pool tests; all 35 tests, the 4 profiler tests among them, now run in CI.events.csv. OpenDB raises no callback when adbITermconnects to adbModNet, so tracing them needs a new OpenDB callback first.Stack