0% found this document useful (0 votes)
179 views9 pages

Magnet - Placement Analysis

The document outlines the process and command options for performing magnet placement in design optimization, which helps improve congestion and timing by positioning standard cells near specified magnet objects. It details various command options, including how to specify which cells to pull, manage hierarchical cells, and handle fixed or legalize-only cells. Additionally, it emphasizes the importance of executing magnet placement before standard cell placement for optimal results.

Uploaded by

BALA KRISHNA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
179 views9 pages

Magnet - Placement Analysis

The document outlines the process and command options for performing magnet placement in design optimization, which helps improve congestion and timing by positioning standard cells near specified magnet objects. It details various command options, including how to specify which cells to pull, manage hierarchical cells, and handle fixed or legalize-only cells. Additionally, it emphasizes the importance of executing magnet placement before standard cell placement for optimal results.

Uploaded by

BALA KRISHNA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

AGENDA :

1.Performing Magnet Placement

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.

Table 1: The magnet_placement Command Options

To do this Use this option

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

Enable the movement of cells marked as fixed or legalize-only. -move_fixed


-move_legalize_only

Mark the moved cells as fixed or legalize-only after magnet -mark_fixed


placement. -mark_legalize_only

Specify the number of logic levels from the magnet that are -logical_levels number
considered for magnet placement.

Exclude buffers and inverters when determining the level of -exclude_buffers


logic.

Prevent the tracing of paths at inputs of sequential cells when -stop_by_sequential_cells


finding the cells to pull.

Prevent the tracing of paths at the outputs of sequential cells -stop_on_sequential_cells


when finding the cells to pull.

Prevent the tracing of paths beyond the specified pins, ports, or -stop_points
cells when finding the cells to pull.

Prevent placing cells on soft blockages. By default, the -avoid_soft_blockage


command only avoids hard blockages.

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.

Figure 1: Example of Pulling Cells in a Contiguous Data Path

➢ 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

Performs magnet placement on current design

#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

➢ Specifies that the cells are to be marked as legalize_only after running


the magnet_placement command. By default, no cell is marked as legalize_only after
the command. This option is mutually exclusive with the -mark_fixed option.
-stop_by_sequential_cells
➢ Stops pulling cells when a sequential cell is encountered during level traversal. The
sequential cell is not pulled itself. This option is mutually exclusive with the -cells, -
stop_on_sequential_cells and -stop_points options.
➢ By default, the cells in logical level 1 only are considered for pulling. Logical level can
be changed using -logical_level command option.
-stop_on_sequential_cells
➢ Stops pulling cells when a sequential cell is encountered during level traversal. The
sequential cell is pulled itself. This option is mutually exclusive with the -cells, -
stop_by_sequential_cells and -stop_points options.
➢ By default, the cells in logical level 1 only are considered for pulling. Logical level can
be changed using -logical_level command option.
-exclude_buffers
➢ Ignores buffers and inverters when calculating the level. Buffers and inverters are
pulled like normal cells but are skipped over for level determination. By default,
buffers and inverters are considered as one level of logic.
-avoid_soft_blockage
➢ Avoids placing cells in soft placement blockages. By default, hard placement
blockage are honored and cells might be placed within soft blockages.
-only_report_magnet_cells
➢ Only report the magnet cells to be pulled while no cells are pulled. This option is
mutually exclusive with the -get_collection option.
-get_collection
➢ Return the pulled cells as a collection while pulling them. Use this option with any
other options except the -only_report_magnet_cells option to easily get the collection
of pulled cells while pulling them within single command.
-logical_levels level
➢ Specifies the number of logical levels to pull. By default, level is 1 and only the first-
level cells are pulled. This option is mutually exclusive with the -cells
.-multiple_long_port_mode auto | nearby
➢ Specifies how cells are pulled for multiple or long ports. The command supports two
modes: auto and nearby.

➢ 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.

Before the magnet_placement command :

Run the magnet_placement and place_opt commands :

After running the magnet_placement and place_opt commands :

You might also like