You are on page 1of 5

create_ccopt_flexible_htree

create_ccopt_flexible_htree
[-help]
[-effort {low | medium | high}]
-final_cell cellname
[-hv_balance {true | false}]
-name flexibleHtreeName
[-no_symmetry_buffers]
-pin pinName
[-sink_grid { columns rows }]
[-sink_grid_box { xmin ymin xmax ymax }]
[-sink_grid_exclusion_zones { xmin ymin xmax ymax }]
[-sink_grid_prefix prefixName ]
[-sink_grid_sink_area { width height }]
[-sinks {{pin_name | { xmin ymin xmax ymax }} ...}]
[-stop_at_sdc_clock_roots]
-trunk_cell cellName
Creates a design object for a flexible H-tree, under the specified pin. The H-tree is adjusted to consider placement and routing
blockages, and any power routing.
You can specify this command in a sequence to create multiple flexible H-trees.
Note : This command does not synthesize flexible H-trees. After creating or defining flexible H-trees using this command, use
thesynthesize_ccopt_flexible_htrees command to synthesize all the flexible H-trees created using this
command.
Icon
This command is part of a limited-access feature in this release. It is enabled by a variable specified using
the setLimitedAccessFeature command. To use this feature, contact your Cadence representative to explain
your usage requirements, and make sure this feature meets your needs before deploying it widely.
Note : This command is a part of the CCOpt native integration mode.

Parameters
-help Outputs a brief description that includes type and default information for
each create_ccopt_flexible_htree parameter. For a detailed description
of the command and all of its parameters, use the man
command: man create_ccopt_flexible_htree
-effort {low | medium | high}

Specifies the amount of effort to use in flexible H-tree synthesis. You can
specify a high, medium, or low search effort. Note that the runtime of the
command also depends on the number of sinks and the grid-step multiplier
that you choose when synthesizing flexible H-trees. For details, see the -
target_grid_step_multiplier parameter of
thesynthesize_ccopt_flexible_htrees command.
Default : medium
-final_cell cellname
Specifies the library cell to use for the ends of the clock tree. This parameter is
required.
-hv_balance {true | false}

When set to true , specifies that the horizontal and vertical metal wires can
only be balanced against other wires of the same orientation.
When set to false , specifies that any wire can be balanced against any other
wire.
Default: false
-name flexibleHtreeName
Specifies the name of the flexible H-tree to be created. This parameter is
required.
-no_symmetry_buffers

Specifies that no symmetry buffers should be added to balance the pin load of
nets in the flexible H-tree.
- Specifies the pin under which to create the flexible H-tree. This parameter is
pinpinName required.
-sink_grid {columns rows}

Specifies the columns and rows of a grid of H-tree sinks.


-sink_grid_box {xmin ymin xmax ymax}

Specifies the area of the box that the grid of H-trees should cover.
-sink_grid_exclusion_zones {xmin ymin xmax ymax}

Specifies the area of the boxes describing the zones that should not be covered
by the grid of the H-tree sinks.
-sink_grid_prefix prefixName
Specifies the prefix used for instance names of final cells, specified using the -
final_cell parameter, of the H-tree sinks in the grid.

-sink_grid_sink_area {width height}

Specifies the approximate size of the rectangle describing valid locations for
final cells, specified using the -final_cellparameter, per H-tree sink in the
grid.
-sinks { pin_name | { xmin ymin xmax ymax }}
Specifies approximate rectangular sink regions for the buffer locations at the
end of the tree, which are specified using the -final_cell parameter or pins.
The specified pins must be in the clock tree.
-stop_at_sdc_clock_roots

Specifies that the clock tree definition should stop searching for parts of the
clock tree at the root of SDC clocks.
- Specifies that this cell should be used for the buffers inside the flexible H-tree.
trunk_cell This parameter is required.

Related Properties
You can also set the following properties on the flexible H-tree design objects by using
the set_ccopt_property command:

 effort
 final_cell
 htree_sinks
 hv_balance
 no_symmetry_buffers
 pin
 sink_grid
 sink_grid_sink_area
 sink_grid_box
 sink_grid_exclusion_zones
 sink_grid_prefix
 stop_at_sdc_clock_roots
 trunk_cell

For more information about CCOpt properties, use the following command:

get_ccopt_property -help propertyName


Examples

 The following command creates a flexible H-tree for four sinks under the the pin " root/Y" . The sinks of the H-tree will be
of type BUFX16 and placed approximately inside the specified sink rectangles. Other buffers added to the H-tree will be of
type BUFX8 . No symmetry buffers are added to balance the pin load of nets. The flexible H-tree is then synthesized using
the synthesize_ccopt_flexible_htrees command.

create_ccopt_flexible_htree -name tree0 -pin root/Y -sinks { {200 200


300 300} {200 700 300 800} {700 200 800 300} {700 700 800 800} } -
final_cell BUFX16 -trunk_cell BUFX8 –no_symmetry_buffers
synthesize_ccopt_flexible_htrees

 The following commands create two flexible H-trees under the pins " rootA/Y " and " rootB/Y ". The sinks will be of the
type INVX8 and will be placed in the specified sink grids. Other buffers added to the H-trees will be of type INVX12 . No
symmetry buffers are added to balance the pin load of nets. The flexible H-trees are then synthesized using
the synthesize_ccopt_flexible_htrees command.

create_ccopt_flexible_htree -name htreeA -pin rootA/Y –sink_grid {2


2} -final_cell INVX8 -trunk_cell INVX12 –no_symmetry_buffers
create_ccopt_flexible_htree -name htreeB -pin rootB/Y –sink_grid {4
4} -final_cell INVX8 -trunk_cell INVX12 –no_symmetry_buffers
synthesize_ccopt_flexible_htrees
Note: During flexible H-tree synthesis a number of buffers (or inverters) are created. In designs with no fence regions, every
instance in the flexible H-tree, including all H-tree sinks, are assigned to the top-level hInst. In this case,
the create_ccopt_flexible_htree command moves the original fanout of the root pin of the flexible H-tree to a
single H-tree sink as shown in the image below.
In designs where there are fence regions, the command chooses hInsts for instances in the flexible H-tree considering fence
region constraints. The fanout of the root pin of the flexible H-tree is connected to H-tree sinks that best match the hInst to
which a fanout instance belongs.
The images below illustrate a clock tree with three clock tree sinks, ff1, ff2, and ff3 and three hInsts, "top", "left", and "right". The
hInsts "left" and "right" are fenced. Fenced regions are shown in pale orange. Sink ff1 is in hInst "right", ff2 is in the top-level
hInst, and ff3 is in hInst "left". The hInsts "left" and "right" are children of the top-level hInst. After flexible H-tree synthesis there
are four H-tree sink instances, t1, t2, t3, and t4 laid out in a square such that t1 is in the fence region for the hInst "left", t2 is in
the fence region for the hInst "right", and the other two are in hInst "top". The flops have been connected to H-tree sinks that
match their fence constraints. Note that when runningccopt_design after creating the flexible H-tree, multi-tap CTS
may reconnect ff2 to t4 rather than t3.
Before H-tree Synthesis

After H-tree Synthesis


Using the Sink Grid Parameters
The diagram below illustrates the usage of the sink grid parameters of this command. Note the following:

 The sink grid is specified as {4 4}, which means it will have four columns and four rows
 No H-tree sinks are created for sink areas that are completely covered by placement blockages or exclusions zones
 H-tree sink instances with the name specified in the diagram will be placed inside the unblocked parts of the sink areas
 The sink grid is adjusted by snapping it to the synthesis grid, which means that the specified sink areas are treated only as a
guide

You might also like