ECE 667 Synthesis & Verification - Design Flow GAUT: Génération Automatic d’Unité de Traitement ECE 667 Fall 2014 ECE 667 Fall 2014 Synthesis and Verification.

Slides:



Advertisements
Similar presentations
Some Trends in High-level Synthesis Research Tools Tanguy Risset Compsys, Lip, ENS-Lyon
Advertisements

TOPIC : SYNTHESIS DESIGN FLOW Module 4.3 Verilog Synthesis.
© 2003 Xilinx, Inc. All Rights Reserved Course Wrap Up DSP Design Flow.
ECE Synthesis & Verification - Lecture 2 1 ECE 667 Spring 2011 ECE 667 Spring 2011 Synthesis and Verification of Digital Circuits High-Level (Architectural)
High Level Languages: A Comparison By Joel Best. 2 Sources The Challenges of Synthesizing Hardware from C-Like Languages  by Stephen A. Edwards High-Level.
ECE 551 Digital System Design & Synthesis Lecture 08 The Synthesis Process Constraints and Design Rules High-Level Synthesis Options.
Modern VLSI Design 3e: Chapter 10 Copyright  2002 Prentice Hall Adapted by Yunsi Fei ECE 300 Advanced VLSI Design Fall 2006 Lecture 24: CAD Systems &
Integrated Circuits Laboratory Faculty of Engineering Digital Design Flow Using Mentor Graphics Tools Presented by: Sameh Assem Ibrahim 16-October-2003.
FPGA Latency Optimization Using System-level Transformations and DFG Restructuring Daniel Gomez-Prado, Maciej Ciesielski, and Russell Tessier Department.
ECE 353 Computer Systems Lab II VHDL AND LABORATORY TOOLS TUTORIAL Professors Maciej Ciesielski & T. Baird Soules.
Aug. 24, 2007ELEC 5200/6200 Project1 Computer Design Project ELEC 5200/6200-Computer Architecture and Design Fall 2007 Vishwani D. Agrawal James J.Danaher.
A High Performance Application Representation for Reconfigurable Systems Wenrui GongGang WangRyan Kastner Department of Electrical and Computer Engineering.
Mahapatra-Texas A&M-Fall'001 cosynthesis Introduction to cosynthesis Rabi Mahapatra CPSC498.
VHDL Coding Exercise 4: FIR Filter. Where to start? AlgorithmArchitecture RTL- Block diagram VHDL-Code Designspace Exploration Feedback Optimization.
Altera’s Quartus II Installation, usage and tutorials Gopi Tummala Lab/Office Hours : Friday 2:00 PM to.
Center for Embedded Computer Systems University of California, Irvine and San Diego Loop Shifting and Compaction for the.
GanesanP91 Synthesis for Partially Reconfigurable Computing Systems Satish Ganesan, Abhijit Ghosh, Ranga Vemuri Digital Design Environments Laboratory.
L29:Lower Power Embedded Architecture Design 성균관대학교 조 준 동 교수,
FPGA-Based System Design: Chapter 4 Copyright  2004 Prentice Hall PTR HDL coding n Synthesis vs. simulation semantics n Syntax-directed translation n.
1 VERILOG Fundamentals Workshop סמסטר א ' תשע " ה מרצה : משה דורון הפקולטה להנדסה Workshop Objectives: Gain basic understanding of the essential concepts.
Introduction to Design Tools COE Review: Tools, functions, design flow Four tools we will use in this course – HDL Designer Suite FPGA Advantage.
CAD Techniques for IP-Based and System-On-Chip Designs Allen C.-H. Wu Department of Computer Science Tsing Hua University Hsinchu, Taiwan, R.O.C {
ASIC/FPGA design flow. FPGA Design Flow Detailed (RTL) Design Detailed (RTL) Design Ideas (Specifications) Design Ideas (Specifications) Device Programming.
Simulink ® Interface Course 13 Active-HDL Interfaces.
Synthesis Presented by: Ms. Sangeeta L. Mahaddalkar ME(Microelectronics) Sem II Subject: Subject:ASIC Design and FPGA.
Xilinx Development Software Design Flow on Foundation M1.5
Automated Design of Custom Architecture Tulika Mitra
© 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only Xilinx Design Flow FPGA Design Flow Workshop.
Section 10: Advanced Topics 1 M. Balakrishnan Dept. of Comp. Sci. & Engg. I.I.T. Delhi.
CSE 494: Electronic Design Automation Lecture 2 VLSI Design, Physical Design Automation, Design Styles.
FPGA (Field Programmable Gate Array): CLBs, Slices, and LUTs Each configurable logic block (CLB) in Spartan-6 FPGAs consists of two slices, arranged side-by-side.
1 Towards Optimal Custom Instruction Processors Wayne Luk Kubilay Atasu, Rob Dimond and Oskar Mencer Department of Computing Imperial College London HOT.
VHDL IE- CSE. What do you understand by VHDL??  VHDL stands for VHSIC (Very High Speed Integrated Circuits) Hardware Description Language.
Chonnam national university VLSI Lab 8.4 Block Integration for Hard Macros The process of integrating the subblocks into the macro.
Array Synthesis in SystemC Hardware Compilation Authors: J. Ditmar and S. McKeever Oxford University Computing Laboratory, UK Conference: Field Programmable.
L11: Lower Power High Level Synthesis(2) 성균관대학교 조 준 동 교수
Introduction to FPGA Created & Presented By Ali Masoudi For Advanced Digital Communication Lab (ADC-Lab) At Isfahan University Of technology (IUT) Department.
- 1 - EE898_HW/SW Partitioning Hardware/software partitioning  Functionality to be implemented in software or in hardware? No need to consider special.
Workshop - November Toulouse Toulouse, J.LACHAIZE (Astrium) High Level Synthesis.
Programmable Logic Training Course HDL Editor
MILAN: Technical Overview October 2, 2002 Akos Ledeczi MILAN Workshop Institute for Software Integrated.
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
Introductory project. Development systems Design Entry –Foundation ISE –Third party tools Mentor Graphics: FPGA Advantage Celoxica: DK Design Suite Design.
Introduction to VLSI Design – Lec01. Chapter 1 Introduction to VLSI Design Lecture # 11 High Desecration Language- Based Design.
Slide 1 2. Verilog Elements. Slide 2 Why (V)HDL? (VHDL, Verilog etc.), Karen Parnell, Nick Mehta, “Programmable Logic Design Quick Start Handbook”, Xilinx.
6. A PPLICATION MAPPING 6.3 HW/SW partitioning 6.4 Mapping to heterogeneous multi-processors 1 6. Application mapping (part 2)
Evaluating and Improving an OpenMP-based Circuit Design Tool Tim Beatty, Dr. Ken Kent, Dr. Eric Aubanel Faculty of Computer Science University of New Brunswick.
ECE-C662 Lecture 2 Prawat Nagvajara
© 2003 Xilinx, Inc. All Rights Reserved Course Wrap Up DSP Design Flow.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
Digital Design Using VHDL and PLDs ECOM 4311 Digital System Design Chapter 1.
ECE 448 Lecture 6 Finite State Machines State Diagrams vs. Algorithmic State Machine (ASM) Charts.
IAY 0600 Digital Systems Design Timing and Post-Synthesis Verifications Hazards in Combinational Circuits Alexander Sudnitson Tallinn University of Technology.
ECE 587 Hardware/Software Co- Design Lecture 23 LLVM and xPilot Professor Jia Wang Department of Electrical and Computer Engineering Illinois Institute.
How to use ISE Dept. of Info & Comm. Eng. Prof. Jongbok Lee.
EECE 320 L8: Combinational Logic design Principles 1Chehab, AUB, 2003 EECE 320 Digital Systems Design Lecture 8: Combinational Logic Design Principles.
ASIC Design Methodology
Introduction to Programmable Logic
Introduction to High-level Synthesis
Design Flow System Level
Introduction to cosynthesis Rabi Mahapatra CSCE617
Week 5, Verilog & Full Adder
IAY 0800 Digitaalsüsteemide disain
ECE-C662 Introduction to Behavioral Synthesis Knapp Text Ch
VHDL Introduction.
Architectural-Level Synthesis
Architecture Synthesis
HIGH LEVEL SYNTHESIS.
THE ECE 554 XILINX DESIGN PROCESS
THE ECE 554 XILINX DESIGN PROCESS
Presentation transcript:

ECE 667 Synthesis & Verification - Design Flow GAUT: Génération Automatic d’Unité de Traitement ECE 667 Fall 2014 ECE 667 Fall 2014 Synthesis and Verification of Digital Circuits

ECE 667 Synthesis & Verification - Design Flow 2 Design flow for DSP applications High-level Model (C, Matlab) High-Level Synthesis RTL Model Logic Synthesis Structural Netlist (Gate-Level) Physical Synthesis Physical Layout Fabrication

ECE 667 Synthesis & Verification - Design Flow Introduction Due to rising complexity of modern digital circuits, a growing demand has emerged to design hardware at higher levels of abstraction targeting faster design adjustments and higher simulation speed. To automate the design of such embedded systems, developing high-level synthesis tools that automatically convert the high-level specification to a lower level model (i.e. RTL, Structural Netlist (gate-level)) is desirable. 3

ECE 667 Synthesis & Verification - Design Flow GAUT high-level synthesis tool GAUT is a HLS (High Level Synthesis) tool developed at the Universite de Bretagne Sud (UB). Lab-STICC laboratory. GAUT generates RTL descriptions from a pure bit- accurate algorithmic specification described in C/C++ language. 4

ECE 667 Synthesis & Verification - Design Flow Design flow, where is GAUT? 5 C or C++ High-Level Synthesis with GAUT Logic Synthesis Physical Synthesis ASIC or FPGA ●Design Compiler by Synopsys ●XST(deliverd within ISE) by Xilinx ●Quartus II by Altera ●… GAUT is compatible with XST for logic synthesis and Placement-& Rout ISE for physical synthesis

ECE 667 Synthesis & Verification - Design Flow Interface Inputs A C or C++ file containing the algorithm to be synthesized. A library of operators characterized for a given technology target Outputs A VHDL RTL code (.vhd file) A description of the timing diagram of the I/O of the cicuit (.mem file) Other files generated to interface GAUT with other tools for synthesis. 6

ECE 667 Synthesis & Verification - Design Flow Architecture The architecture of the hardware components that GAUT generates is composed of three main functional units: Processing unit (PU) Memory unit (MEMU) Communication & Interface Unit (COMU) 7

ECE 667 Synthesis & Verification - Design Flow 8 GAUT target architecture

ECE 667 Synthesis & Verification - Design Flow 9 GAUT high-level synthesis flow Front End Back End

ECE 667 Synthesis & Verification - Design Flow The Front End The input description is a C/C++ function. Algorithmic CTM class library from Mentor Graphics is used. This allows the designer to specify signed and unsigned bit-accurate integer and fixed-point variables by using ac_int and ac_fixed data types. This library provides fixed-point data-types that supply all the arithmetic operations and built-in quantization (rounding, truncation... ) and overflow (saturation, wrap-around... ) functionalities. 10

ECE 667 Synthesis & Verification - Design Flow The Front End Example: ac_fixed is a signed fixed-point number of the form bb.bbb (five bits of width, two bits integer) for which the quantization and overflow modes are respectively set to ‘rounding’ and ‘saturation’. 11

ECE 667 Synthesis & Verification - Design Flow The Front End A) Compilation : The role of the compiler is to transform the initial C/C++ specification into a formal representation which exhibits the data dependencies between operations. The compiler of GAUT derives gcc/g to extract a data flow graph (DFG) representation of the application. The source file is processed in four main steps by gcc/g++: 1) The C preprocessor (cpp) expands the preprocessor directives. 12

ECE 667 Synthesis & Verification - Design Flow The Front End 2) Constructs the Abstract Syntax Tree (AST) for each function of the source file. The AST tree is next converted into a CDFG like unified form called GENERIC. The GENERIC representation is lowered into a subset called GIMPLE form. 3) False data dependencies are eliminated with Static Signal Assignment (SSA) and various scalar optimizations (dead code elimination, value range propagation, redundancy elimination). Loop optimizations (loop invariant, loop peeling, loop fusion, partial loop unrolling) are applied. 4) The GIMPLE form is translated into the GAUT internal representation. 13

ECE 667 Synthesis & Verification - Design Flow C code of Taylor(e x ) GIMPLE form 14

ECE 667 Synthesis & Verification - Design Flow The Front End B) Bit-Width Analysis Constant bit-width definition Bit-width and value range propagation C) Library Characterization Library characterization uses a DFG, a technological library and a target technology. This step, based on commercial logic synthesis tools like ISE from Xilinx and Quartus from Altera, produces a library of time characterized operators to be used during the following HLS steps. 15

ECE 667 Synthesis & Verification - Design Flow The Front End D) Operation Clustering Combine the computational function and the operation delay. This allows to indirectly consider operation’s bit-width since the propagation time of an operator depends on its operand’s size 16

ECE 667 Synthesis & Verification - Design Flow GAUT Main Window 17

ECE 667 Synthesis & Verification - Design Flow GAUT Main Window The main window consists of the following design steps: Compilation and graph exploration, Library characterizing, Datapath synthesis, Memory synthesis, Communication & interface synthesis, GANTT chart visualization, Functional validation / simulation. 18

ECE 667 Synthesis & Verification - Design Flow Step 1: Compiling the C code Click on the yellow box with label of "C/C++ compiler". Click on the open icon and select the path of the C/C++ file in your computer. For example C:\GAUT_2_4_3\test\taylorexp\taylorexp.c Compile the code by clicking on the "compile button". IF there is any error in your code, gcc returns the errors. Click on the graph tab and then click on the open button and load the taylorexp.cdfg file, which is the cdfg of the design. "notech_16b“ is selected by default as the technological target library. 19

ECE 667 Synthesis & Verification - Design Flow C/C++ Compiler 20 Compile Open

ECE 667 Synthesis & Verification - Design Flow Graph Tab 21 Back to Flow

ECE 667 Synthesis & Verification - Design Flow Graph Tab The cdfg contains 3 additions, 2 multiplicatins, a division and a shif right operator. Data values stored in variables x, fact, powx, temp and some other variables that came from loop unrolling of the code. Click on the "Back to Flow" button to back to the main window. 22

ECE 667 Synthesis & Verification - Design Flow Step 2: Processing Unit Synthesis The design of the Processing Unit (PU) integrates the following tasks: resource selection and allocation, operation scheduling, and binding of operations onto operators. Click on the purple box with label of "VHDL Synthesis". This part takes the cdfg generated in the previous step as the input. In the "Configuration" part in front of the "Graph" select taylorexp.cdfg file. 23

ECE 667 Synthesis & Verification - Design Flow Processing Unit Synthesis 24

ECE 667 Synthesis & Verification - Design Flow Step 2: Processing Unit Synthesis Cadency: is the rate of arrival of the sets of data inputs (sampling rate, iteration interval, throughput). Cadency must be a multiple of the system clock period. Clock: is the desired clock period of the future generated RTL component. Memory constraint: select this box if you want to synthesize by using the memory mapping constraints if you plan to generate a Memory Unit. To do that, you need to fill the Memory Constraints tab. 25

ECE 667 Synthesis & Verification - Design Flow Step 2: Processing Unit Synthesis IO constraints: select this box if you want to synthesize by using I/O constraint. To do that, you need to fill the Input/Output Constraints tab. Allocation strategy: you can choose between several allocation techniques listed in the first box. Using the second box you can choose between manual or automatic allocation. If you select manual, you can manually change the number of resources of each type. 26

ECE 667 Synthesis & Verification - Design Flow Manual Allocation 27

ECE 667 Synthesis & Verification - Design Flow Step 2: Processing Unit Synthesis Scheduling strategy: you can choose between several scheduling algorithms (i.e., default, ASAP, no_pipeline, no_more_stage algorithms). Vhdl output: you can choos between different styles of VHDL codes. Output: select Vhdl box to generate a.vhd RTL file, select the Gantt to obtain the.gantt file, select Mem box to generate a.mem file intended for Memory units and testbenchs. Click on the Run button to start the synthesis. 28

ECE 667 Synthesis & Verification - Design Flow Synthesis report 29

ECE 667 Synthesis & Verification - Design Flow Synthesis report CDFG parsing step Number of nodes of cdfg Time used for parsing cdfg Selection step Area Time used for selection Allocation step Operators CDFG latency Time used for allocation 30

ECE 667 Synthesis & Verification - Design Flow Synthesis report Scheduling step Number of operators, latency, stages Area of functional units Usage rate of each operator ( active time of operator/ latency) Time used for scheduling Registers allocation step Number of hardwired constants which are not stored in registers. Number of fifo registers Number of registers Number of flip flop Number of Multiplexer 2 to 1 Time used for register allocation 31 You can also see the active time of each operator on the Gantt chart

ECE 667 Synthesis & Verification - Design Flow Synthesis report.mem generation Number of pipeline stages Time used for.mem generation.vhd generation Time used for.vhd generation.gantt generation Time used for.gantt generation 32

ECE 667 Synthesis & Verification - Design Flow Memory constraint tab 33

ECE 667 Synthesis & Verification - Design Flow Memory constraint tab You can use Memory constraint tab to specify placement of variables in memory. By default, the constant and non aging variables are respectively hardwired and stored in registers in the processing units. However, they can be placed in memory when the static attribute is used in the specification. 34

ECE 667 Synthesis & Verification - Design Flow Results Viewer Click on the pink box with the label of "Results viewer“ to generate GANTT chart of the synthesized circuit. Click on the open icon and select "taylorexp_UT.gantt“ file. GANTT chart shows the result of the scheduling step and also gives the information about the contents of the circuit in term of operators and registers. 35

ECE 667 Synthesis & Verification - Design Flow GANTT chart 36 Multiplier mul.2 performed operations mul_op0 [0-20) and mul_op2 [20-40) register.3 saved variables temp [10- 50), temp [50], ex [60]

ECE 667 Synthesis & Verification - Design Flow GANTT chart Horizontally, the blue color shows the execution of the operations and the orange color defines the variables and the registers in which they are stored. Vertically, the names of the operators and the registers are defined. 37

ECE 667 Synthesis & Verification - Design Flow References [1] GAUT user manual [2] Philippe Coussy, et al, High-level synthesis from Algorithm to Digital Circuit, Springer,