Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Supports #5867.
This PR is ISPD and Secure CI safe.
I recommend looking at the commits separately while reviewing, specially the dead code ones.
Like many other things in PA, for incremental PA to be possible, unique instances need to be a live structure, after being properly initialized, it needs to be possible to add new instances to the unique instances structures dynamically, this PR adds said support.
Live
pref_track_patterns_
andmaster_to_pin_layer_range_
Both these variables became member member variables of
UniqueInsts
. This is necessary because during incremental PA these structures will need to be constantly consulted and updated, creating the necessity of making them more permanent. This change made the functions that create them,computePrefTrackPatterns()
(name changed) andinitMasterToPinLayerRange()
to not return anything, since they now simply initialize the member variables. This change made the already smallinitUniqueInstance()
obsolete, as the passing around of the older variables is not necessary anymore, so it was deleted, and the initialization of the variables was passed tocomputeUnique()
.addUniqueInst()
This function will be used during incremental PA, it essentially refactors the bulk of the old
computeUnique()
code to receive a singlefrInst*
pointer and initialize the unique instance data for that instance. Some of the code had to be refactored to accommodate for this change, specially what comes after the "// Fills data structure that relate a instance to its unique instance" comment.Dead Code elimination
This is a weird one, something I did not caught when refactoring PA, I recommend looking at both the dead code commits to see exactly what I'm talking about. In two separate parts of the code there was this patterns where a initial data structure was created with the target insts and masters of the run (
target_frinsts
andmasters
). Soon after, during iteration of masters and insts of the design there existed a continue guard. This guard would activate if the original data structure had something in it and the inst/master of the loop was present in it. The structure was always empty, so this guard never activated, and the creation of the original structures had no actual purpose, so I deleted them.