What does SDF, and Back-annotation/Forward annotation mean? How is an SDF File generated, and why is Gate Level simulation done? Can someone explain how to do synthesis and what tools/file extensions (.sdf, .lib etc) mean?