Code is not synthesized as expected
Hi all, I have a code for registers configuration, in this code there is a "cpu interface" component which writes/reads to/from registers. The "cpu interface" drives a "cpu_wr" signal which is sent to a group of registers (the same signal is sent parallelly to all the registers in the group), this signal is the registers write enable. Behaviorally, this "cpu_wr" signal is routed parallelly to all the registers in the group, but the synthesis result is different- it seems that the signal goes through a chain of LUTs of some registers in the group before getting to the destination register. This unwanted synthesis causes some failing timinig paths (from the "cpu interface to the register). I believe that i can handle this failing path by defining it as a false path but i prefer to understand the reason to this synthsis before doing that, I'm not that experienced with FPGAs synthesis so the only reason i could thing of is that the "cpu_wr" signal might has a large fan out as it is connected to too many registers... any other ideas? i have attached the synthesis result and the hdl code. Thanks!