02-05-2017 09:54 PM
Looking at the results of Vivado synthesis I get the following:
A signal, let's call it SX, is in the RTL an output of module MA.
When I make a schematic of my worst timing path from synthesis, the schematic has SX coming out of module MB. In the RTL SX is neither an input to or an output from MB.
Is Vivado being "really smart" and has determined that the best logic is one in which SX is an output of MB and not MA? Or, is this a sign that the synthesis is going very wrong?
Your comments will be very valuable to me.
02-06-2017 12:44 AM
It is not easy to say just from your description. If you send a test case we could explain you what is going on in detail.
But yes, Vivado can do optimization without changing the behavior of your design.
One way to check that the behavior is correct is to compare the behavioral and post-synthesis simulation.
02-06-2017 01:42 PM
@jsduran4xilinx yes, when flatten & rebuild option is set in synthesis, sometimes cells move to different hierarchies because of the optimizations. This is normal albeit unexpected and confusing at times.