1. A method of performing clock network synthesis on a non-transitory computer readable circuit design, the method comprising: by using a computing device, building a graph representation for a clock network; determining an optimal clock network balancing solution for the clock network by applying linear programming to the graph; and implementing the optimal clock network balancing solution.