TritonCTS 2.0 is available under the OpenROAD app as clock_tree_synthesis
command. The following tcl snippet shows how to call TritonCTS. TritonCTS
2.0 performs on-the-fly characterization. Thus there is no need to
generate characterization data. On-the-fly characterization feature
could still be optionally controlled by parameters specified to
configure_cts_characterization
command. Use set_wire_rc
command to
set clock routing layer.
configure_cts_characterization [-max_slew <max_slew>] \
[-max_cap <max_cap>] \
[-slew_inter <slew_inter>] \
[-cap_inter <cap_inter>]
Argument description:
-max_slew
is the max slew value (in seconds) that the characterization
will test. If this parameter is omitted, the code would use max slew value
for specified buffer in buf_list
from liberty file.-max_cap
is the max capacitance value (in farad) that the
characterization will test. If this parameter is omitted, the code would
use max cap value for specified buffer in buf_list
from liberty file.-slew_inter
is the time value (in seconds) that the characterization
will consider for results. If this parameter is omitted, the code gets the
default value (5.0e-12
). Be careful that this value can be quite low for
bigger technologies (>65nm
).-cap_inter
is the capacitance value (in farad) that the characterization
will consider for results. If this parameter is omitted, the code gets the
default value (5.0e-15
). Be careful that this value can be quite low for
bigger technologies (>65nm
).clock_tree_synthesis -buf_list <list_of_buffers> \
[-root_buf <root_buf>] \
[-wire_unit <wire_unit>] \
[-clk_nets <list_of_clk_nets>] \
[-out_path <lut_path>] \
[-post_cts_disable] \
[-distance_between_buffers] \
[-branching_point_buffers_distance] \
[-clustering_exponent] \
[-clustering_unbalance_ratio] \
[-sink_clustering_enable] \
[-sink_clustering_size <cluster_size>] \
[-sink_clustering_max_diameter <max_diameter>]
Argument description:
-buf_list
are the master cells (buffers) that will be considered when
making the wire segments.-root_buffer
is the master cell of the buffer that serves as root for
the clock tree. If this parameter is omitted, the first master cell from
-buf_list
is taken.-wire_unit
is the minimum unit distance between buffers for a specific
wire. If this parameter is omitted, the code gets the value from ten times
the height of -root_buffer
.-clk_nets
is a string containing the names of the clock roots. If
this parameter is omitted, TritonCTS looks for the clock roots automatically.-out_path
is the output path (full) that the lut.txt
and sol_list.txt
files will be saved. This is used to load an existing characterization,
without creating one from scratch.-post_cts_disable
is a flag that, when specified, disables the
post-processing operation for outlier sinks (buffer insertion on 10% of
the way between source and sink).-distance_between_buffers
is the distance (in micron) between buffers
that TritonCTS should use when creating the tree. When using this parameter,
the clock tree algorithm is simplified, and only uses a fraction of the
segments from the LUT.-branching_point_buffers_distance
is the distance (in micron) that
a branch has to have in order for a buffer to be inserted on a branch
end-point. This requires the -distance_between_buffers
value to be set.-clustering_exponent
is a value that determines the power used on the
difference between sink and means on the CKMeans clustering algorithm. If
this parameter is omitted, the code gets the default value (4).-clustering_unbalance_ratio
is a value that determines the maximum
capacity of each cluster during CKMeans. A value of 50% means that each
cluster will have exactly half of all sinks for a specific region (half for
each branch). If this parameter is omitted, the code gets the default value
(0.6).-sink_clustering_enable
enables pre-clustering of sinks to create one
level of sub-tree before building H-tree. Each cluster is driven by buffer
which becomes end point of H-tree structure.-sink_clustering_size
specifies the maximum number of sinks per
cluster. Default value is 20.sink_clustering_max_diameter
specifies maximum diameter (in micron)
of sink cluster. Default value is 50.-clk_nets
is a string containing the names of the clock roots. If
this parameter is omitted, TritonCTS looks for the clock roots automatically.Another command available from TritonCTS is report_cts
. It is used to
extract metrics after a successful clock_tree_synthesis
run. These
are: Number of Clock Roots, Number of Buffers Inserted, Number of Clock
Subnets, and Number of Sinks. The following tcl snippet shows how to call
report_cts
.
report_cts [-out_file <file>]
Argument description:
-out_file
(optional) is the file containing the TritonCTS reports.
If this parameter is omitted, the metrics are shown on the standard
output.clock_tree_synthesis -root_buf "BUF_X4" \
-buf_list "BUF_X4" \
-wire_unit 20
report_cts "file.txt"
Check out GitHub discussion about this tool.
TritonCTS 2.0 is written by Mateus Fogaça, PhD student in the Graduate Program on Microelectronics from the Federal University of Rio Grande do Sul (UFRGS), Brazil. Mr. Fogaça advisor is Prof. Ricardo Reis
Many guidance provided by (alphabetic order):
BSD 3-Clause License. See LICENSE file.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。