In RTL code, I add the MAX_FANOUT attribute on a register, which has a LUT1 inverter in the feedback loop.
When the register is replicated, the LUT1 also gets replicated.
Is this expected behavior?
This is expected behavior.
Vivado synthesis intends to keep the LUT-FF pair together for timing.
This ensures that the LUT and Flip-flop (FF) are kept in the same slice which improves timing results.
If you have a reason to not replicate the LUT1 in this situation, you can try to add the keep or dont_touch attribute on the input of the register (output of the LUT1).