5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 JHDL Hardware Generation Mike Wirthlin and Matthew Koecher

Slides:



Advertisements
Similar presentations
VERILOG: Synthesis - Combinational Logic Combination logic function can be expressed as: logic_output(t) = f(logic_inputs(t)) Rules Avoid technology dependent.
Advertisements

© 2003 Xilinx, Inc. All Rights Reserved Course Wrap Up DSP Design Flow.
Combinational Logic.
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.
Graduate Computer Architecture I Lecture 15: Intro to Reconfigurable Devices.
A code generator for the CAL actor language Lars Wernli Supervisor: Joern Janneck, UC Berkeley Professor: Lothar Thiele, ETH Zuerich.
DATAFLOW PROCESS NETWORKS Edward A. Lee Thomas M. Parks.
Introduction to VHDL (Lecture #5) ECE 331 – Digital System Design The slides included herein were taken from the materials accompanying Fundamentals of.
Introductory Comments Regarding Hardware Description Languages.
5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 Java Code Generation Steve Neuendorffer UC Berkeley.
Type System, March 12, Data Types and Behavioral Types Yuhong Xiong Edward A. Lee Department of Electrical Engineering and Computer Sciences University.
5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 C AL - An actor language Jörn W. Janneck The Ptolemy Group University of California, Berkeley.
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.
3/12/ Modeling and controlling the Caltech Ducted Fan Vehicle Steve Neuendorffer, Ptolemy Group, UC Berkeley.
Reconfigurable Computing S. Reda, Brown University Reconfigurable Computing (EN2911X, Fall07) Lecture 08: RC Principles: Software (1/4) Prof. Sherief Reda.
Compiling Application-Specific Hardware Mihai Budiu Seth Copen Goldstein Carnegie Mellon University.
Dataflow Process Networks Lee & Parks Synchronous Dataflow Lee & Messerschmitt Abhijit Davare Nathan Kitchen.
MoBIES PI-Meeting, July 2001, Jackson Hole Controller Design Using Multiple Models of Computation Edward Lee Johan Eker with thanks to Paul Griffiths,
February 12, 2009 Center for Hybrid and Embedded Software Systems Model Transformation Using ERG Controller Thomas H. Feng.
ECE C03 Lecture 141 Lecture 14 VHDL Modeling of Sequential Machines Hai Zhou ECE 303 Advanced Digital Design Spring 2002.
VLSI DSP 2008Y.T. Hwang3-1 Chapter 3 Algorithm Representation & Iteration Bound.
5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 MESCAL Application Modeling and Mapping: Warpath Andrew Mihal and the MESCAL team UC Berkeley.
Foundation and XACTstepTM Software
Kathy Grimes. Signals Electrical Mechanical Acoustic Most real-world signals are Analog – they vary continuously over time Many Limitations with Analog.
Maria-Cristina Marinescu Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology A Synthesis Algorithm for Modular Design of.
Maria-Cristina Marinescu Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology High-level Specification and Efficient Implementation.
An Introduction Chapter Chapter 1 Introduction2 Computer Systems  Programmable machines  Hardware + Software (program) HardwareProgram.
ECE 2372 Modern Digital System Design
An automatic tool flow for the combined implementation of multi-mode circuits Brahim Al Farisi, Karel Bruneel, João Cardoso, Dirk Stroobandt.
COMPUTER SCIENCE &ENGINEERING Compiled code acceleration on FPGAs W. Najjar, B.Buyukkurt, Z.Guo, J. Villareal, J. Cortes, A. Mitra Computer Science & Engineering.
Xilinx Development Software Design Flow on Foundation M1.5
Introduction to VHDL Arab Academy for Science, Technology & Maritime Transport Computer Engineering Department Magdy Saeb, Ph.D.
Sub-expression elimination Logic expressions: –Performed by logic optimization. –Kernel-based methods. Arithmetic expressions: –Search isomorphic patterns.
1 Semantic Analysis Aaron Bloomfield CS 415 Fall 2005.
“Software” Esterel Execution (work in progress) Dumitru POTOP-BUTUCARU Ecole des Mines de Paris
Los Alamos National Lab Streams-C Maya Gokhale, Janette Frigo, Christine Ahrens, Marc Popkin- Paine Los Alamos National Laboratory Janice M. Stone Stone.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
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.
HYPER: An Interactive Synthesis Environment for Real Time Applications Introduction to High Level Synthesis EE690 Presentation Sanjeev Gunawardena March.
Module 1.2 Introduction to Verilog
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
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.
Introduction to VHDL Simulation … Synthesis …. The digital design process… Initial specification Block diagram Final product Circuit equations Logic design.
ECE-C662 Lecture 2 Prawat Nagvajara
Gedae, Inc. Gedae: Auto Coding to a Virtual Machine Authors: William I. Lundgren, Kerry B. Barnes, James W. Steed HPEC 2004.
Graphical Design Environment for a Reconfigurable Processor IAmE Abstract The Field Programmable Processor Array (FPPA) is a new reconfigurable architecture.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
PTII Model  VHDL Codegen Verification Project Overview 1.Generate VHDL descriptions for Ptolemy models. 2.Maintain bit and cycle accuracy in implementation.
Digital Design Using VHDL and PLDs ECOM 4311 Digital System Design Chapter 1.
COE 202 Introduction to Verilog Computer Engineering Department College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals.
IAY 0600 Digital Systems Design Timing and Post-Synthesis Verifications Hazards in Combinational Circuits Alexander Sudnitson Tallinn University of Technology.
ASIC/FPGA design flow. Design Flow Detailed Design Detailed Design Ideas Design Ideas Device Programming Device Programming Timing Simulation Timing Simulation.
EECE 320 L8: Combinational Logic design Principles 1Chehab, AUB, 2003 EECE 320 Digital Systems Design Lecture 8: Combinational Logic Design Principles.
1 Introduction to Engineering Spring 2007 Lecture 18: Digital Tools 2.
Phoenix Based Dynamic Slicing Debugging Tool Eric Cheng Lin Xu Matt Gruskin Ravi Ramaseshan Microsoft Phoenix Intern Team (Summer '06)
IAY 0600 Digital Systems Design
Introduction Introduction to VHDL Entities Signals Data & Scalar Types
2. Specification and Modeling
Design Flow System Level
Introduction to cosynthesis Rabi Mahapatra CSCE617
IAY 0800 Digitaalsüsteemide disain
THE ECE 554 XILINX DESIGN PROCESS
Digital Designs – What does it take
Computer Systems An Introducton.
THE ECE 554 XILINX DESIGN PROCESS
Presentation transcript:

5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 JHDL Hardware Generation Mike Wirthlin and Matthew Koecher Brigham Young University

Ptolemy Miniconference 2Wirthlin, KoecherBYU Motivation Synthesizing Hardware from Synchronous Data Flow (SDF) Specifications –SDF models provide natural algorithm concurrency –SDF models are statically scheduled –Many relevant DSP algorithms can be specified in SDF Increasing Use of FPGAs for Signal Processing –Increasing density of FPGAs (1M gates for ~$20) –Exploit hardware parallelism –System programmability through reconfiguration Goal: Generate FGPA circuits from arbitrary Ptolemy II SDF models –Target FPGAs using BYU JHDL Design Tools –Synthesize hardware from arbitrary actors

Ptolemy Miniconference 3Wirthlin, KoecherBYU Synthesizing Hardware from SDF Many SDF synthesis projects rely on predefined SDF libraries –Actor libraries provide hardware implementation –One to one mapping between SDF actors and synthesized hardware Disadvantages of library approach –Hardware options limited by library size –Custom actors may require composition of many fine-grain primitives –Application-specific libraries often required –Parameterized libraries often used

Ptolemy Miniconference 4Wirthlin, KoecherBYU JHDL Hardware Generation Goal: synthesize hardware from arbitrary SDF actors defined in software –Describe custom hardware actors in software –Convenient specification for many operations –May coexist with library-based synthesis Approach –Specify actor behavior in software (Ptolemy II) –Specialize actor to model-specific parameters –Extract behavior of specialized actor –Synthesize corresponding hardware

Ptolemy Miniconference 5Wirthlin, KoecherBYU Example: 3-Tap FIR Filter

Ptolemy Miniconference 6Wirthlin, KoecherBYU Example: 3-Tap FIR Filter Actor composed of low-level primitives –Multipliers, Adders, signal limiter –Delay elements, Constants –Correspond to hardware elements Relatively cumbersome to create

Ptolemy Miniconference 7Wirthlin, KoecherBYU Example: FIR3Tap.java public class SimpleFIR... {... public void fire() { int in = input.get(0); // Get token int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) // clip result mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); // Send result delay2 = delay1; // update memory delay1 = in; }... }

Ptolemy Miniconference 8Wirthlin, KoecherBYU public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... } Example: FIR3Tap.java X input c0  X c1 +  X c2 + >= MIN MAX >= Generated Hardware

Ptolemy Miniconference 9Wirthlin, KoecherBYU Hardware Generation Approach Define custom actors in Java Create model with custom & existing actors Specialize actors and model Extract behavior of each actor –Disassemble byte-codes of specialized actor class file –Generate control-flow/dataflow graph (primitive operations) –Generate composite dataflow graph (predicated execution) –Extract internal state Generate a composite SDF graph (merge actor graphs) Perform graph/hardware optimization Generate hardware from synthesized SDF –Exploit Java-based JHDL Design environment –Generate EDIF netlist from JHDL hardware model

Ptolemy Miniconference 10Wirthlin, KoecherBYU Specifying Custom Actor Behavior Custom actors can be created in Ptolemy II –See Chapter 5 of the Ptolemy II Design Guide “Designing Actors” Behavior defined in three “action” methods –prefire()Determines ability of actor to fire –fire()Read inputs and create new outputs –postfire()Update persistent state Hardware synthesis analyzes “action” methods to extract actor behavior Actors and model “specialized” using Ptolemy II Java code generator infrastructure

Ptolemy Miniconference 11Wirthlin, KoecherBYU Java Classfile Disassembly Actor behavior extracted directly from compiled Java.class file –Common, well-supported standard –Eliminate need to parse Java source –Contains all necessary actor information –Tools readily available Soot Java Optimizing Framework –Developed at McGill University in Montreal –

Ptolemy Miniconference 12Wirthlin, KoecherBYU Generate Actor Control Flow Graph Identify basic blocks Annotate control dependencies Identify intervals –One or more basic blocks –Single entry point and single exit point –May require addition of join nodes (with appropriate conditional) Predicated execution graph public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 13Wirthlin, KoecherBYU Generate Actor Control Flow Graph public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 14Wirthlin, KoecherBYU Generate Actor Control Flow Graph public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 15Wirthlin, KoecherBYU Merge Control Flow public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 16Wirthlin, KoecherBYU Merge Control Flow public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 17Wirthlin, KoecherBYU Generate Basic Block Dataflow Graph public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... } Generate dataflow graph for each basic block –Vertices: Java primitive operations –Edges: Data dependencies between operations –Some parallelism extracted from sequential byte codes Predicated control-flow graph

Ptolemy Miniconference 18Wirthlin, KoecherBYU Generate Basic Block Dataflow Graph r0 load.r r0; fieldget SimpleFIR.input; virtualinvoke getInt; store.i i0; load.i i0; push 3; mul.i; load.r r0; fieldget SimpleFIR.delay1; push 5; mul.i; add.i; load.r r0; fieldget SimpleFIR.delay2; push 5; mul.i; add.i; store.i i7; load.i i7; push 5; ifcmple.i label0; Byte Code

Ptolemy Miniconference 19Wirthlin, KoecherBYU Merge Dataflow Graphs Merge each dataflow graph into a single dataflow graph –Insert into predicated execution graph –Resolve mutually exclusive variable definitions with select nodes Single dataflow graph for actor behavior

Ptolemy Miniconference 20Wirthlin, KoecherBYU Extract Actor State public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... } State contained in class field variables –Read followed by a write –Last value written to variable is variable state Graph updated to contain sample delay nodes –Sample delay node added for state variables State should be set in postfire() method

Ptolemy Miniconference 21Wirthlin, KoecherBYU Extract Actor State public class SimpleFIR... {... public void fire() { int in = input.get(0); int mac = in * c0; mac += delay1 * c1; mac += delay2 * c2; if (mac > MAX) mac = MAX; else if (mac < MIN) mac = MIN; output.send(mac); delay2 = delay1; delay1 = in; }... }

Ptolemy Miniconference 22Wirthlin, KoecherBYU Hardware Generation Generate hardware circuit for each Java primitive operation –Arithmetic –Logical operations –Delay elements Create circuit in JHDL data structure –Circuit simulation & viewing –EDIF netlist generation

Ptolemy Miniconference 23Wirthlin, KoecherBYU JHDL Circuit

Ptolemy Miniconference 24Wirthlin, KoecherBYU Limitations Currently limited to feed-forward behavior –No loops –No recursion –Limited method inlining Hardware types limited –Scalar primitive types 32-bit integers (no bit-width analysis) 1-bit Boolean –Custom Port/Token object used No resource sharing

Ptolemy Miniconference 25Wirthlin, KoecherBYU Conclusions and Future Work JHDL hardware generation provides ability to synthesize hardware for arbitrary actors –Convenient design specification –Reduces reliance on limited actor libraries Development ongoing Future Work –Bit-width analysis & support –Support additional standard Ptolemy types –Loop unrolling –Resources sharing and scheduling