FPGA Design Guide: Devices, Tools, and Processes

Welcome FPGA engineers to join the official WeChat technical group.

Clickthe blue wordsto follow us, FPGA Home – the best and largest FPGA pure engineering community in China.

FPGA Design Guide: Devices, Tools, and Processes

HLS

HLS materials are relatively scarce. Currently, apart from the official white paper (the best material), there is no detailed introduction on this aspect in China. However, today I saw that Teacher He Bin has published a book, which is the one below:

FPGA Design Guide: Devices, Tools, and Processes

Looking at the publication date:

Author: He Bin, Zhang Yanhui

Publication Date: 2019-01

It is still fresh. Those interested can buy a physical book to learn, mine is still on the way…

Here are a few tutorials on HLS design, including official materials:

Mi Lian’s tutorial on HLS in image processing:

Link: https://pan.baidu.com/s/1I15igy9iCaCwikZCkWwoVQ

Extraction Code: 2bhj

Source code for the above tutorial:

Link: https://pan.baidu.com/s/1I15igy9iCaCwikZCkWwoVQ

Extraction Code: 2bhj

Official materials:

Link: https://pan.baidu.com/s/1kblxn4Tq1XabglaxEHDDGA

Extraction Code: itjj

Xilinx FPGA Digital Signal Processing Guide: From HDL to Model and C Description

Link: https://pan.baidu.com/s/1on7iZhxBVTrz-1idEAqznQ

Extraction Code: kstq

FPGA Design Guide: Devices, Tools, and Processes

This book helps you better understand the internal workings of FPGA:

Link: https://pan.baidu.com/s/1vQnsinASz0gRDSdGe4J3jg

Extraction Code: rxgs

This book introduces what FPGA is, how FPGA works, how to program FPGA, and various concepts, devices, and tools encountered in FPGA design. The book presents what FPGA is, how FPGA works, how to program FPGA, and various concepts, devices, and tools encountered in FPGA design, such as traditional HDL/RTL-based simulation and logic synthesis, the latest pure C/C++ design capture and synthesis techniques, and DSP-based design processes. Additionally, the book covers a wealth of technical details required by engineers. This book is suitable for engineers designing with FPGA, software engineers developing embedded application tasks, and students and teachers in electrical engineering majors at higher education institutions.

Author Profile

Clive “Max” Maxfield, a well-known expert in the global semiconductor design field, is the editor-in-chief of the FPGA professional website Programmable Logic DesignLine. Mr. Maxfield has extensive experience in circuit design and development and is renowned worldwide for his outstanding writing skills. He has long contributed columns to top magazines and websites such as EDN and EE Design and has written several bestselling books on electronic technology.

Table of Contents

Chapter 1 Introduction

1.1 What is FPGA

1.2 Why FPGA is Interesting

1.3 Uses of FPGA

1.4 Content of This Book

1.5 What This Book Does Not Include

1.6 Target Audience

Chapter 2 Basic Concepts

2.1 Core of FPGA

2.2 Simple Programmable Functions

2.3 Fuse Connection Technology

2.4 Anti-Fuse Technology

2.5 Mask Programmable Devices

2.6 PROM

2.7 EPROM-based Technology

2.8 EEPROM-based Technology

2.9 Flash-based Technology

2.10 SRAM-based Technology

2.11 Summary

Chapter 3 Origins of FPGA

3.1 Related Technologies

3.2 Transistors

3.3 Integrated Circuits

3.4 SRAM/DRAM and Microprocessors

3.5 SPLD and CPLD

3.5.1 PROM

3.5.2 PLA

3.5.3 PAL and GAL

3.5.4 Other Programmable Options

3.5.5 CPLD

3.5.6 ABEL, CUPL, PALASM, JEDEC, etc.

3.6 Application-Specific Integrated Circuits (Gate Arrays, etc.)

3.6.1 Full Custom

3.6.2 Micromatrix and Micromosaic

3.6.3 Gate Arrays

3.6.4 Standard Cell Devices

3.6.5 Structured ASIC

3.7 FPGA

3.7.1 FPGA Platforms

3.7.2 FPGA-ASIC Hybrid

3.7.3 How FPGA Manufacturers Design Chips

Chapter 4 Comparison of FPGA Architectures

4.1 A Reminder

4.2 Some Background Information

4.3 Anti-Fuse vs. SRAM and Others

4.3.1 SRAM-based Devices

4.3.2 Security Issues and Solutions for SRAM-based Devices

4.3.3 Anti-Fuse-based Devices

4.3.4 EPROM-based Devices

4.3.5 EEPROM/FLASH-based Devices

4.3.6 FLASH-SRAM Hybrid Devices

4.3.7 Summary

4.4 Fine, Medium, and Coarse-Grained Architectures

4.5 MUX and LUT-based Logic Blocks

4.5.1 MUX-based Structures

4.5.2 LUT-based Structures

4.5.3 MUX vs. LUT

4.5.4 3, 4, 5, or 6 Input LUT

4.5.5 LUT vs. Distributed RAM and SR

4.6 CLB, LAB, and Slices

4.6.1 Xilinx Logic Units

4.6.2 Altera Logic Components

4.6.3 Slicing and Dicing

4.6.4 CLB and LAB

4.6.5 Distributed RAM and Shift Registers

4.7 Fast Carry Chains

4.8 Embedded RAM

4.9 Embedded Multipliers, Adders, MACs, etc.

4.10 Embedded Processor Cores (Hard and Soft)

4.10.1 Hard Microprocessor Cores

4.10.2 Soft Microprocessor Cores

4.11 Clock Trees and Timing Managers

4.11.1 Clock Trees

4.11.2 Clock Managers

4.12 General I/O

4.12.1 Configurable I/O Standards

4.12.2 Configurable I/O Impedance

4.12.3 Core and I/O Voltage

4.13 Gigabit Transmission

4.14 Hard IP, Soft IP, and Firm IP

4.15 System Gates vs. Actual Gates

4.16 FPGA Year

Chapter 5 FPGA Programming (Configuration)

5.1 Introduction

5.2 Configuration Files

5.3 Configuration Units

5.4 Anti-Fuse-based FPGAs

5.5 SRAM-based FPGAs

5.5.1 The Quick Process Deceives the Eye

5.5.2 Programming Embedded (Block) RAM, Distributed RAM

5.5.3 Multi-Programming Chains

5.5.4 Quick Reinitialization of Devices

5.6 Using Configuration Ports

5.6.1 FPGA as Master Device for Serial Download

5.6.2 FPGA as Master Device for Parallel Download

5.6.3 FPGA as Slave Device for Parallel Download

5.6.4 FPGA as Slave Device for Serial Download

5.7 Using JTAG Ports

5.8 Using Embedded Processors

Chapter 6 Who is Involved in the Game

6.1 Introduction

6.2 FPGA and FPAA Providers

6.3 FPNA Providers

6.4 Full Line EDA Providers

6.5 Specialized FPGA and Independent EDA Providers

6.6 FPGA Design Consultants Using Specialized Tools

6.7 Open Source, Free, and Low-Cost Design Tools

Chapter 7 FPGA vs. ASIC Design Styles

7.1 Introduction

7.2 Coding Styles

7.3 Pipelining and Logic Levels

7.3.1 What is Pipelining

7.3.2 Pipelining in Electronic Systems

7.3.3 Logic Levels

7.4 Asynchronous Design Practices

7.4.1 Asynchronous Structures

7.4.2 Combinational Circuits

7.4.3 Delay Chains

7.5 Clock Considerations

7.5.1 Clock Domains

7.5.2 Clock Balancing

7.5.3 Gated Clocks and Enabled Clocks

7.5.4 PLL and Clock Adjustment Circuits

7.5.5 Reliability of Data Transfer Across Clock Domains

7.6 Register and Latch Considerations

7.6.1 Latches

7.6.2 Flip-Flops with Set and Reset Inputs

7.6.3 Global Reset and Initialization Conditions

7.7 Resource Sharing (Time Division Multiplexing)

7.7.1 Use It or Lose It

7.7.2 Other Content

7.8 State Machine Coding

7.9 Testing Methodology

Chapter 8 Schematic-Based Design Flow

8.1 The Good Old Days

8.2 Early EDA

8.2.1 Front-End Tools, Such as Logic Simulation

8.2.2 Back-End Tools, Such as Layout Design

8.2.3 CAE + CAD = EDA

8.3 Simple Schematic-Driven ASIC Design Flow

8.4 Simple (Early) Schematic-Driven FPGA Design Flow

8.4.1 Mapping

8.4.2 Packaging

8.4.3 Layout and Routing

8.4.4 Timing Analysis and Post-Layout Simulation

8.5 Flat Schematics vs. Hierarchical Schematics

8.5.1 Dull Flat Schematics

8.5.2 Hierarchical (Module-Based) Schematics

8.6 Today’s Schematic-Driven Design Flow

Chapter 9 HDL-Based Design Flow

9.1 Problems with Schematic-Based Flow

9.2 Emergence of HDL-Based Design Flow

9.2.1 Different Levels of Abstraction

9.2.2 Early HDL-Based ASIC Design Flow

9.2.3 Early HDL-Based FPGA Design Flow

9.2.4 FPGA Flow with Known Structure

9.2.5 Logic Synthesis vs. Physical Synthesis

9.3 Life of Graphical Design Input

9.4 Absolute Surplus of HDL

9.4.1 Verilog HDL

9.4.2 VHDL and VITAL

9.4.3 Mixed-Language Design

9.4.4 UDL/I

9.4.5 Superlog and SystemVerilog

9.4.6 SystemC

9.5 Worth Considering

9.5.1 Worrying, Very Worrying

9.5.2 Serial vs. Parallel Multiplexers

9.5.3 Caution with Latches

9.5.4 Smart Use of Constants

9.5.5 Resource Sharing Considerations

9.5.6 Other Content Not to Be Ignored

Chapter 10 Silicon Virtual Prototypes in FPGA Design

10.1 What is a Silicon Virtual Prototype

10.2 ASIC-based SVP Methods

10.2.1 Gate-Level SVP (Generated by Fast Synthesis)

10.2.2 Gate-Level SVP (Generated by Gain-Based Synthesis)

10.2.3 Cluster SVP

10.2.4 RTL-Based SVP

10.3 FPGA-Based SVP

10.3.1 Interactive Operation

10.3.2 Incremental Layout and Routing

10.3.3 RTL-Based FPGA SVP

Chapter 11 C/C++ Based Design Flow

11.1 Problems with Traditional HDL Design Flow

11.2 C vs. C++ and Parallel Execution vs. Sequential Execution

11.3 SystemC Based Design Flow

11.3.1 What is SystemC and Where Does It Come From

11.3.2 SystemC 1.0

11.3.3 SystemC 2.0

11.3.4 Levels of Abstraction

11.3.5 Optional SystemC Based Design Flow

11.3.6 Love It or Hate It

11.4 Enhanced C/C++ Based Design Flow

11.4.1 What is Enhanced C/C++

11.4.2 Optional Enhanced C/C++ Design Flow

11.5 Pure C/C++ Based Design Flow

11.6 Different Levels of Abstraction for Synthesis

11.7 Mixed Language Design and Verification Environment

Chapter 12 DSP-Based Design Flow

12.1 Introduction to DSP

12.2 Optional DSP Implementation Solutions

12.2.1 Choose Any Device, But Don’t Let Me See Which One

12.2.2 System-Level Evaluation and Algorithm Verification

12.2.3 Software Running in DSP Cores

12.2.4 Dedicated DSP Hardware

12.2.5 FPGA Resources Related to DSP

12.3 FPGA-Centric Design Flow for DSP

12.3.1 Domain-Specific Languages

12.3.2 System-Level Design and Simulation Environment

12.3.3 Floating Point vs. Fixed Point Representation

12.3.4 System/Algorithm Level to RTL Conversion (Manual)

12.3.5 System/Algorithm Level to RTL Conversion (Automatic)

12.3.6 System/Algorithm Level to C/C++ Conversion

12.3.7 Module-Level IP Environment

12.3.8 Don’t Forget the Test Platform

12.4 DSP and VHDL/Verilog Mixed Design Environment

Chapter 13 Embedded Processor-Based Design Flow

13.1 Introduction

13.2 Hard Cores vs. Soft Cores

13.2.1 Hard Cores

13.2.2 Microprocessor Soft Cores

13.3 Dividing Design into Hardware and Software Parts

13.4 Worldview of Hardware and Software

13.5 Using FPGA as Its Own Development Environment

13.6 Enhancing Design Visibility

13.7 Other Mixed Verification Methods

13.7.1 RTL (VHDL or Verilog)

13.7.2 C/C++, SystemC, etc.

13.7.3 Physical Chips in Hardware Simulators

13.7.4 Instruction Set Simulators

13.8 A Quite Clever Design Environment

Chapter 14 Modular Design and Incremental Design

14.1 Treating Design as a Large Module

14.2 Dividing Design into Smaller Modules

14.2.1 Modular Design

14.2.2 Incremental Design

14.2.3 Issues That Exist

14.3 There Are Always Other Ways

Chapter 15 High-Speed Design and Other PCB Design Considerations

15.1 Before You Start

15.2 We Are All Young, So

15.3 An Era of Change

15.4 Other Considerations

15.4.1 High-Speed Design

15.4.2 Signal Integrity Analysis

15.4.3 SPICE and IBIS

15.4.4 Startup Power

15.4.5 Using Internal Termination Resistance

15.4.6 Serial or Parallel Data Processing

Chapter 16 Observing FPGA Internal Nodes

16.1 Lack of Visibility

16.2 Using Multiplexing Techniques

16.3 Dedicated Debugging Circuits

16.4 Virtual Logic Analyzers

16.5 Virtual Lines

16.5.1 Problem Description

16.5.2 Virtual Line Solutions

Chapter 17 IP

17.1 Sources of IP

17.2 Manually Optimized IP

17.2.1 Unencrypted RTL-level IP

17.2.2 Encrypted RTL-level IP

17.2.3 Netlist-level IP Before Layout and Routing

17.2.4 Netlist-level IP After Layout and Routing

17.3 IP Core Generators

17.4 Synthesis Materials

Chapter 18 Porting Between ASIC Design and FPGA Design

18.1 Alternative Design Methods

18.1.1 Only Doing FPGA Design

18.1.2 Conversions Between FPGAs

18.1.3 Conversion from FPGA to ASIC

18.1.4 Conversion from ASIC to FPGA

Chapter 19 Design Tools for Simulation, Synthesis, Verification, etc.

19.1 Introduction

19.2 Simulation (Cycle-Based, Event-Driven, etc.)

19.2.1 What is an Event-Driven Logic Simulator

19.2.2 Brief History of Event-Driven Logic Simulators

19.2.3 Logic Values and Different Logic Value Systems

19.2.4 Mixed Language Simulation

19.2.5 Other Delay Formats

19.2.6 Cycle-Based Simulators

19.2.7 Choosing the Best Logic Simulator in the World

19.3 Synthesis (Logic/HDL Synthesis and Physical Synthesis)

19.3.1 Logic/HDL Synthesis Techniques

19.3.2 Physical Synthesis Techniques

19.3.3 Timing Re-timing, Duplication, and Secondary Synthesis

19.3.4 Choosing the Best Synthesis Tool in the World

19.4 Timing Analysis (Static and Dynamic)

19.4.1 Static Timing Analysis

19.4.2 Statistical Static Timing Analysis

19.4.3 Dynamic Timing Analysis

19.5 General Verification

19.5.1 Verifying IP

19.5.2 Verification Environment and Creating Testbench

19.5.3 Analyzing Simulation Results

19.6 Formal Verification

19.6.1 Different Types of Formal Verification

19.6.2 What Exactly is Formal Verification

19.6.3 Terminology and Definitions

19.6.4 Other Optional Assertion/Property Specification Techniques

19.6.5 Static Formal Verification vs. Dynamic Formal Verification

19.6.6 Summary of Various Languages

19.7 Mixed Design

19.7.1 HDL Language to C Language Conversion

19.7.2 Code Coverage

19.7.3 Performance Analysis

Chapter 20 Choosing the Right Device

20.1 A Rich Selection

20.2 It Would Be Nice to Have a Selection Tool

20.3 Process

20.4 Basic Resources and Packaging

20.5 General I/O Interfaces

20.6 Embedded Multipliers, RAM, etc.

20.7 Embedded Processor Cores

20.8 Gigabit I/O Capability

20.9 Available IP

20.10 Speed Grades

20.11 Easy Annotation

Chapter 21 Gigabit Transceivers

21.1 Introduction

21.2 Differential Pairs

21.3 Various Standards

21.4 8bit/10bit Encoding, etc.

21.5 Deep Inside Transceiver Modules

21.6 Combining Multiple Transceivers

21.7 Configurable Resources

21.7.1 Comma Detection

21.7.2 Differential Output Swing

21.7.3 On-Chip Termination Resistance

21.7.4 Pre-emphasis

21.7.5 Equalization

21.8 Clock Recovery, Jitter, and Eye Diagrams

21.8.1 Clock Recovery

21.8.2 Jitter and Eye Diagrams

Chapter 22 Reconfigurable Computing

22.1 Dynamically Reconfigurable Logic

22.2 Dynamically Reconfigurable Interconnects

22.3 Reconfigurable Computing

Chapter 23 Field Programmable Node Arrays

23.1 Introduction

23.2 Algorithm Evaluation

23.3 picoChip’s picoArray Technology

23.3.1 An Ideal picoArray Application: Wireless Base Stations

23.3.2 picoArray Design Environment

23.4 QuickSilver’s ACM Technology

23.4.1 Designing Mixed Nodes

23.4.2 System Controller Nodes, Input/Output Nodes, and Other Nodes

23.4.3 Space and Time Division

23.4.4 Creating and Running Programs on ACM

23.4.5 More Content

23.5 This is Silicon, but Not as We Know It

Chapter 24 Independent Design Tools

24.1 Introduction

24.2 ParaCore Architect

24.2.1 Generating Floating-Point Processing Function Modules

24.2.2 Generating FFT Function Modules

24.2.3 Network-Based Interfaces

24.3 Confluence System Design Language

24.3.1 A Simple Example

24.3.2 More Features

24.3.3 Free Evaluation Version

24.4 Do You Have This Tool?

Chapter 25 Creating Open Source-Based Design Flows

25.1 How to Start an FPGA Design Studio from Scratch

25.2 Development Platform: Linux

25.3 Verification Environment

25.3.1 Icarus Verilog

25.3.2 Dinotrace and GTKWave

25.3.3 Covered Code Coverage Tool

25.3.4 Verilator

25.3.5 Python

25.4 Formal Verification

25.4.1 Open Source Model Checking

25.4.2 Open Source-Based Automated Inference

25.4.3 What is the Real Issue

25.5 Accessing Public IP Components

25.5.1 OpenCores

25.5.2 OVL

25.6 Synthesis and Implementation Tools

25.7 FPGA Development Boards

25.8 Synthesis Materials

Chapter 26 The Future of FPGA Development

26.1 A Concern

26.2 Next-Generation Architectures and Technologies

26.2.1 Billion Transistor-Level Devices

26.2.2 Ultra-Fast I/O

26.2.3 Ultra-Fast Configuration

26.2.4 More Hard IP

26.2.5 Analog and Mixed-Signal Devices

26.2.6 ASMBL and Other Architectures

26.2.7 Different Architectural Granularities

26.2.8 Embedded FPGA Cores in ASIC Structures

26.2.9 Embedded FPNA Cores in ASIC and FPGA Structures or Vice Versa

26.2.10 MRAM-based Devices

26.3 Design Tools

26.4 Expecting the Unexpected

Appendix

Appendix A Introduction to Signal Integrity

Appendix B Submicron Delay Effects

Appendix C Linear Shift Registers

FPGA Design Guide: Devices, Tools, and Processes

Welcome communication engineers and FPGA engineers to follow our official account.

FPGA Design Guide: Devices, Tools, and Processes

The Largest FPGA WeChat Technical Group in the Country

Welcome everyone to join the national FPGA WeChat technical group. This group has tens of thousands of engineers, a group of engineers who love technology. FPGA engineers here help each other, share with each other, and the technical atmosphere is strong! Hurry up and invite your friends to join!!

FPGA Design Guide: Devices, Tools, and Processes

Just press and hold to join the national FPGA technical group.

FPGA Home Component City

Advantageous component services, if you need, please scan to contact the group owner: Jin Juan Email: [email protected] Welcome to recommend to procurement

ACTEL, AD part advantages ordering (operating the full series):

FPGA Design Guide: Devices, Tools, and Processes

XILINX, ALTERA advantageous spot or ordering (operating the full series):

FPGA Design Guide: Devices, Tools, and Processes

(The above devices are part of the models, for more models please consult the group owner Jin Juan)

Service Concept: FPGA Home Component City aims to facilitate engineers to quickly and conveniently purchase components. After years of dedicated service, our customer service covers large listed companies, military research units, small and medium enterprises. Our biggest advantage is emphasizing service first, and achieving fast delivery and favorable prices!

Directly Operated Brands: Xilinx ALTERA ADI TI NXP ST E2V, Micron and more than a hundred component brands, especially good at components under US sanctions against China. We welcome engineer friends to recommend us to procurement or personally consult us! We will continue to provide the best service in the industry!

FPGA Design Guide: Devices, Tools, and Processes

FPGA technology group official thanks to brands: Xilinx, Intel (Altera), Microsemi (Actel), Lattice, Vantis, Quicklogic, Lucent, etc.

Leave a Comment

Your email address will not be published. Required fields are marked *