-
Notifications
You must be signed in to change notification settings - Fork 415
[AP] Added Ability to Read The Atom Netlist #2749
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[AP] Added Ability to Read The Atom Netlist #2749
Conversation
if (loc.x == APFixedBlockLoc::UNFIXED_DIM && | ||
loc.y == APFixedBlockLoc::UNFIXED_DIM && | ||
loc.sub_tile == APFixedBlockLoc::UNFIXED_DIM && | ||
loc.layer_num == APFixedBlockLoc::UNFIXED_DIM) | ||
return; | ||
|
||
block_locs_[id] = loc; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems a bit odd to allow fixed locations with only some dimensions fixed (not sure how you're going to handle that; it would seem like a strange/limited form of region constraint that isn't worth supporting since we already have more general region support). I suggest you assert that all dimensions are fixed if any are fixed; code can then assume FIXED means truly locked down. You can generalize that later, but I'd do that by going through the partition/region constraints, not by allowing individual dimensions to be -1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It actually is sufficient to just lock it down in the x-dimension, for example, since solvers tend to solve x independent to y. The layer_num is currently always assumed to be 0; but it was easy to add to this struct in this case (being forward looking).
The sub_tile actually need not be locked down (nor should it). The placement constraints file leaves this optional. This was the main reason UNFIXED_DIM exists.
However, since the generation of the APNetlist from the atoms never allows x, y, and layer to be unspecified, I have added an assert to this method to guard against them being unset. I have purposefully left sub_tile out of this assert.
// fixed? Maybe we want nets to be strongly attracted towards some | ||
// blocks over others. | ||
|
||
// TODO: Should we cleanup the blocks? For example if there is no path |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unless it makes the matrix ill-conditioned I'd leave them alone. And if it makes the matrix ill-conditioned I'd probably find some way to place some of these in a different way and let the rest of the placement evolve around them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It will make the matrix ill-conditioned, but Eigen does not have a problem with this. I do not want to lose the note though (since this may be a problem later if we change libraries). I have added a sentence explaining this.
This method reads the atom netlist and uses the results of the prepacker to generate an APNetlist. It also fixes the block locations based on the user place constraints.
ebf2e84
to
86f8af1
Compare
@vaughnbetz I think this is ready to be merged. Should have no effect on NightlyTests. |
This method reads the atom netlist and uses the results of the prepacker to generate an APNetlist. It also fixes the block locations based on the user place constraints.