Magnet - Placement Analysis
Magnet - Placement Analysis
2. Magnet_placement
3.Improving Timing QoR for Specific Path Group With magnet_placement
Command
1.Performing Magnet Placement
➢ To improve congestion for a complex floorplan or to improve timing for the design,
you can use magnet placement to specify a fixed object as a magnet and have the
tool place all the standard cells connected to the magnet object close to it.
➢ You can specify fixed macro cells, pins of a fixed macro cells, or I/O ports as the
magnet object.
➢ For best results, perform magnet placement before standard cell placement.
➢ To perform magnet placement, use the magnet_placement command with a
specification of the magnets and options for any special functions you need to
perform.
Specify the cells to pull toward the magnet object. -cells cell_list
Enable hierarchical cells to be specified with the -cells option -hierarchy_mode default |
and specify how these hierarchical cells should be handled block | all
Specify the number of logic levels from the magnet that are -logical_levels number
considered for magnet placement.
Prevent the tracing of paths beyond the specified pins, ports, or -stop_points
cells when finding the cells to pull.
Specify how to place cells when the magnet objects are -multiple_long_port_mode
multiple ports or long ports auto|nearby
Report the cells that will be moved toward the magnet object, -only_report_magnet_cells
but not pull them
Create a collection of cells that are being pulled toward the -get_collection
magnet object.
The following examples use the data paths shown in Figure 1.
➢ The following command pulls all cells, C1 through C8, toward the C0 magnet object:
icc2_shell> magnet_placement C0
➢ The following command pulls the C6, C7, and C8 cells toward the C2 magnet object:
icc2_shell> magnet_placement C2 -cells {C6 C7 C8}
➢ Although the C3, C4, and C5 cells form a contiguous datapath, they are isolated from
the C0 cell, so the following command pulls no cells toward the C0 cell.
icc2_shell> magnet_placement C0 -cells {C3 C4 C5}
➢ The following command pulls no cells toward the C0 magnet object because the C3,
C6, and C8 cells do not form a contiguous data path.
icc2_shell> magnet_placement C0 -cells {C3 C6 C8}
2.magnet_placement
#magnet_placement
Data Types :
Arguments :
. -move_fixed
➢ Specifies that the cell marked as fixed can be moved. By default, the fixed cells and
the cells behind them cannot be pulled.
-mark_fixed
➢ Specifies that the cells are to be marked fixed after running
the magnet_placement command. By default, no cell is marked as fixed after the
command. This option is mutually exclusive with the -mark_legalize_only option.
-move_legalize_only
➢ Specifies that a cell marked as legalize_only can be moved. By default, legalize_only
cells cannot be moved.
mark_legalize_only
➢ When 'nearby' set for long port, command pulls placed cells to the nearest location
on the port and unplaced cells nearby the port center. When 'nearby' set for multiple
port, the command pulls placed cells to one of the nearest port terminals and
unplaced cells nearby any one of terminals.
➢ When 'auto' set for a long port, the command places cells evenly near the port. When
'auto' set for a multiple port, command places cells evenly nearby each port terminal.
➢ By default, multiple ports and long port not supported without setting this option.
-cells object_list
➢ Pulls only the cells in the specified object list. You specify only cell objects in the
object list. This option is mutually exclusive with -logical_levels and -
stop_by_sequential_cells.
➢ The cells that you specify should form an intact datapath with magnet object. For
example, if magnet object connects to cell_a, and cell_a connects to cell_b, you
should specify both cell_a and cell_b. These cells do not have to be a timing path.
-stop_points object_list
Pulls only the cells that are on the paths between the magnet objects and the given
stop_point objects. The stop_point objects can be lists of any pin, port, or cell objects.
➢ This option is mutually exclusive with the -logical_levels, -exclude_buffers, -
stop_by_sequential_cells, and -cells options.
-hierarchy_mode default | block | all
➢ Specifies how the command traces cells in the hierarchy in hierarchy placing mode.
When this option is specified, all cell instances within each hierarchical block that are
connected to the magnet object are pulled toward it. All hierarchies specified by
using the -cells option are placed one by one.
This option must be used together with the -cells option, which by default accepts only flat
cell instances as input. When this option is specified, the -cells option accepts only
hierarchical cell instances as input.
The valid modes are:
• default: The tool traces through only buffers and inverters when traversing from the
magnet object to the cells within the specified hierarchical block. This is the default
setting.
• block: The tool does not trace through any cell when traversing from the magnet
object to the cells within the hierarchical block. The tool pulls the cells of the
specified hierarchical block toward the magnet object only if they are directly
connected to the magnet object. This is the most restrictive setting.
• all: The tool traces through all combinational cells when traversing from the magnet
object to the cells within the specified hierarchical block. However, it does not trace
through sequential cells. This is the least restrictive setting.
magnet_objects
• Specifies the magnet objects. A magnet object should be a fixed object, for
example, a fixed macro cell, a fixed standard cell, a pin of a fixed macro cell, or
an I/O pin. Objects like vias and blockages are not allowed to be magnets.
-enable_runtime
Enables fast runtime flow for the Magnet Placement command.
Description :
• The command defines a set of objects as magnets and pulls the neighboring cells up
to a specified logical level closer to the magnet.
• It is considered a best practice to run this command before coarse placement, so
that sufficient areas are available for magnet placement operation.
• A large macro with many placeable standard cell neighbors can be used to ensure
that the standard cells are placed close to the macro, resulting in better timing and
congestion.
• If a net has a fanouts number larger than 1000, the command ignores the net
because pulling such a large high-fanout net might cause runtime and congestion
issues.
• The effect of magnet placement is not preserved from one invocation to another. For
example, consider a design where cells A and B are made magnets and there are
cells that are connected to both of them through possibly multiple levels.
Running magnet_placement A and then magnet_placement B could result in a
different result from running commands magnet_placement [get_cells "A B"] together.
• If the magnet_placement command is invoked after the create_placement command,
the cell overlap issues might occur since there could be standard cells already
placed. You can run the legalize_placement command to remove the overlaps.
Multicorner-Multimode Support :
• This command has no dependency on scenario-specific information.
• The following example performs magnet placement on the INST_1 cell:
• prompt> magnet_placement [get_cells "INST_1"]
• The following example performs magnet placement and marks the moved cells as
fixed afterwards:
• prompt> magnet_placement -mark_fixed [get_cells "INST_2"]
• The following example pulls two levels of cells to INST_2.
• prompt> magnet_placement -logical_levels 2 \\
• [get_cells "INST_2"]
• The following example pulls the specified cells to INST_3.
• prompt> magnet_placement INST_3 -cells {Cel_1 Cel_2 Cel_3}
3.Improving Timing QoR for Specific Path Group With magnet_placement
Command
Description :
➢ The magnet_placement command defines a set of objects as magnets and pulls the
neighboring cells up to a specified logical level closer to the magnet. The tool can place
large macro, which has many neighboring place-able standard cells, close to these
standard cells resulting in better timing and less congestion.
➢ For example, if there is a bad QoR for a particular path group. You can perform
optimization by running the magnet_placement command with place_opt command.