OpenLane
OpenLane copied to clipboard
Review commands affecting SDC files
Description
Some commands ran by the flow may alter the contents of generated SDC files, for example:
unset_dont_touchmay interfere with configurations set by users' SDC files. Since we unset all the variables irrespective of their original don't touch state, this may overwrite one of them.
Proposal
We need to decide on all of:
- Whether the original SDC file should be read or not. The SDC file should still be written after every step (useful for debugging, etc.)
- While if the SDC file changing at all could be indicative of issues, the reality is working around issues with tools is far from an unorthodox practice where OpenLane is concerned.
- Whether we care about resizer
set_dont_touch/unset_dont_touchaliasingset_dont_touchin the SDC file.- The reality is, the values for these two are controlled by a variable anyway (https://github.com/The-OpenROAD-Project/OpenLane/issues/1904#issuecomment-1657092842), meaning that if a user puts
set_dont_touchin both the SDC file and the variable, there is a case to be made that it is the user's responsibility, but on the other hand, that is totally something a user would do then go insane.
- The reality is, the values for these two are controlled by a variable anyway (https://github.com/The-OpenROAD-Project/OpenLane/issues/1904#issuecomment-1657092842), meaning that if a user puts
We only call unset_dont_touch on variables defined in RSZ_DONT_TOUCH_RX and RSZ_DONT_TOUCH.
@donn what is the action here?
We should, when we're in set_dont_touch, check if a net/instance is already marked as "don't touch" and only unset it in unset_dont_touch if it wasn't already set.
This should also be propagated to OL2