There are many primitives in the Spartan-6 FPGA fabric that can be used with Set/Reset control, clock enables, and other logic control functions.These types of logic control can either be inferred in your logic or instantiated manually.
Clock Enable For clocks in your design, you should always use clockenables when available in order to save your clock resources, improve timing characteristics, and reduce power. If you want to enable a clock onan entire clock tree, you can use the clock enable available on BUFGs.If only registers need to be enabled, use the individual clock enable controls that are available in the registers.
Set/Reset When using a set or reset function in your design, always use the set or reset synchronously. Using an asynchronous reset can result in degraded performance as the synthesis tools cannot perform optimizations as easily.For other control ports used in different primitives, synchronous control should be used for the same reason since asynchronous operation limits optimization during synthesis.
Please read over the
HDL Coding Practices to Accelerate Design Performance White Paper (WP231)as it discusses in detail coding practices that should be used to optimize performance with your design:
http://www.xilinx.com/support/documentation/white_papers/wp231.pdf In addition, the Spartan-6 User Guides describe the primitives and blocks (blockRAM, CLB, DCM, PLL, buffers, etc.) in more detail so that you have a better understanding of how the Spartan-6 FPGA fabric can work for you in a design.