1. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method for synthesizing a clock tree to distribute a clock signal to a set of clock sinks, the method comprising: computing a probability value for each clock sink in the set of clock sinks, wherein each probability value represents a probability that the corresponding clock sink has a critical clock latency; clustering the set of clock sinks into a set of clock sink clusters based on the probability values, wherein each clock sink cluster includes clock sinks whose probability values are within a non-overlapping range of probability values associated with the clock sink cluster; selecting an optimization goal for each clock sink cluster based on the non-overlapping range of probability values associated with the clock sink cluster; constructing an optimized subtree for each clock sink cluster based on the optimization goal that was selected for the clock sink cluster, wherein each optimized subtree distributes the clock signal to clock sinks in the corresponding clock sink cluster; and combining the optimized subtrees to obtain the clock tree.