Abstract: A method for implementing soft constraints in scheduling comprises receiving a description of circuit behavior. The description is un-timed. A scheduling solution is generated for use in scheduling the description. The scheduling solution includes scheduling variables and an objective function. The scheduling variables schedule the time of at least one operation. The objective function includes a penalty term and constraints comprising at least one hard constraint and at least one soft constraint. The constraints are created on the scheduling variables. The penalty term comprises a slack variable representing violations of the constraints. The penalty term measures the design cost of violating the soft constraint. Following generation of the scheduling solution, the description is scheduled by applying the scheduling solution to the description. Timing information of the description is provided as an output of the scheduling.