The design flow involving retrofit is described in the following figure.
Two runs are involved, which are the “original run,” where
phys_opt_design is run after place_design and
the “replay run,” where phys_opt_design netlist changes are
performed before placement.
After the original run, the phys_opt_design optimizations are saved
to a Tcl script file using the Tcl command write_iphys_opt_tcl. The
script contains a series of iphys_opt_design Tcl commands to
recreate exactly the design changes performed by phys_opt_design in
the original run. You can save the optimizations from the current design in memory
or after opening an implemented design or checkpoint where
phys_opt_design has performed optimization.
The same design and constraints are used for the replay run. Before
place_design runs, the read_iphys_opt_tcl
command processes the iphys_opt_design command script and applies
the netlist changes from the original run. As a result of the netlist changes, the
design in the replay run might be more suitable for placement than the original run.
The design now incorporates the benefits of the phys_opt_design
optimizations before placement, such as fewer high-fanout nets after replication and
fewer long distance paths from block RAM outputs.
Similar to the phys_opt_design command, the
read_iphys_opt_tcl command has options to limit the replayed
design steps to certain types, such as fanout optimization, block RAM register
optimization, and rewiring.