Customization of the Pin Planner Flow
Tasks that you otherwise cannot perform directly by using the available Pin Planner options can be performed using a custom code, also called a hook, during the Pin Planner flow.
You can use the vpaPinPlannerPostHook predefined SKILL post hook to extend the Pin Planner functionality. This hook is predefined and empty by default. You can redefine it to perform a specific task after running Pin Planner.
The vpaPinPlannerPostHook function automatically runs the user-defined SKILL code when you click Apply on the Pin Planner tab of the Pin Placement form. This function allows you to:
- Define the function in a file and load the file
- Define the function directly in the CIW
-
Define the function in the
.cdsinitfile
The signature of vpaPinPlannerPostHook is defined below.
- d_topCV: Specifies the top design cellview on which pin optimization needs to be performed when the Pin Planner tab is launched.
-
d_inst: Specifies the level-1 block on which the pin optimization is applied if the Pin Planner tab opens in level-1 mode. When set to
nil, the Pin Planner tab opens in top-level mode.
You can use the vpaPinPlannerPostHook function in the following situations:
-
To call the pin optimization function,
vpaOptimizePins, to optimize pins on the top-level design and level-1 soft blocks.
Here is a sample SKILL hook procedure to optimize pins:procedure (vpaPinPlannerPostHook(topDesign inst)
vpaOptimizePins (?cv topDesign)
t
)
-
To check for unplaced pins in the current design.
Here is a sample SKILL hook procedure for checking unplaced pins:procedure (vpaPinPlannerPostHook (topDesign inst) let ((curDesign unplacedFigs) if( inst then ;Pin Planner checks for level-1 pins in the level-1 design curDesign = inst->master
else ;Pin Planner checks for top-level pins in the top-level design curDesign = topDesign
) foreach(term curDesign->terminals
foreach( pin term->pins
foreach( fig pin->figs when( dbGetPinFigPlacementStatus(fig)=="unplaced" unplacedFigs = cons(fig unplacedFigs) )
)
)
)
when( unplacedFigs info("There are %d unplaced pins in the design.In"length(unplacedFigs))
)
t
)
)
If unplaced pins are found in the current design, the following message is displayed in the CIW.
"There are%dunplaced pins in the design."
Related Topics
Planning Placement of Top-Level and Level-1 Pins
Return to top