ICC2Design Planning01initial - DP
ICC2Design Planning01initial - DP
blog.csdn.net/m0_61544122/article/details/127564957
create_lib -use_technology_lib tech.ndm -ref_libs "tech.ndm xx.ndm ..." ; #If you use -
use_technology_lib, tech.ndm needs to be put in the list of ref_libs.
1/22
Outline is understood as an outline. When the design is large and only for design
planning, timing analysis or optimization is not performed. Use read_verilog_outline,
and the loaded content is as follows:
read_verilog_outline will subtract the modules, turning some modules into "dense" and
others into "sparse".
dense module: Reserve the module port minus buf and inv, for small modules.
sparse module: Only hard macro is reserved, module port is not reserved, and it is
aimed at large modules.
ICC2 supports partition (default partition) and allocate to set the dense module and
sparse module of the top level.
B.Leaf count < 1M, and hierarchical cell count > 1M -> dense+explore child modules
2/22
• Child leaf count < 1M ->skip
A.Module cell count + total glue count < glue count target (100,000)
• Repeat
B.Module cell count + total glue count > glue count target (100,000)
By default, the TOP std. cells are preserved (dense). This is controlled using -depth
(default: 1).
The std cell count in the module < 10,000 (default large_threshold)
The total number of std cells < 1,000,000 (always excluding buffers/inverters)
3/22
Modules are sparse if:
If depth=2, the same story occurs one level deeper. The top + first level modules are made
dense, regardless of their size. For all modules beneath, follow the conditions from above.
Set the boundary and the core area for std cell placement.
Example 1.
4/22
Example 2.
initial_floorplan -boundary {xx xx ...} -core_offset {40}; #The tool supports custom
borders, and it is necessary to accurately input the coordinates of the outer vertices of the
boundary.
5/22
Example 3.
6/22
4.Place IOS and Flip Chip Bumps
2) The commands for Flip chip or Wire bound design plus I/O are the same.
7/22
4.1 Create Bump Cells
The bump cell should be added before place I/O. Adding a bump can read def, aif
(advanced input format, read_aif), and can also be created using create_bump_array.
It should be noted that all bump cells need the same lib cell.
create_bump_array
-lib_cell bump_cell_name
[–name array_name]
[–origin {x y}]
[–orientation N|W|S|E|FN|FS|FE|FW]
The -pattern option has three options, namely inline, staggered1 and staggered2.
Generally use inline to create signal bump, use staggered to create PG bump, PG mesh
will not have short. In the figure below, purple and green are used to represent P/G.
8/22
4.2 Create I/O Guides
The place of the I/O cell needs to follow the I/O guide (create_io_guide or
create_io_ring).
Both -line and -side in create_io_guide are required options, which respectively define
the starting point of I/O and the length of clockwise extension.
This step is not necessary, the function is to control the position of I/O and adjust the
spacing. Use the command as follows:
set_signal_io_constraints \
-file constraint_file_name
or
set_signal_io_constraints \
Here -file and io_guide_object and -constraint are mutually exclusive and cannot be used
at the same time. It is easy to understand that constraint_file is to write io_guide and
corresponding constraints into a file according to a certain format, as shown in the
following figure.
9/22
As for, there are three ways of io place for io_guide and constraint constraints, namely
order-based constraints, location constraints and boundary-spacing control constraints.
1) Among them, order-based constraints have four definition methods, written as follows:
Order-only sequence (let the tool find the right position by itself)
{spacing_value}
10/22
2) location constraints
Using the relative position method, the io position obtained in this way is fixed, and the
writing method is as follows:
Where offset refers to the distance from the starting point in the io guide.
This method is to determine the relative position of the first or last io in the io guide and
the starting point or end point in the io guide, which can be used together with
order_based. The writing method is as follows:
{no_space}begin/end/both
The first io is 20um away from the starting point of the io guide, the distance between the
first and the second is 45um, and the distance between the second and the third is 0.
There is a point to note here. The default direction of IO in place is R0. The
specific direction to use depends on the situation. You can use the following
commands to adjust the default orientation.
11/22
The place of I/O relies on the previous io guide and io constraints. When the position of
I/O is fixed, it can be connected to the bump or PG mesh with RTL.
If you use flip chip encapsulation, you need to connect the IO Pad pin to the bump after
place_io, which requires the IO Pad pin to be defined as "CLASS BUMP" in LEF, and the
IO Pad pin attribute should be "is_pad = true ", but the properties connected to the core
or other IO pads are false.
…
PADIO
PIN
DIRECTION
INOUT ;
USE SIGNAL ;
PORT
CLASS
BUMP ;
LAYER MRDL ;
RECT 127.9990
4.0030 200.0000 36.0040 ;
END
…
To view the flying lines of IO pad and bump, you can click to open the GUI:
View->RDL Flylines
If the connection between IO and Bump is not satisfactory, you can use match type to
redefine the connection relationship before place_io . Examples are as follows:
12/22
add_to_matching_type test [get_cells {bump1}]
The match type means that an object can only be connected with other objects of the same
match type. match type can also be used to connect hard macro and bump.
The three bumps of A, B and C correspond to the seven IO pad pins of ag, and now they
need to be redistributed. The rules are as follows: A allocates two, B allocates three, and C
allocates two.
13/22
The command is as follows:
The corresponding pad pin and bump connections after reallocation are as follows:
To record the connection of match type, you can use the command
write_matching_type -from_existing_assignment -file_name mystery.tcl
14/22
6.Perform Hierarchy Exploration
Hierarchy exploration: Allows the user to determine which modules should be divided
into physical blocks by analyzing the module connection relationship by expanding the
logic hierarchy.
15/22
6.1 Module Boundary Creation
It is recommended to click "initialize" to view the top level module first, then select the
module and click "expand" to expand the analysis. After the module boundary place, you
can also select the module boundary and then "expand". For example, some important
sub-modules need to focus on adjusting the position and size .
16/22
6.2 Module Boundary Placement
After the initial module boundary is created, the "Placement" section functions to see
where they are in the design. The user needs to choose whether to see an irregular straight
shape or a regular rectangle. The shape created for the module boundary is not the final
shape of the commit block, but it can estimate the block's position.
If the provided place scheme shows overlap. Means that logic from overlapping module
boundaries all expects place to be in the same region. This can cause congestion issues
and helps to issue issues ahead of time. An example is shown in the figure below.
Rectangular form:
Rectilinear form:
17/22
There will be less overlap between the Rectilinear form module boundaries.
1)Net Connections
After the place module boundary, it is necessary to analyze the connection relationship
between them. The "Net Connections" tool is used, and the flying wire will display the
degree of correlation.
18/22
In this process, if the position of the module boundary can be determined, you can set a
fixed attribute for it.
19/22
Then "Place All" again, the module boundaries of these fixed attributes will not be
passively affected, and the tool will refer to these fixed module boundaries to place again.
In addition to Net Connections, the tool also has a tool "Data Flow Flylines" for viewing
connection relationships. You can view the logical relationship outside the buffer. The
"Aggregate" mode is used by default. In this mode, the connections of the pins are
aggregated into flying lines.
DFF can trace registers (preferably level 5), combinatorial logic other than buffer (up to
level 100), and fanout with an upper limit of 256. Users can choose a maximum value for
calculation, and then use a smaller value for later analysis.
20/22
7.Commit the Blocks
Commit block is an independent step, and commit means converting logic hierarchy into
physical sub-block.
The block name is used here, but the module is operated, so it is necessary to obtain the
ref name corresponding to the module. The method is as follows:
21/22
The corresponding command is: commit_block "ABCM U", where M does not need to
commit twice.
With the help of the above example, save the commit block to the new lib, the reference
command is as follows:
22/22