This paper presents an iterative synthesis approach to Petri net based deadlock prevention policy for flexible manufacturing systems (FMS). Given the Petri net (PN) of an FMS prone to deadlock, the goal is to obtain a live controlled PN such that its use for control can lead to high utilization of system resources. In the proposed method, at each iteration, a first-met bad marking is singled out from the reachability graph of PN. The objective is to prevent this marking from being reached by a place invariant. To satisfy this place invariant, a well-established invariant-based control method is used to derive a control place with its related arcs and initial marking. This process is carried out until the PN becomes live. The method is easy to use, effective and straightforward. It is generally applicable-yet its off-line computation is of exponential complexity. An example FMS is used to show the proposed method.