Skip to main content

iCTS - Clock Tree Synthesis

iEDAAbout 2 min

1. Overview

Currently, iCTS supports clock tree construction under given constraints. Currently, iCTS takes DME and Slew-Aware as the basic framework and integrates multiple types of constraints for clock tree design. Due to the inability to obtain upstream Slew information in the bottom-up process of DME,
The downstream chained propagation will bring a large error. iCTS introduces the timing backward propagation method and performs timing propagation at the wire level during the buffer insertion stage to correct the insertion delay of the wire load unit.
iCTS uses a more accurate timing model for the estimation and propagation of timing information and constructs the clock tree with the goal of minimizing the design cost.

Constraints

The constraints that iCTS can support are shown in the following table, where the constraint names correspond to the Config parameter names

Constraint NameConstraint Level
skew_boundHard
max_buf_tranHard
max_sink_tranHard
max_capSoft
max_fanoutHard
max_lengthSoft

Timing Models

iCTS currently uses the PERI interconnect model as the slew calculation method for interconnects and the Elmore model as the delay calculation method for interconnects. For the insertion delay of buffers, the lookup table method (Lut) is used, which includes extensions of some methods, as shown in the following table.

ModelScenarioExtension
PERICalculation and propagation of interconnect slewFormula calculation, timing backward propagation correction
ElmoreCalculation of interconnect delayFormula calculation
Unit RCConversion of the load capacitance and resistance of interconnects based on the unit capacitance and resistanceFormula calculation
LutCalculation of buffer insertion delay and unit slew propagationBilinear interpolation method, multiple linear fitting model, machine learning model

Goals

Under the premise of meeting the design constraints as much as possible, for scenarios with multiple buffering schemes, iCTS will adopt the scheme with the minimum design cost for clock tree design. The current measurement methods are as follows:

  • Prefer the buffering scheme with a smaller size that meets the timing constraints.
  • For the case of continuous buffer insertion to balance the clock skew, in order to simplify the complexity of timing calculation and propagation, consider using the same buffer and perform timing balancing at a uniform wire length interval. At this stage, the buffering scheme that minimizes the increase in cell area is preferred.

2. Multi-Clock Balance

iCTS can support multi-clock design. First, a clock tree is constructed for each clock one by one to form the basic clock tree result. The clock skew of the top-level node is analyzed through the timing evaluation of iSTA, and finally, timing balancing is performed according to the design requirements.

3. Support Extensions

Multiple Buffer Types

iCTS supports clock tree design based on multiple buffer types (currently excluding inverters) and selects buffers using the strategy in Goals during the buffer insertion process. This feature can be set in the buffer_type parameter in Config.

Clustering to Reduce Scale

iCTS supports using the clustering method (K-Means) to reduce the running time of large-scale nets. For nets with more than 3000 registers, iCTS will automatically execute the K-Means algorithm and divide them into 50 clusters for local clock tree construction. After completing the local construction, the top-level clock tree is merged. Both the local construction and the top-level clock tree construction use the same clock tree algorithm.

During the K-Means clustering process, we set the initial number of iterations. In each iteration, we record the total register load capacitance of each cluster and consider the clustering result with a smaller variance of capacitance between clusters for clock tree construction.

Machine Learning Models

iCTS supports the invocation of Python models and methods based on Cython. Currently, the encapsulated Linear, XGBoost, CatBoost models, and basic plotting methods of Matplotlib are available. You can specify the compilation option SYS_PYTHON3_VERSION to specify the system Python version,
And by turning on the PY_MODEL option, C++ and Python interaction can be achieved. In this mode, the timing-related Lut process will use machine learning models.