TritonCTS 2.0¶
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.
Commands¶
Configure CTS Characterization¶
configure_cts_characterization [-max_slew <max_slew>] \
[-max_cap <max_cap>] \
[-slew_inter <slew_inter>] \
[-cap_inter <cap_inter>]
Argument description:
-max_slewis 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 inbuf_listfrom liberty file.-max_capis 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 inbuf_listfrom liberty file.-slew_interis 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_interis 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¶
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_listare the master cells (buffers) that will be considered when making the wire segments.-root_bufferis 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_listis taken.-wire_unitis 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_netsis a string containing the names of the clock roots. If this parameter is omitted, TritonCTS looks for the clock roots automatically.-out_pathis the output path (full) that thelut.txtandsol_list.txtfiles will be saved. This is used to load an existing characterization, without creating one from scratch.-post_cts_disableis 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_buffersis 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_distanceis 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_buffersvalue to be set.-clustering_exponentis 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_ratiois 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_enableenables 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_sizespecifies the maximum number of sinks per cluster. Default value is 20.sink_clustering_max_diameterspecifies maximum diameter (in micron) of sink cluster. Default value is 50.-clk_netsis a string containing the names of the clock roots. If this parameter is omitted, TritonCTS looks for the clock roots automatically.
Report CTS¶
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.
Example scripts¶
clock_tree_synthesis -root_buf "BUF_X4" \
-buf_list "BUF_X4" \
-wire_unit 20
report_cts "file.txt"
Regression tests¶
Limitations¶
FAQs¶
Check out GitHub discussion about this tool.
External references¶
License¶
BSD 3-Clause License. See LICENSE file.