OpenROAD
OpenROAD copied to clipboard
Resizing Problems
Description
Currently, RepairDesign uses a strategy of resizing cells to a target slew in order to perform Post Placement Optimization. With the current methodology, the Resizer ends up "fixing" things that are not actually violations of any rule leading to over-sizing.
Note: The API that resizes to the target slew is also used in RepairSetup and RepairHold.
(Some) Current Problems
- Cells are resized regardless of violations (No DRC, Setup/Hold violations)
- FFs are being touched.
- Special cells are also touched. They should be checked with the cell footprint.
- Clock buffers are used for data network.
Suggested Solution: Enhancement Plan
Phase 1
-
[Deferred] Suppress sequential sizing (#5601)
-
[ ] Sizing should not swap cells with incompatible electrical properties.
- [x] Add footprint support (sta: add cell footprint support & add it to equiv check)
- [Unneeded as discussed in the previous PR] Improve memory by avoid storing a string for each LibertyCell.
- [Done and reverted.] Check cell_footprint by default in sta equivalency check. (Remove the footprint check from equivCells)
- [ ] Add user_function_class support (sta: Parse and store user_function_class from Liberty.)
- [ ] Honor user_function_class if available && provide option to honor cell_footprint during all sizing optimization.
- [x] Add footprint support (sta: add cell footprint support & add it to equiv check)
-
[x] Use adequate buffer selection strategy for different operations (#5752)
- [x] Data path sizing should use only data buffers (With exception of hold repairing due to tech specific properties)
- [x] Clock nets repairing should use the same list of buffers created by CTS
Phase 2
- [ ] Add FO4
- [ ] Gates that don't respect FO4 should be resized.
- [ ] Gates with cap ratio that don't violate FO4 shouldn't be further sized
- [ ] Redo repair_design sizing using FO4
- [ ] Do sequential sizing based on area increase (nominal buffer area threshold)
Phase 3
- [ ] Remove target slew resizing from setup fixing
- [ ] Remove target slew resizing from hold fixing
- [ ] Make setup fixing or power recovery with global sizing
Additional Context
No response