two-level logic optimization