The Physical Synthesis phys_opt_design command performs timing-based logic replication of high-fanout drivers and critical-path cells.
Drivers are replicated, then loads are distributed among the replicated drivers, and then the replicated drivers are automatically placed.
This optional command is run after placement and before routing.
The phys_opt_design command optimizes the current placed netlist.
Below is a high-level description of how phys_opt_design replicates high-fanout nets:
1) Nets with high fanout are considered for replication.
Replication candidates are:
2) Loads are clustered based on proximity. Drivers are replicated and placed for each additional load cluster.
3) Timing is analyzed for each high-fanout net and replicas. Logical changes are committed if timing improves.
4) After replication, the design is checked again for high fanout nets to replicate. If high fanout nets still exist, the replication process continues until there are no high fanout nets.
The command reports each replicated net, how many times its driver was replicated, and the worst negative slack (WNS) before and after optimization.
Replicated objects are named by appending _replica to the original object name, followed by the replicated object count.
The phys_opt_design command also replicates cells in failing paths.
For example, if a cells loads are placed far apart, the cell may be replicated with new drivers placed closer to loads.
High fanout is not a requirement for this optimization to occur, but the path must fail timing with slack within 10% of the worst negative slack.
The phys_opt_design command operates on the design in memory and can be run as many times as is required.
If run again, the new run tries to optimize the results of the previous run. It is not guaranteed that timing continues to improve.
Running phys_opt_design on a design with routed nets is not supported.