ICC2Design Planning02Shaping Placement
ICC2Design Planning02Shaping Placement
blog.csdn.net/m0_61544122/article/details/127664536
3) - 4) Shaping Block and Voltage Areas+Analysis and Incremental Shaping: Adjust the
shape of the block and power domain.
* abstract view can be understood as a summary view, retaining the std cell of the block
interface, including the first and last registers of in2reg and reg2out; retaining all hard
macros; saving time when doing top-level design.
1.Split Constraints
If this step is a bottom-up design, then split constraints can be performed after the
commit block. If it is a top-down design, this step needs to be performed after reading upf
and sdc .
1/19
Split constraints are used to split the sdc constraints and upf of the top level and block
level when the partition block is used, and do not split any content related to physical
information. After splitting, you can get:
1) The timing constraints and upf of the block level can be used for the physical realization
of the block level.
2) top level timing constraints and upf, where the timing constraints only retain the
timing constraints of the top level part and the top-to-block interface, and upf only retains
the top level part.
2/19
1) read_verilog
Here, if the verilog netlist data information of the outline is used, it is not enough, and the
complete netlist needs to be used.
or
commit_block
expand_outline
To read upf, use the load_upf command. If there is upf in the block level, it can also be
read in through load_upf -scope.
load_upf top_level.upf
3/19
load_upf incremental.upf (as a supplement)
... ...
commit_upf
Among them, set_voltage should define all the supply_nets in UPF (if VDD and
block/VDD are connected together, then only one definition is enough), after setting up
the MCMM environment, you can use report_pvt to report which supply nets do not
define voltage .
Split constraints need to specify the corresponding block inst name, use the command
set_budget_options.
set_budget_options -reset
split_constraints
It should be noted that if you want to keep the constraints inside a block, you can use the
following command:
or
5)split_constraints Output
The default output folder name of split constraints is ./split, and the directory structure is
as follows:
4/19
Split constraints will generate all modes and corners by default. Specify corner or mode to
add -corner or -mode when split_constraints.
Example mapfile:
Example clocknets.tcl:
This file is used to identify clock nets because there is no timing information in the
place_pins stage. place_pins needs to distinguish between clock and signal nets, because
by default, the feedthrough of clock nets is disabled.
6)UPF&Split Constraints
Domains
5/19
Supply sets & associations
Supply_nets
Strategies (levelshifter, switch, isolation) Power States and Power State Tables
Example 1
Example 2
6/19
2.Create Placement Abstract
The abstract view can be understood as a summary view, retaining the std cell of the block
interface, including the first and last registers of in2reg and reg2out; retaining all hard
macros; saving time when doing top-level design.
7/19
The intermediate level connects the upper and lower level blocks. The abstract view will
have more logic than the abstract view generated by the general leaf level block, but it is
better to keep the design view.
To make the intermediate level (intermediate level) also apply abstract view you can use
the command:
# expand outline
open_lib top_lib
open_block top.outline
expand_outline
set_constraint_mapping_file ./split/mapfile
1) After the abstract view of the block is created, the corresponding design is the locked
attribute, that is, the read-only mode.
8/19
2) When the design is opened, the modification of its abstract view will be merged into the
design view.
3) If you have modified the design view, you need to create abstract again.
2) set_ignored_layer, this step needs to set the winding resources. Use the command:
set_ignored_layer -min_routing_layer M2
set_ignored_layer _max_routing_layer M8
report_ignored_layer
3) set_shape_options, set channel size (between blocks, block and top level macro, block
and core boundary), set voltage area guard band, and set whether to put top level cells
together. Use the command:
set_shaping_options \
-min_channel_size 10 \ #default 0
-guard_band_size 6 \ #default 0
Here, if you don't like the voltage area automatically created by shape_blocks, the user
can also create the voltage area before the shape block.
The hard and soft constraints of block and voltage area can be written into the config file,
using the command, "shape_block -constraint_file <filename> ", the example is as
follows:
9/19
Utilization, shape constraints.
Example 2. channels
3.3 PG Strategy
Set the pg mesh scheme for the block.
-core, the solution is applied to the entire core area, and -block can also be used. After
compile_pg, the pg mesh is routed on the entire core area or on the block, and the tool
will avoid the boundary of the block.
10/19
3.4 keepout margin for blocks
Setting keepout margin for block is the same as setting method for inst.
In the floorplan stage of the chip level, the movement and flipping of MIB (multiple
instances) blocks can only be along the X-axis or Y-axis (keep the routing direction
consistent and reduce congestion), so the direction of the block is only R0, MX, R180 and
MY.
To allow the MIB place to move to a different location or change direction in the future,
you need to ensure that the following settings are consistent:
2) power grid
If the block moves or changes direction and cannot keep the above settings consistent,
then the site and power grid will fail when push down. As shown below.
Therefore, adjusting the MIB block requires the following two steps:
2) Specify the block grid and snap point for the block
Use the snap point to snap the block to the block grid. The snap point must be on the
block grid, and the default is the lower left corner of the block.
11/19
The snap point defaults to the lower left corner of the block (0, 0). To change the snap
point, use set_block_grid_references -design block_name -grid grid_name -snap_point
"x y"
12/19
Through From/To, you can see the connection relationship related to the block.
The timing ruler does not display the length, but displays the delay value. The user can
customize the layer, buffer type, NDR, etc., and the user controls the distance from point
to point, and the tool will display the delay.
If the first shape block is not satisfied, you can choose incremental shaping
13/19
shape_blocks -incremental congestion_driven/target_utilization_driven
target_utilization_driven shapes the block according to the utilization rate of each block
target, while congestion driven needs to place standard cell and global route first and then
shape the block to improve channel congestion.
Give the target utilization of the block a certain margin, so that the shape block of incr will
not overlap.
After the shape block, you need to push down the top routing track to each block.
Set the origin position of the block. By default, the lower left corner is set to the origin (0,
0). If the right or upper side of the block is changed when the block is resized, the origin
does not change. If the left or lower side is changed, the origin of the block changes. If you
14/19
want to reset the origin, you can use move_block_origin.
0.0000 0.0000
-23.1950 -37.3770
5.Placement
Check whether the block shape has overlap, check whether the block or voltage area
exceeds the parent block boundary, check placement constraints, and check the utilization
of block/voltage area/bound.
15/19
Load pin constraints before place, you can specify which side the pin is placed on, offset,
level, etc.
The hard macro needs to set the keepout margin before the place, which is usually set
with the create_keepout_margin command, and the tool also supports the command to
automatically set the keepout margin according to the pin count.
plan.place.default_keepout true(default)
set_macro_constraints -
preferred_location {x y} {hard macro list}
create_placement -floorplan
16/19
5.7 Automatic Placement Blockage
By default, the create placement tool will generate blockage in the channel, and users can
also execute the command to add blockage separately.
derive_placement_blockages:
create_channel_congestion_map -channel_width_threshold 20
17/19
route_global -floorplan true -congestion_map_only true -virtual_flat
top_and_interface_routing_only
The user can set the bound constraint placement, so that the specified cell list should be
placed together as much as possible.
5.10 Placement
Put the standard cell and non-fixed hard macro place on it.
create_placement -floorplan
1) incremental placement
After analyzing congestion, if you need to do incremental placement, you can use:
Among them, there are three modes of congestion driven placement, one is to reduce only
macro-related congestion, the other is to only reduce standard cell-related, and the last is
a combination of both.
By default, create placement places the entire chip. If you want to target the top level, you
can use the following command:
create_placement
Report Placement
18/19
19/19