Advanced FPGA Design. Jan Pospíšil, CERN BE-BI-BP ISOTDAQ 2018, Vienna

Similar documents
FPGA for Software Engineers

VHDL for Synthesis. Course Description. Course Duration. Goals

Verilog for High Performance

קורס VHDL for High Performance. VHDL

ISE Design Suite Software Manuals and Help

FSM Components. FSM Description. HDL Coding Methods. Chapter 7: HDL Coding Techniques

Advanced Synthesis Techniques

Programmable Logic Devices HDL-Based Design Flows CMPE 415

CMPE 415 Programmable Logic Devices Introduction

8. Best Practices for Incremental Compilation Partitions and Floorplan Assignments

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

Best Practices for Incremental Compilation Partitions and Floorplan Assignments

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

VHX - Xilinx - FPGA Programming in VHDL

Sequential Circuit Design: Principle

ALTERA FPGAs Architecture & Design

ECE 4514 Digital Design II. Spring Lecture 20: Timing Analysis and Timed Simulation

Introduction to Field Programmable Gate Arrays

Field Programmable Gate Array (FPGA)

ECE 574: Modeling and Synthesis of Digital Systems using Verilog and VHDL. Fall 2017 Final Exam (6.00 to 8.30pm) Verilog SOLUTIONS

TOPIC : Verilog Synthesis examples. Module 4.3 : Verilog synthesis

ECE 4514 Digital Design II. Spring Lecture 15: FSM-based Control

FPGA. Logic Block. Plessey FPGA: basic building block here is 2-input NAND gate which is connected to each other to implement desired function.

Verilog Sequential Logic. Verilog for Synthesis Rev C (module 3 and 4)

Evolution of Implementation Technologies. ECE 4211/5211 Rapid Prototyping with FPGAs. Gate Array Technology (IBM s) Programmable Logic

Don t expect to be able to write and debug your code during the lab session.

In the previous lecture, we examined how to analyse a FSM using state table, state diagram and waveforms. In this lecture we will learn how to design

In the previous lecture, we examined how to analyse a FSM using state table, state diagram and waveforms. In this lecture we will learn how to design

Hardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University

Method We follow- How to Get Entry Pass in SEMICODUCTOR Industries for 3rd year engineering. Winter/Summer Training

Sequential Circuit Design: Principle

Configurable UART with FIFO ver 2.20

ALTERA FPGA Design Using Verilog

Recommended Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto

Pragmatic Simulation-Based Verification of Clock Domain Crossing Signals and Jitter using SystemVerilog Assertions

Digital Circuit Design Using Xilinx ISE Tools

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations

V1 - VHDL Language. FPGA Programming with VHDL and Simulation (through the training Xilinx, Lattice or Actel FPGA are targeted) Objectives

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

FPGA Based Digital Design Using Verilog HDL

VHDL: RTL Synthesis Basics. 1 of 59

VHDL for Logic Synthesis

Block-Based Design User Guide

Graduate Institute of Electronics Engineering, NTU FPGA Design with Xilinx ISE

Definitions. Key Objectives

EECS150 - Digital Design Lecture 10 Logic Synthesis

FT-UNSHADES credits. UNiversity of Sevilla HArdware DEbugging System.

Logic Synthesis. EECS150 - Digital Design Lecture 6 - Synthesis

Outline. EECS Components and Design Techniques for Digital Systems. Lec 11 Putting it all together Where are we now?

World Class Verilog & SystemVerilog Training

VHDL Essentials Simulation & Synthesis

LeonardoSpectrum & Quartus II Design Methodology

Vivado Design Suite User Guide

Lecture 12 VHDL Synthesis

Synplify Pro for Microsemi Edition Release Notes Version L M-G5, November 2016

An Introduction to Programmable Logic

University of California, Davis Department of Electrical and Computer Engineering. EEC180B DIGITAL SYSTEMS Spring Quarter 2018

Introduction to Partial Reconfiguration Methodology

Chapter 9: Sequential Logic Modules

DIGITAL DESIGN TECHNOLOGY & TECHNIQUES

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations

Implementing Tile-based Chip Multiprocessors with GALS Clocking Styles

Synthesis Options FPGA and ASIC Technology Comparison - 1

Field Program mable Gate Arrays

Advanced High-level HDL Design Techniques for Programmable Logic

Design and Verification of FPGA Applications

Graduate Institute of Electronics Engineering, NTU. Lecturer: Chihhao Chao Date:

Sunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.

EECS150 - Digital Design Lecture 20 - Finite State Machines Revisited

CMPE 415 Verilog Case-Statement Based State Machines II

A Brief Introduction to Verilog Hardware Definition Language (HDL)

Agenda. Introduction FPGA DSP platforms Design challenges New programming models for FPGAs

Design of DMA Controller Using VHDL

Xilinx ChipScope ICON/VIO/ILA Tutorial

Techniques for Digital Systems Lab. Verilog HDL. Tajana Simunic Rosing. Source: Eric Crabill, Xilinx

EECS150 - Digital Design Lecture 17 Memory 2

ECE 2300 Digital Logic & Computer Organization. More Sequential Logic Verilog

EN2911X: Reconfigurable Computing Topic 02: Hardware Definition Languages

Vivado Design Suite User Guide

PINE TRAINING ACADEMY

Verilog introduction. Embedded and Ambient Systems Lab

Design Guidelines for Optimal Results in High-Density FPGAs

TKT-1212 Digitaalijärjestelmien toteutus. Lecture 7: VHDL Testbenches Ari Kulmala, Erno Salminen 2008

Hardware Design with VHDL PLDs IV ECE 443

Lecture 11 Logic Synthesis, Part 2

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

Design Flow Tutorial

ECE 353 Lab 4. MIDI Receiver in Verilog. Professor Daniel Holcomb UMass Amherst Fall 2016

MLR Institute of Technology

Timing Analysis in Xilinx ISE

Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for best synthesis. Spring 2007 Lec #8 -- HW Synthesis 1

Logic Circuits II ECE 2411 Thursday 4:45pm-7:20pm. Lecture 3

Configurable UART ver 2.10

Lecture 3. Behavioral Modeling Sequential Circuits. Registers Counters Finite State Machines

Xilinx ASMBL Architecture

ECE 545 Lecture 12. Datapath vs. Controller. Structure of a Typical Digital System Data Inputs. Required reading. Design of Controllers

Synthesis of VHDL Code for FPGA Design Flow Using Xilinx PlanAhead Tool

Employing Multi-FPGA Debug Techniques

Synthesizable FPGA Fabrics Targetable by the VTR CAD Tool

Transcription:

Advanced FPGA Design Jan Pospíšil, CERN BE-BI-BP j.pospisil@cern.ch ISOTDAQ 2018, Vienna

Acknowledgement Manoel Barros Marin (CERN) lecturer of ISOTDAQ-17 Markus Joos (CERN) & other organisers of ISOTDAQ-18 Andrea Borga (NikheF), Torsten Alt (FIAS) for their contribution to this lecture All colleagues from CERN BE-BI-BP 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 2

Outline from the previous lesson Key concepts about FPGA design FPGA gateware design work flow Summary 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 3

Outline from the previous lesson Key concepts about FPGA design FPGA gateware design work flow Summary 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 4

from the previous lesson What is an FPGA? A Field-Programmable Gate Array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturing hence "field-programmable". https://en.wikipedia.org/wiki/field-programmable_gate_array 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 5

from the previous lesson FPGA Fabric Matrix-like structure I/O cells Logic cells (LUT, D flip-flops ) Configurable interconnect 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 6

from the previous lesson Hard Blocks 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 7

from the previous lesson FPGA Design Flow 101011010101011001010110101010101010110101011010011 1coloring-pages.net 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 8

Outline from the previous lesson Key concepts about FPGA design FPGA gateware design work flow Summary 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 9

Sequential Processing FPGA Gateware Design Software programming Code translated into program (set of instructions) Program executed sequentially (on CPU) Parallelism achieved by running program on multiple cores Processing structures and instruction sets are fixed FPGA gateware design is not a Programming Key concepts about FPGA design Parallel Processing Processing structures defined by HW designer Individual elements and their connections are described by schematics or Hardware Description Language (HDL) Intrinsically parallel, sequentialbehavior achieved by registers and Finite-State-Machines (FSMs) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 10

Key concepts about FPGA design HDL is Used for Describing Hardware Example of a WAIT statement (programming language vs. HDL) In programming language (e.g. C, Unix, #include <unistd.h>) sleep(5); // sleep 5 seconds In HDL (e.g. VHDL): o Not synthesizable (only for simulation test benches) o Synthesizable (for simulation and FPGA implementation) Register Transfer Level (RTL) http://en.wikipedia.org/wiki/register-transfer_level A design abstraction which models a synchronous digital circuit in terms of the flow of digital signals (data) between registers and logical operations performed on those signals 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 11

Key concepts about FPGA design HDL is Used for Describing Hardware Example of a WAIT statement (programming language vs. HDL) In programming language (e.g. C, Unix, #include <unistd.h>) sleep(5); // sleep 5 seconds In HDL (e.g. VHDL): o Not synthesizable (only for simulation test benches) o Synthesizable (for simulation and FPGA implementation) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 12

Key concepts about FPGA design Timing in FPGA Gateware is Critical Data propagates in the form of electrical signals through the FPGA x Synthesized RTL (Netlist) implemented into FPGA If these signals do not arrive to their destination on time The consequences may be catastrophic!!! 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 13

Key concepts about FPGA design When designing FPGA gateware you have to think HARDWARE 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 14

Outline from the previous lesson Key concepts about FPGA design FPGA gateware design work flow Summary 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 15

Project Specification Design Entry Behavioural Simulation Constraints (Physical & Timing) Synthesis Implementation Static Timing Analysis Functional Simulations (Post-Synthesis or Post-Implementation) Timing Simulation BitStream Generation & FPGA Programming In-System Debugging 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 16

Project Specification This is the most critical step The rest of the design process is based on it! 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 17

Project Specification 1. Gather requirements 2. Specify: 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 18

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Application Specific Gateware 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 19

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) General Purpose Gateware 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 20

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 21

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Small FPGA vendors may target specific markets (Microsemi offers high reliable FPGAs ) FPGA market-share by 2010 (M$) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 22

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS*) COTS board (Xilinx Devkit) Custom Board (*) Commercial Off-The-Shelf (COTS) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 23

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Commercial Tools FPGA Vendor Tools 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 24

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Optimization (speed, area, power or none/default) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 25

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Optimization (speed, area, power or none/default) Design entry (schematics or HDL which?) HDL most popular for RTL design but Schematics may be better in some cases (SoC bus interconnect ) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 26

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Optimization (speed, area, power or none/default) Design entry (schematics or HDL which?) Coding convention Your code should be readable How to write FSM Synchronizers Variable Naming Convention 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 27

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Optimization (speed, area, power or none/default) Design entry (schematics or HDL which?) Coding convention Xilinx ISE Tcl console Tool interface (GUI, scripts, both) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 28

Project Specification 1. Gather requirements 2. Specify: Target application (specific or general purpose) Features needed (SoC, multi-gigabit transceivers ) FPGA vendor (Xilinx, Intel (Altera), Microsemi (Actel), Lattice ) Electronic board (custom or COTS) Development tools (FPGA vendor or commercial) Optimization (speed, area, power or none/default) Design entry (schematics or HDL which?) Coding convention Tool interface (GUI, scripts, both) Code/project management (SVN, GIT ) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 29

Project Specification 3. Block diagram of the system FPGA logic But also related/connected devices 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 30

Project Specification 4. Pin planning Critical for board development One type of location constraints 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 31

Design Entry System should be Modular Modules and instantiations Separated Data & Control paths Well defined clock and reset schemes Design at RTL level (think hard ware) Pattern Generator 8-bit Counter RAM 256x16 Code should be Reusable Add primitives (and modules) by inference when possible Parameterize code (VHDL generics, SystemVerilog parameters ) Centralize parameters (VHDL packages, SystemVerilog packages ) Use configurable modules interfaces (VHDL records, SystemVerilog interfaces) Use standard features (I2C, SPI, Wishbone ) Use existing IP cores (e.g. from www.opencores.org) Avoid vendor specific IP Cores when possible Talk with your colleagues and see what other FPGA designers are doing Clock Reset Reset Data Increment Data Valid Flag 16 Reset 8 Address Write Enable Data Reset 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 32

Design Entry: Coding for Synthesis Synthesizable statements For synthesis & simulation Non-synthesizable statements Only for simulation VHDL example: HDL 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 33

Design Entry: Synchronous Design All memory elements are synchronized on clock Simplifies the designing process Synchronous design separates: Combinatorial logic (logic function) Sequential logic (memory elements) Rst R R + = Rst Combinatorial Logic FPGAs architecture and tools are designed to be use with synchronous designs use it! 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 34

Design Entry: Synchronous Design Combinatorial logic rules Sensitivity list must include ALL input signals Otherwise outputs can be non-responsive under changes of inputs ALL output signals must be assigned under ALL possible input conditions Otherwise undesired latches can be created (asynchronous storage element) No feedback from output to input signals Otherwise unknown output states (metastability) & undesired latches Asynchronous Latch 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 35

Design Entry: Synchronous Design Sequential logic rules Only clock signal (and asynchronous set/reset when used) in sensitivity list Otherwise undesired combinatorial logic can be produced All registers of the sequence must be triggered by the same clock Otherwise metastability can happen Include all registers of the sequence in the same reset branch Otherwise undesired register values can appear after reset 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 36

Design Entry: Synchronous Design Synchronous design rules FULLY synchronous design No combinatorial feedback No asynchronous latches Otherwise design tools can do incorrect analysis Time-constrain ALL input/output signals (registering may help) Otherwise uncontrolled length of paths can happen Properly design the reset scheme (mentioned later) Otherwise undesired register values can appear after reset Properly design the clocking scheme (mentioned later) Otherwise metastability & resources misuse can happen Properly handle Clock Domain Crossings (CDC) (mentioned later) Otherwise metastability can happen 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 37

Design Entry: Finite State Machines Finite State Machines (FSMs): Digital logic circuit with a finite number of internal states Used modelling sequential behavior Two variants of FSM o Moore: outputs depends only on the current state of the FSM o Mealy: outputs depends on the current state of the FSM and current values of inputs Modelled by State Transition Diagrams Many different FSM coding styles (But not all of them are good!!) FSM coding considerations: o Outputs may be assigned during states or state transitions o Be careful with unreachable/illegal states 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 38

Design Entry: Reset Scheme Used to initialize registers outputs to a know state It has a direct impact on: Performance Logic utilization Reliability Different approaches: A bad reset scheme may get you crazy!!! o No Reset Scheme Pros; Easier Routing, Less resources, Easiest timing closure Cons: Only reset at power up (in some devices not even that ) o Hybrid: Usually in big designs (Avoid when possible!!!) You should use SYNCHRONOUS RESET by default o Asynchronous Pros: No free running clock required, easier timing closure Cons: skew, glitches, simulation mismatch, difficult to debug, extra constraints, etc. o Synchronous Pros: No Skew, No Glitches, No simulation mismatch, Easier to debug, No extra constraints, etc.. Cons: Free-running clock required, More difficult timing closure <- In fact, reset is not always needed 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 39

Design Entry: Clock Scheme Clocking resources are very precious!!! Clock regions Local clock tree Clock trees (Global & Local) Other FPGA clocking resources Clock capable pins Global clock tree Clock buffers Clock Multiplexors PLLs & DCM Clock Regions Bad practices when designing your clocking scheme Gated clocks Derived clocks Comb FF CLK FF 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 40

Design Entry: Timing Tsu Sampling Point Th Tsu: Set Up Time Th: Hold Time Clk In DATA[0] DATA[1] Out Input data has to be stable here! DATA[0] DATA[1] Otherwise metastability can happen. 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 41

Clock Domain Crossing (CDC): The problem Design Entry: Timing Clock Domain Crossing (CDC) : passing a signal from one clock domain to another (A to B) If clocks are unrelated to each other (asynchronous) timing analysis is not possible Setup and Hold times of FlipFlop B are likely to be violated -> Metastability!!! Signal violates the setup-time of FlipFlop B clocked by Clk B Bout becomes metastable and then settles at either at 1 or 0 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 42

Clock Domain Crossing (CDC) Design Entry: Timing 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 43

Clock Domain Crossing (CDC): The solution Design Entry: Timing Avoid creating unnecessary clock domains Synchronizers Handshaking DPRAM Din Dout 1 Wr En Rr En 1 [0...0] Wr Addr Rd Addr [0...0] Wr Clk Rd Clk Din Wr En Full Asynchronous FIFO Dout Rr En Empty Clock phase alignment Wr Clk Rd Clk Be aware of FIFO overflow/underflow!!! 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 44

Design Entry: Primitives & IP Cores Primitives: Basic components of the FPGA Vendor (and device) specific E.g. buffers (I/O & clock), registers, BRAMs, DSP blocks Hard IP Cores: Complex hardware blocks embedded into the FPGA Vendor (and device) specific Fixed I/O location In many cases they may be set through GUI (wizards) E.g. PLLs, multi-gigabit transceivers, Ethernet MAC, CPU Soft IP Cores: Complex (or simple) modules ready to be implemented They may be vendor specific (encryption code, memory controller ) or vendor agnostic (commercial or open source (www.opencores.org)) In many cases they may be set through GUI (wizards) Two ways of adding Primitives & IP Cores to your system: Instantiation: The module is EXPLICITLY added to the system Inference: The module is IMPLICITLY added to the system Instantiated FlipFlop (for Microsemi ProAsic3) Inferred FlipFlop (Verilog) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 45

Synthesis What does it do? Translates the schematic or HDL code into elementary logic functions Defines the connection of these elementary functions The FPGA design tool optimizes the design during synthesis It may do undesired changes to the system (e.g. remove modules, change signal names, etc.)!!! Always check the synthesis report Example of Synthesis Report Warnings & Errors Estimated resource utilization Optimizations And more And also check the RTL/Technology viewers Example of RTL Schematic 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 46

Constraints: Timing Timing requirements for all paths must be provided to the FPGA design tool Defined in a constraint files (Xilinx.XDC, Altera.SDC) can be generated in GUI Most common types of constraints Timing constraint (Xilinx.ucf) Input paths Output paths Register-to-register paths (combinatorial paths) Path specific exceptions (e.g. false path, multi-cycle paths, etc.) To efficiently specify these constraints: 1) Begin with global constraints 2) Add path specific exceptions as needed (only for special cases) Over-constrained system is difficult to route 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 47

Constraints: Physical Pin planning As previously mentioned You should prepare Pin Planning during Specification Stage Floorplanning Only when really needed To place logic close to their related I/O pins To avoid routing across the chip Can improve timing (faster system speed) Over-constrained system is difficult to route 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 48

Implementation The FPGA design tool: 1) Translates timing and physical constraints in order to guide the implementation 2) Maps the synthesized netlist: o Logic elements to FPGA logic cells o Hard IP cores to FPGA hard blocks o Verifies that the design can fit the target device 3) Places and Routes (P&R) the mapped netlist: o Physical placement of the FPGA logic cells o Physical placement of the FPGA hard blocks o Routing of the signals through the interconnect network & clock tree The FPGA design tool may be set for different optimizations (Speed, Area, Power or none) Physical placement and timing change after re-implementing (use constraints to minimize these changes) You should always check the different reports generated during implementation 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 49

Static Timing Analysis The FPGA design tool analyses the signals propagation delays and clock relationships after implementation A timing report is generated, including the paths that did not meet the timing requirements Rule of thumb for timing violations: Setup violations: Too long combinatorial paths Hold violations: Issue with CDC and/or path specific exceptions The timing closure flow: 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 50

Bitstream Generation & FPGA Programming Bitstream: Binary file containing the FPGA configuration data Each FPGA vendor has its own bitstream file format (e.g..bit (Xilinx),.sof (Altera) ) FPGA programming: Bitstream is loaded into the FPGA through JTAG or SPI Configuration data may be stored in on-board FLASH and loaded by the FPGA at power up Remote programming (e.g. through Ethernet) Multiboot/Safe FPGA configuration FPGA gateware design work flow Power cycle (INCORRECT) Fallback (CORRUPTED) Multiboot/Safe FPGA configuration diagrams Power up Auto Golden image (bitstream1) Manual Trigger (ICAP) User image (bitstream2) CORRUPTED or INCORRECT 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 51

Simulation Event-based simulation to recreate the parallel nature of digital designs Verification of individual modules or full systems HDL simulators: Most popular: Modelsim Other simulators: Vivado Simulator (Xilinx), Icarus Verilog (Open-source) Different levels of simulation Behavioral: simulates only the behavior of the design Functional: uses realistic functional models for the target technology Timing: most accurate, uses Implemented design Simulator wave window Fast Slow Very Slow 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 52

In-System Analyzers & Virtual I/Os Your design is up and also running? Most FPGA vendors provide in-system analyzers & virtual I/Os Can be embedded into the design and controlled by JTAG Allow monitoring but also controlling the FPGA signals Minimize interfering with your system by: Placing extra registers between the monitored signals and the In-System Analyser It is useful to spy inside the FPGA but the issue may come from the rest of the board!!! Remember it is HARDWARE Virtual I/Os (Xilinx VIO) In-System Analyser (Altera SignalTap II) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 53

Debugging Techniques Divide & Conquer Follow the chain Clock 8-bit Counter 8-bit Address Pattern Generator Reset Increment Data Valid Flag Data 16-bit Reset RAM 256x16-bit Write Enable Data Reset Reset Open the box We are debugging HARDWARE 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 54

After debugging Documentation Maintenance and maybe User Support 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 55

Outline from the previous lesson Key concepts about FPGA design FPGA gateware design work flow Summary 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 56

Summary What to Remember FPGA gateware design is not a programming HDL are used for describing hardware Timing is critical in FPGA gateware design 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 57

Summary What to Remember GW Flow Plan, plan and plan again Modular and reusable system Coding for synthesis Resets and clocks schemes Clock Domain Crossing Constraint the design properly Read all the reports Be methodic when debugging & use all tools available A running system is not the end of the road (documentation, maintenance, user support) 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 58

Summary Additional Resources There are nice papers & books but FPGA vendors provide very good documentation about all topics mentioned in this lecture 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 59

Any questions? Jan Pospíšil j.pospisil@cern.ch 22/02/2018 Advanced FPGA Design, ISOTDAQ 2018, Vienna 60