Step Substitution works in a very surprising manner #646
Labels
⛓️💥 breaking change
This issue may require a change to OpenLane's API
✨ enhancement
New feature or request
Milestone
Description
Substitution can now currently and confusingly be consumed at either the class level, i.e. the subclass's step list itself is transformed by initialization with
Substitute
, or substitutions can also be applied at the instance level, where the instance's step list only is changed.Among other things, this complicates chaining multiple substitutions by subclassing a flow that itself has substitutions.
Another issue is that step substitutions do not consider the state of the step list after applying previous step substitutions, so for example, if you have three instances of a step in the flow and remove the second, the normalized step ID for the remaining second step is
-2
instead of-1
.Additionally, substitutions in configuration files are applied to all flows, not just the one declared in the config file, making them useless for designs that may be subjected for multiple flows.
Proposal
The way substitution works should be streamlined and documented.
The text was updated successfully, but these errors were encountered: