Resource sharing
Beginner
Using one piece of hardware for two jobs that never happen at the same time.
Novice
Using one piece of hardware, such as an adder, for two operations that never happen in the same clock cycle, with a selector (multiplexer) in front to choose its inputs.
Expert
Merging operators that are mutually exclusive, never active in the same cycle. It saves area but puts a multiplexer’s delay in front of the shared operator, so timing-driven tools weigh it against slack. Yosys proves the exclusivity with a SAT solver.
Explained in Logic synthesis (Design Flow).