Section 11.3 Logic synthesis for FPGAs
The translation of a VHDL model into an FPGA prototype occurs in two steps: synthesis and immplementation. In logic synthesis, the EDA tool analyzes the VHDL source code to identify the logical resources needed by the prototype. For example, a simple four-bit binary counter contains the process:
process(clk)
begin
if rising_edge(clk) then
uX <= uX+1; -- uX is unsigned(3 downto 0)
end if;
end process;
X <= std_logic_vector(uX); -- map to output port
The synthesis tool infers from this statement that a four-bit register is required to hold
uX, and an incrementer is needed to update the count. A netlist is created from this decomposition, which can be displayed as a schematic diagram.
The register, in turn, is decomposed into four flip-flops and the incrementer is decomposed into four lookup tables.

The Xilinx Vivado tool, which we use in this class, also makes the netlist available in tabular form, with hyperlinking between the table and the schematic:

Additionally, the tool enables the designer to peek inside the LUTs to see their truth tables:

Compare this with logic synthesis for a breadboarded prototype, in which the designer analyzes the logic diagram to determine an effective set of IC packages, then makes a netlist in tabular form or by annotating the logic diagram.
During synthesis, the EDA tool will note syntax errors in the VHDL, issue warnings (e.g., Chapter 13), and report other useful information like estimates of propagation delays and resource usage.

