Synthesis Process

Harshad Dabhade
7 min readDec 9, 2020

HDL provides a mechanism for specifying digital hardware precisely. This specification can then be used for verification by a simulator, by a proper verification tool, or synthesis or timing analysis, or the other process concerning the planning. The syntax of the language is defined precisely by a proper notation like BNF. However, the semantics definition of a language doesn’t have a proper notation developed and usable within the realm of computing. Thus, to assist understand the commonly understood semantics of a program during a language, some abstract models are used.

Logic Synthesis and Behavioral Synthesis

Synthesis converts Verilog HDL models of hardware down to gate-level implementations automatically and maps these into target technology. The synthesis also optimizes the design for a given set of constraints related to area and speed. The synthesis techniques and tools are commonly classified into logic and behavioral synthesis. These techniques apply to HDL descriptions at the logic level and at the behavioral level, respectively. Synthesis allows mapping of the same HDL description into multiple target technologies without any change in the design.

courtesy — Google

What is FPGA?

FPGA stands for field-programmable gate array. That’s quite a mouthful, so let’s start with a basic definition. Essentially, an FPGA could even be a hardware circuit that a user can program to hold out one or more logical operations. FPGAs are integrated circuits, or ICs, which are sets of circuits on a chip — that’s the “array” part. Those circuits or arrays are groups of programmable logic gates, memory, and other elements. With an FPGA, there’s no chip. The user programs the hardware circuit or circuits. The programming is often one simple gate (an AND or OR function), or it can involve one or more complex functions, including functions that, together, act as a comprehensive multi-core processor.

Uses for FPGAs cover a vast range of areas — from equipment for video and imaging to circuitry for computer, auto, aerospace, and military applications, additionally to electronics for specialized processing and more. These are particularly useful for prototyping application-specific integrated circuits (ASICs) or processors. An FPGA is often reprogrammed until the ASIC or processor design is final and bug-free and thus the actual manufacturing of the last word ASIC begins. Intel itself uses FPGAs to prototype new chips.

FPGAs are programmable silicon chips with a gaggle of programmable logic blocks surrounded by Input/Output blocks that are put together through programmable interconnect resources to become any quite digital circuit or system.

How does an FPGA work?

Think of FPGA as a breadboard (a huge one) for Digital Circuits. All the gates and flip-flops are present on the FPGA, and there are wires browsing the entire chip. Circuits are made by connecting these wires to the relevant gates or flip-flops as per the intended design. rather than connecting the gates/flip-flops employing a physical wire as during a breadboard, FPGAs have programmable interconnects which will be rewired programmatically. There are dedicated wires/routes for clock signals and only a specific number of FPGA pins are allowed to drive those global clock routing wires.

courtesy — Google

What language do you use to program FPGA?

Projects that work on FPGAs are written primarily using Hardware Languages ​​(HDL) such as Verilog, VHDL, or SystemVerilog. These three are the most popular languages ​​although there are many others like SystemC, Migen, MyHDL, Chisel, SpinalHDL, MATLAB, etc. which is much higher than the other basic ones mentioned earlier. A growing method of configuring FPGA is High-Level Synthesis (HLS) where the formulation is performed on a sub-C set and the compiler converts the composition into the appropriate Verilog code. The code written in the above-mentioned languages ​​is compiled and translated into a description of the connection (usually the merchant) of the integration tools. The output file containing the description of the connection (and more) is often called a bitstream, edited by FPGA.

How is FPGA “programmed”?

The correct term is FPGA “configuration” rather than FPGA “programming”. Still lately, both terms are used interchangeably. A bitstream may be a file that describes how an FPGA has got to be configured, i.e, the way to connect the gates, flip-flops, and other digital circuit elements within the FPGA through the interconnect matrix. there’s an inbuilt configuration circuit inside FPGAs that reads this bitstream file and configures the FPGA accordingly. There are some ways the bitstream is often read by the configuration circuit like via JTAG, Serial non-volatile storage, Parallel non-volatile storage, etc. The bitstream also can be transferred to the FPGA by another FPGA or Microcontroller which is responsible for the configuration and bootup process. FPGA board manufacturers usually provide software to program their boards. for instance, the Tenagra FPGA System Management Software from Numato Lab allows the programming of FPGA boards without using additional expensive JTAG cables.

Brief Summary About Implementation

In most FPGAs, logical blocks include memory objects such as flip-flops. A sequential communication sequence allows logical blocks to be connected as required by the program developer, such as a single loaf of bread planner. Logic and communication blocks can be customized in the field by the client or developer (after FPGA is done) to perform any meaningful function as required which is why the domain name can be customized.

Detecting regional configurations on the FPGA board has three steps, which are done using a software tool such as the Xilinx ISE, a tool from Xilinx that integrates the various phases of the FPGA design cycle into one software tool:

1) Synthesis: This process of converting the Verilog definition into an old gate-level netlist. The final product of the design separation phase is a netlist file, which is a text file containing a list of all antiquities events in the translated circuit and noa description of how they are connected.

2) Getting Started:

a. Translation: The translation step takes all the details of the network list and construction constraints and extracting the Xilinx NGD file (native generic database).

b. Mapping: The mapping step inserts an NGD file into the technology components to FPGA and generates an NCD file (regional description). This is like that it is necessary because different FPGAs have different properties, resources, and parts. Among other things, it is responsible for the process of converting old gates and flip-flops on netlist to LUTs (check tables) and other old FPGA elements. For example, if you define a circuit that contains multiple gates, however at the end of 6 inputs and 1 output, the circuit will be placed on one map to 6-LUT. Similarly, if you define a flip-flop it will be placed on a map of some kind of flip-flop that actually exists in FPGA.

c. Placement: This step puts map objects in a way that minimizes cables, delays, etc. The placement takes a map design and determines each specific location in the construction of the FPGA.

d. Route: This step prepares a fixed connection (cables) to make a call parts in construction. Because the number of available signal modes is very limited they are large, and there are many symptoms, this is usually the most time-consuming part.

3) FPGA Device Configuration: In this step, the default layout and transmission are changed to slow distribution using the Xilinx ISE tool. A small stream created by the tool (like a .bit file) is uploaded to FPGA. This slow file organizes the concepts and connections of the file FPGA in the way that the design is used.

The figure below shows the flow of the design described above.

FPGA Design Flow

FPGA uses: Attractive Options for Other Applications

The ability to configure FPGA Hardware, redesign it when needed, and configure it for a set of specific functions makes FPGA an attractive option for many operating systems.

By building FPGAs that are actually marine gates that can be redesigned to build almost any digital circuit one can imagine. This flexible flexibility and ability to customize the device with different designs will make FPGA a better choice compared to ASICs (Application Specific Integrated Circuit) for many applications. For example, in-depth learning, AI, or system acceleration software may rearrange one FPGA with different algorithms at different times to achieve excellent performance. The ASIC will not change in such cases. In some applications, the number of individual units made is very small. Designing and producing ASICs for these applications can be very expensive. In such cases, FPGA can offer less expensive but more powerful solutions. Below are some possible applications of FPGAs in some order :

Encryption

Definition of ASIC

Industrial, Medical and Scientific

Audio / Video Processing and Photo Stream

High computer performance, AI, and in-depth learning

Military and Space Applications

Sites, package processing, and other communications

--

--