[rsz] Change RSZ-0075 warning to debug + remove pre-placement buffer attempt#3900
Conversation
Point to secure-fix-issue-5988 branch which changes the makeBufferedNet warning (RSZ-0075) to a debug message. Resolves OpenROAD#5988, OpenROAD#8988 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
In the floorplan stage, all cells are unplaced (at origin 0,0): - Remove `estimate_parasitics -placement` before replace_arith_modules since zero-wire parasitics are less accurate than wire load models - Remove `buffer` from repair_timing sequence since makeBufferedNet always returns nullptr when ParasiticsSrc::none (1168 wasted calls on asap7/aes, 0 buffers inserted) Other moves (unbuffer, sizeup, swap, vt_swap) continue to work correctly with wire load models. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
| } | ||
|
|
||
| if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } { | ||
| log_cmd estimate_parasitics -placement |
| } else { | ||
| # Skip clone & split | ||
| repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,buffer,vt_swap" | ||
| repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,vt_swap" |
There was a problem hiding this comment.
@povik I removed buffer strategy here because buffering was not performed since cells are unplaced. Do you think that we should use gain-based buffering in floorplan stage rather than skipping the buffering?
There was a problem hiding this comment.
We remove buffers at 3_2 so any buffering we do at floorplan will be short-lived. Perhaps it's useful to do it anyway to get a more accurate timing report and to guide other resizer operations which look at timing. Matt and I have discussed this a couple of times but never did any changes as it always seemed low priority.
There was a problem hiding this comment.
Thank you for sharing.
Then the buffering in floorplan stage may require a sufficient research to make it valuable.
IMO, removing the buffer strategy looks better for now.
@precisionmoon @maliberty Any other thoughts?
There was a problem hiding this comment.
I think it currently does little as most moves abort when there is no placement. If a secure CI confirms I am ok to remove it. The original thought was to use gain-based buffering here.
There was a problem hiding this comment.
OK. Then let's merge this PR after resolving the merge conflict caused by MCMM update.
I'll check if the gain-based buffering in floorplan stage is meaningful gain or not, and open a new PR if it shows meaningful gain.
Summary
makeBufferedNet failedfrom WARNING (RSZ-0075) to debug messageestimate_parasitics -placementcall in floorplan stage (cells are unplaced at (0,0))bufferfromrepair_timingsequence in floorplan stage (buffering always fails without parasitics)Background
During the floorplan stage,
repair_timingis called with-sequence "unbuffer,sizeup,swap,buffer,vt_swap".The
buffermove callsmakeBufferedNet()which immediately returnsnullptrwhenParasiticsSrc::none,generating 1000+ warning messages per design. Cells are unplaced (all at origin), so buffering is impossible.
Resolves
[WARNING RSZ-0075] makeBufferedNet failed for driverdebug message OpenROAD#8988Test plan
🤖 Generated with Claude Code