flow: refactor io_placement to avoid propagating intermediate ODB - #4410
flow: refactor io_placement to avoid propagating intermediate ODB#4410oharboe wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the placement flow by integrating the initial global placement with skipped IOs directly into the IO placement step, simplifying the Makefile targets and step numbering. Feedback on these changes highlights an issue in io_placement.tcl where the POST_IO_PLACEMENT hook is executed unconditionally; if the IO placement is skipped, no design is loaded, which will cause any custom post-placement scripts that query the database to fail. It is recommended to move this hook inside the else block where the design is actually loaded.
87b9142 to
0547380
Compare
|
What "mess in the kitchen"? The makes it hard to work on IO placement as you can only see the results after gpl runs which is substantially slower. We also have ongoing development that will moot this be integrating IO placement into gpl. |
placing io pins moves all the stdcells as a side-effect => intentional? Then global placement have to move all the stdcells back to the center (clean up the kitchen before making the next dish)... Am I misunderstanding something? |
This change modifies io_placement to write a script with pin locations rather than passing a messy intermediate ODB to global placement. Since io_placement.tcl writes a pin placement script without persisting its intermediate database state to the next stage, POST_IO_PLACEMENT is moot. Furthermore, if FLOORPLAN_DEF is set, no design is even loaded, causing POST_IO_PLACEMENT to fail if a script tries to use it. Any placement modifications should be done in PRE_GLOBAL_PLACE instead. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
0547380 to
4ac0d95
Compare
😌 |
|
Because of the mutual dependence between IO and cell placement we iterate (cells skipping io, then io, then cells again with ios). So we are resetting the locations for the next iteration. I wouldn't call it a mess so much as visibility into the process. The process will be more internal to gpl in the future. |
|
Thank you for the explanation. I understand it to be debug output, but since this is all internal in gpl in the future, this PR is moot: a matter of taste/debugging/visibility into the process and doing anything here now is just churn for no reason while we wait for gpl upgrade. 😌 |
This change modifies io_placement to write a script with pin locations rather than passing an intermediate ODB containing dummy placement to global placement.
This avoids global placement seeing an
.odbfile modified by pin placement. As a result,global_placementno longer has to clean up the mess in the kitchen after IO placement (by manually deleting components before proceeding).Cost taxonomy
Makefile,io_placement.tcl, andglobal_place.tcldependency chain to pass coordinate script instead of.odb.origin/master(task-357).Scope: this PR.