Optimal gate sizing of digital circuits using geometric programming.
A C++ program that reads circuit netlists and formulates a geometric program for optimizing gate sizes in terms of power, delay, and area. Posynomial and monomial classes are used for the constructing geometric programs and may be useful in other problem domains. In the default configuration it sweeps a range of constraint bounds to generate a trade-off curves as shown in Sample Results.
This code was featured in the 2012 ICCAD Cadathlon competition.
Depends upon gnuplot
for plots, and Mosek's exponential optimization solver mskexpopt
for solving the geometric programs.
./gateSizing benchmarks/circuit.bdnet
Based upon the gate sizing geometric programming formulation in Boyd's A Tutorial on Geometric Programming.