20 www.xilinx.com Synthesis and Simulation Design Guide
9.2i
Chapter 1: Introduction to Synthesis and Simulation
R
Designing FPGA Devices with Synthesis Tools
Most synthesis tools have special optimization algorithms for Xilinx FPGA devices.
Constraints and compiling options perform differently depending on the target device.
Some commands and constraints in ASIC synthesis tools do not apply to FPGA devices. If
you use them, they may adversely impact your results.
You should understand how your synthesis tool processes designs before you create FPGA
designs. Most FPGA synthesis vendors include information in their documentation
specifically for Xilinx FPGA devices.
Using FPGA System Features
To improve device performance, area utilization, and power characteristics, create
Hardware Description Language (HDL) code that uses FPGA system features such as
DCM, multipliers, shift registers, and memory. For a description of these and other
features, see the device data sheet and user guide. The choice of the size (width and depth)
and functional characteristics must be taken into account by understanding the target
FPGA resources and making the proper system choices to best target the underlying
architecture.
Designing Hierarchy
Hardware Description Languages (HDLs) give added flexibility in describing the design.
Not all HDL code is optimized the same. How and where the functionality is described can
have dramatic effects on end optimization. For example:
• Certain techniques may unnecessarily increase the design size and power while
decreasing performance.
• Other techniques can result in more optimal designs in terms of any or all of those
same metrics.
This Guide will help instruct you in techniques for optional FPGA design methodologies.
Design hierarchy is important in both the implementation of an FPGA and during
interactive changes. Some synthesizers maintain the hierarchical boundaries unless you
group modules together. Modules should have registered outputs so their boundaries are
not an impediment to optimization. Otherwise, modules should be as large as possible
within the limitations of your synthesis tool.
The “5,000 gates per module” rule is no longer valid, and can interfere with optimization.
Check with your synthesis vendor for the preferred module size. As a last resort, use the
grouping commands of your synthesizer, if available. The size and content of the modules
influence synthesis results and design implementation. This Guide describes how to create
effective design hierarchy.
Specifying Speed Requirements
To meet timing requirements, you should understand how to set timing constraints in both
the synthesis tool and the placement and routing tool. If you specify the desired timing at
the beginning, the tools can maximize not only performance, but also area, power, and tool
runtime. This usually results in a design that better matches the desired performance. It
may also result in a design that is smaller, and which consumes less power and requires
less time processing in the tools. For more information, see “Setting Constraints.”