How does Synthesis Tool do Boundary Optimization?

Boundary Optimization is a synthesis optimization technique to exploit functional constraints across design hierarchies. Boundary Optimization includes the following:

  1. Constant propagation across designs / hierarchies
  2. Unloaded logic removal if the hierarchical pins are unloaded or become unloaded
  3. Hierarchical pin inversion pushes (pushing inverters across hierarchies)
  4. Equal or opposite pin merging
  5. Re-wring feedthroughs across hierarchical pins

The diagram below shows each of the above techniques.

Synthesis Boundary Optimization Examples

Note, optimizations within the sub-design are not considered as Boundary Optimizations, for example, constant and unloaded register removal if the source of the constant / unloaded is within the sub-design.

In the Design Compiler, there are knobs to turn on/off individual Boundary Optimization techniques. For example:

# Enable constant propagation
# Combined only with “-no_boundary_optimization” option of “compile_ultra”
set compile_enable_constant_propagation_with_no_boundary_opt true

# Enable constant register removal
# Independent of “-no_boundary_optimization”
set compile_seqmap_propagate_constants true

# Enable unloaded register removal
# Independent of “-no_boundary_optimization”
set compile_delete_unloaded_sequential_cells true

Subscribe

Enter your email to get updates from us. You might need to check the spam folder for the confirmation email.

Leave a comment