Module placement constraints in physical design
Working with Cadence Innovus, designers need to control cell placement efficiently to optimize performance, congestion, and timing closure. Innovus provides multiple module placement constraints that guide and restrict module locations within the core design area: None, Guide, Fence, Region and Soft Guide/Cluster.
None
When a module is assigned the None constraint, it means that the module is not pre-placed within the core design area. However, this does not mean that it lacks placement control. The module may still be moved into the core area during optimization or loaded using a floorplan file.
Guide
A Guide is a soft constraint that helps in placing cells closer together but does not enforce strict placement rules. It represents a logical grouping of instances in the netlist and assists the placement engine in keeping related components nearby.
createGuide object_name bboxKey Features
- Represents the logical module structure of the netlist.
- Helps in placing cells of the module close to each other within the suggested area.
- Appears as pink objects in the Floorplan view (by default) after the design is imported, but before floorplanning.
- The module guide snaps to a standard cell row (vertically) and to a metal 2 pitch (horizontally) (the default). This default can be changed to snap to the manufacture grid (in the Preferences form's Floorplan page).
- Does not enforce strict placement, meaning cells can be slightly displaced based on connectivity requirements.
Fence
A Fence is a hard constraint that strictly confines a module within a fixed area. It prevents cells from moving outside the defined boundary and restricts other instances from entering the area.
createFence object_name bboxExample: Consider a memory block that needs to be placed in a specific region to optimize data flow. A Fence ensures that no other cells intrude, maintaining predictable timing and congestion.
Key Features
- When a hierarchical instance is defined as a partition, its constraint type changes to a fence.
- The fence outline is rigid, meaning all instances must remain within the boundary.
- Non-child instances from other modules cannot be placed inside the fence.
- This hard restriction is necessary to ensure consistency with third-party backend tools.
Region
A Region is similar to a Fence, but it is less restrictive. Other instances can be placed inside a region, but priority is given to the assigned module.
createRegion object_name bboxExample: If you have an ALU (Arithmetic Logic Unit) in a multi-core processor, a Region can keep its logic in a dedicated area, but some unrelated cells may still be placed within that area if needed.
Key Features
- Unlike a fence, other instances from different modules can be placed inside a region.
- A module guide automatically changes to a Region when it is pre-placed in the core design area.
- Helps in grouping cells together while still allowing some flexibility.
Soft Guide/Cluster
A Soft Guide, also known as a Cluster, is an even looser constraint than a Guide. It does not specify an exact placement location but ensures that grouped instances stay relatively close to each other.
Key Features
- Similar to a Guide, but it does not enforce any specific location constraints.
- Ensures that the grouped instances stay relatively close but allows some cells to be placed further if necessary.
- Less restrictive than Fence or Region, meaning placements may spread out if required for connectivity.
- The placement engine can control the degree of closeness using the command:
setPlaceMode -place_global_soft_guide_strengthKey Differences
| Constraint | Placement behavior in source | Other instances inside? | Source-described role |
|---|---|---|---|
| None | Not pre-placed; may still move into the core during optimization or load from a floorplan file. | Not specified | No module pre-placement constraint |
| Guide | Soft grouping; helps keep related cells close and can allow displacement for connectivity. | Not specified | Logical grouping and proximity |
| Fence | Hard boundary; module instances stay inside. | No; source says non-child instances cannot enter | Strict confinement |
| Region | Assigned module has priority in its region. | Yes; source explicitly allows other instances | Grouping with placement flexibility |
| Soft Guide/Cluster | Proximity preference; no exact location and some instances may be farther apart. | Not specified | Keep grouped instances relatively close |