This question might sound obvious for some, however, I found that I need to understand some VLSI fundamentals.
In Functional simulation setup and hold time are equal to zero, so we can simulate the design and have a data transition at an exact rising edge. My question is, once we simulate the RTL and validate its functionality, how to be sure that the synthesized design respects the setup time, in the context of FPGA and ASIC? Does the compiler add some delays automatically according to the gates library, so a data transition will happen after a clock edge? Do we need to set setup time with some constraints especially when dealing with ASIC?