Greybox design methodology: a program driven hardware co-optimization with ultra-dynamic clock management