Modeling VHDL in POSE. Overview Motivation Motivation Quick Introduction to VHDL Quick Introduction to VHDL Mapping VHDL to POSE (the Translator) Mapping.

Slides:



Advertisements
Similar presentations
System Integration and Performance
Advertisements

CMSC 611: Advanced Computer Architecture
Control path Recall that the control path is the physical entity in a processor which: fetches instructions, fetches operands, decodes instructions, schedules.
Quick Start to VHDL VHDL Very Hard Difficult Language Very Hard Difficult Language!!!!!!!
1 Seoul National University Logic Design. 2 Overview of Logic Design Seoul National University Fundamental Hardware Requirements  Computation  Storage.
Trace-Based Automatic Parallelization in the Jikes RVM Borys Bradel University of Toronto.
02/02/20091 Logic devices can be classified into two broad categories Fixed Programmable Programmable Logic Device Introduction Lecture Notes – Lab 2.
The Multicycle Processor II CPSC 321 Andreas Klappenecker.
ECE Synthesis & Verification1 ECE 667 Spring 2011 Synthesis and Verification of Digital Systems Verification Introduction.
Why Behavioral Wait statement Signal Timing Examples of Behavioral Descriptions –ROM.
1 Computer System Overview OS-1 Course AA
VHDL Intro What does VHDL stand for? VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit Developed in 1982 by Govt. to standardize.
1/31/20081 Logic devices can be classified into two broad categories Fixed Programmable Programmable Logic Device Introduction Lecture Notes – Lab 2.
Silicon Programming--Intro. to HDLs1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities.
CS:APP CS:APP Chapter 4 Computer Architecture Control Logic and Hardware Control Language CS:APP Chapter 4 Computer Architecture Control Logic and Hardware.
Today’s Lecture Process model –initial & always statements Assignments –Continuous & procedural assignments Timing Control System tasks.
(1) Introduction © Sudhakar Yalamanchili, Georgia Institute of Technology, 2006.
Introduction to VHDL (part 2)
26 February 2009Dietrich Beck FPGA Solutions... FPGA and LabVIEW Pattern Generator Multi-Channel-Scaler.
Process Management. Processes Process Concept Process Scheduling Operations on Processes Interprocess Communication Examples of IPC Systems Communication.
IAY 0600 Digitaalsüsteemide disain Event-Driven Simulation Alexander Sudnitson Tallinn University of Technology.
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
Synthesis Presented by: Ms. Sangeeta L. Mahaddalkar ME(Microelectronics) Sem II Subject: Subject:ASIC Design and FPGA.
1 H ardware D escription L anguages Modeling Digital Systems.
Tutorial 1 Combinational Logic Synthesis. Introduction to VHDL VHDL = Very high speed Hardware Description Language VHDL and Verilog are the industry.
1 Seoul National University Logic Design. 2 Overview of Logic Design Seoul National University Fundamental Hardware Requirements  Computation  Storage.
1/8/ L20 Project Step 8 - Data Path Copyright Joanne DeGroat, ECE, OSU1 State Machine Design with an HDL A methodology that works for documenting.
Languages for HW and SW Development Ondrej Cevan.
2-Jun-16EE5141 Chapter 3 ä The concept of the signal ä Process concurrency ä Delta time ä Concurrent and sequential statements ä Process activation by.
Computer Architecture Lecture 2 System Buses. Program Concept Hardwired systems are inflexible General purpose hardware can do different tasks, given.
EEE440 Computer Architecture
Fall 2004EE 3563 Digital Systems Design EE 3563 VHDL – Basic Language Elements  Identifiers: –basic identifier: composed of a sequence of one or more.
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
Electrical and Computer Engineering University of Cyprus LAB 1: VHDL.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
Processor Architecture
Chapter 6: Computer Components Dr Mohamed Menacer Taibah University
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
VHDL Discussion Subprograms IAY 0600 Digital Systems Design Alexander Sudnitson Tallinn University of Technology 1.
Relational Operators Result is boolean: greater than (>) less than (=) less than or equal to (
IAY 0600 Digital Systems Design Event-Driven Simulation VHDL Discussion Alexander Sudnitson Tallinn University of Technology.
55:032 - Intro. to Digital DesignPage 1 VHDL and Processes Defining Sequential Circuit Behavior.
Chapter 3 System Buses.  Hardwired systems are inflexible  General purpose hardware can do different tasks, given correct control signals  Instead.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 4: Processes Process Concept Process Scheduling Types of shedulars Process.
Interrupts and Exception Handling. Execution We are quite aware of the Fetch, Execute process of the control unit of the CPU –Fetch and instruction as.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Overview: Using Hardware.
1 Introduction to Engineering Spring 2007 Lecture 18: Digital Tools 2.
Combinational Logic Design
Other Approaches.
IAY 0600 Digitaalsüsteemide disain
HDL simulation and Synthesis (Marks16)
B e h a v i o r a l to R T L Coding
Chapter 3 Top Level View of Computer Function and Interconnection
IAY 0600 Digital Systems Design
Instructions to get MAX PLUS running
Developing More Advanced Testbenches
VHDL Discussion Subprograms
State Machine Design with an HDL
VHDL Discussion Subprograms
Timing & Concurrency II
Timing & Concurrency II
Timing & Concurrency II
Computer Systems An Introducton.
COE 202 Introduction to Verilog
Chapter 3: Process Management
Presentation transcript:

Modeling VHDL in POSE

Overview Motivation Motivation Quick Introduction to VHDL Quick Introduction to VHDL Mapping VHDL to POSE (the Translator) Mapping VHDL to POSE (the Translator) Simulator Overview Simulator Overview

Motivation Circuit Complexity on the Rise (# Transistors) Circuit Complexity on the Rise (# Transistors) P4 (Prescott = 125 million, EE = 178 million) P4 (Prescott = 125 million, EE = 178 million) Athlon 64 (Venice = 114 million, X2 = million) Athlon 64 (Venice = 114 million, X2 = million) NVidia 7800 GTX – 302 million NVidia 7800 GTX – 302 million ATI X1800 Series – 321 million ATI X1800 Series – 321 million Simulation is becoming a bottleneck it the design cycle (it can take days to run a simulation) Simulation is becoming a bottleneck it the design cycle (it can take days to run a simulation) Use multiple processors to speedup simulation Use multiple processors to speedup simulation

Overview Motivation Motivation Quick Introduction to VHDL Quick Introduction to VHDL Mapping VHDL to POSE (the Translator) Mapping VHDL to POSE (the Translator) Simulator Overview Simulator Overview

VHDL - Intro V HSIC H ardware D escription L anguage V HSIC H ardware D escription L anguage V ery H igh S peed I ntegrated C ircuit V ery H igh S peed I ntegrated C ircuit Language for modeling ICs Language for modeling ICs Two ways of describing ICs Two ways of describing ICs Structural – Model the circuit using gate operators Structural – Model the circuit using gate operators Behavioral – Using code (ifs, loops, etc.) Behavioral – Using code (ifs, loops, etc.) Using simulation, logic designs can be verified Using simulation, logic designs can be verified

VHDL – Example entity AND_GATE is entity AND_GATE is port (A, B: in BIT; Y: out BIT); port (A, B: in BIT; Y: out BIT); end AND_GATE; end AND_GATE; architecture AND_GATE_struct of AND_GATE is architecture AND_GATE_struct of AND_GATE is begin begin Y <= A and B; Y <= A and B; end AND_GATE_struct; end AND_GATE_struct;

VHDL – Example (II) entity AND_GATE is entity AND_GATE is port (A, B: in BIT; Y: out BIT); port (A, B: in BIT; Y: out BIT); end AND_GATE; end AND_GATE; architecture AND_GATE_behav of AND_GATE is architecture AND_GATE_behav of AND_GATE is begin begin process (A, B) begin process (A, B) begin if (A = ‘1’) and (B = ‘1’) then if (A = ‘1’) and (B = ‘1’) then Y <= ‘1’; Y <= ‘1’; else else Y <= ‘0’; Y <= ‘0’; end if; end if; end process; end process; end AND_GATE_behav; end AND_GATE_behav;

VHDL – Example (III) entity NOT_GATE is entity NOT_GATE is port (A: in BIT; Y: out BIT); port (A: in BIT; Y: out BIT); end NOT_GATE; end NOT_GATE; entity AND_GATE is entity AND_GATE is port (A, B: in BIT; Y: out BIT); port (A, B: in BIT; Y: out BIT); end AND_GATE; end AND_GATE; entity NAND_GATE is entity NAND_GATE is port (A, B: in BIT; Y: out BIT); port (A, B: in BIT; Y: out BIT); end NAND_GATE; end NAND_GATE; architecture NAND_GATE_struct of NAND_GATE is architecture NAND_GATE_struct of NAND_GATE is signal andOutput : BIT; signal andOutput : BIT; component NOT_GATE port (A: in BIT; Y: out BIT); end component; component NOT_GATE port (A: in BIT; Y: out BIT); end component; component AND_GATE port (A, B: in BIT; Y: out BIT); end component; component AND_GATE port (A, B: in BIT; Y: out BIT); end component; begin begin myAndGate : AND_GATE port map (A=>A, B=>B, Y=>andOutput); myAndGate : AND_GATE port map (A=>A, B=>B, Y=>andOutput); myNotGate : NOT_GATE port map (A=>andOutput, Y=>Y); myNotGate : NOT_GATE port map (A=>andOutput, Y=>Y); end NOT_GATE_struct; end NOT_GATE_struct;

VHDL Kernel Continuously loop through simulation cycles Continuously loop through simulation cycles Simulation Cycles Simulation Cycles Computation/Processing Computation/Processing Calculate simulation time for next simulation cycle based on ‘earliest next event’ Calculate simulation time for next simulation cycle based on ‘earliest next event’ If time advances, move onto next simulation cycle If time advances, move onto next simulation cycle Otherwise, enter delta cycle Otherwise, enter delta cycle Delta Cycle Delta Cycle Similar to a Simulation Cycle but has less computation and simulation time has not moved forward from last cycle (e.g. – no postponed processes) Similar to a Simulation Cycle but has less computation and simulation time has not moved forward from last cycle (e.g. – no postponed processes)

Overview Motivation Motivation Quick Introduction to VHDL Quick Introduction to VHDL Mapping VHDL to POSE (the Translator) Mapping VHDL to POSE (the Translator) Simulator Overview Simulator Overview

Translator Source (VHDL) to Source (POSE/C++) Source (VHDL) to Source (POSE/C++) Only a subset of VHDL so far Only a subset of VHDL so far Generates POSE/Charm++/C++ Code Generates POSE/Charm++/C++ Code Simple checks (identifiers are valid, etc.) Simple checks (identifiers are valid, etc.) C++ provides Portable Code C++ provides Portable Code

Mapping VHDL to C++ Each Component becomes a Poser (Object in C++) Each Component becomes a Poser (Object in C++) Granularity of the simulation can be controlled by the user Granularity of the simulation can be controlled by the user Signals and shared variables become member variables Signals and shared variables become member variables Processes become member functions Processes become member functions Contexts created for each process to hold locals Contexts created for each process to hold locals POSE Event Queues hold pending wire changes POSE Event Queues hold pending wire changes

Interesting Problems Load Balancing Load Balancing Zero Time (Delta Cycles) Zero Time (Delta Cycles) Pausing Execution of Processes Pausing Execution of Processes

Load Balancing The components in VHDL form a tree structure The components in VHDL form a tree structure Components in the tree closer to the root become locations with high communication Components in the tree closer to the root become locations with high communication Optimization: If value just “passes through parent node”, forward value to all targets Optimization: If value just “passes through parent node”, forward value to all targets Score based mapping Score based mapping Bursts of Activity Bursts of Activity Entire portions of the simulation may go “inactive” for several simulation cycles and then suddenly become highly active because of some trigger Entire portions of the simulation may go “inactive” for several simulation cycles and then suddenly become highly active because of some trigger Phase based load balancing (hard, future work) Phase based load balancing (hard, future work)

VHDL Structure

Zero Time (Delta Cycles) Forward progression without moving simulation time forward Forward progression without moving simulation time forward Ordering of “Events” within a single simulation cycle Ordering of “Events” within a single simulation cycle Object Virtual Time (OVT) in POSE not sufficient for this task (at least how it was intended to be used) Object Virtual Time (OVT) in POSE not sufficient for this task (at least how it was intended to be used)

Pausing Execution of Processes Sequential Statements (Behavioral Code) Sequential Statements (Behavioral Code) Most of the sequential statements map well Most of the sequential statements map well if-then-else, loops, etc. if-then-else, loops, etc. The “Wait” Statement The “Wait” Statement A sequence of statements may need to suspend A sequence of statements may need to suspend Cannot use POSE’s “elapse( )” function to elapse time since other activity may be taking place Cannot use POSE’s “elapse( )” function to elapse time since other activity may be taking place Solution: Allows the C++ functions that represent the processes to suspend execution Solution: Allows the C++ functions that represent the processes to suspend execution Return at some statement and then restart after that statement Return at some statement and then restart after that statement To do this efficiently… use ‘goto’s and ‘switch’s… :( To do this efficiently… use ‘goto’s and ‘switch’s… :(

Overview Motivation Motivation Quick Introduction to VHDL Quick Introduction to VHDL Mapping VHDL to POSE (the Translator) Mapping VHDL to POSE (the Translator) Simulation Overview Simulation Overview

Simulation Structure Each Component Becomes a Poser Each Component Becomes a Poser Control messages Control messages Signals and variables become local to Poser Signals and variables become local to Poser Send message to self if assignment will be in the future Send message to self if assignment will be in the future Port values are transmitted between components Port values are transmitted between components Send messages to parent/child component(s) Send messages to parent/child component(s) Communication intensive (especially if modeled to the gate level) Communication intensive (especially if modeled to the gate level) Load balancer needs to be aware of communication costs and/or patterns Load balancer needs to be aware of communication costs and/or patterns One VCDGenerator per Processor One VCDGenerator per Processor Handles output Handles output

VHDL – Simulation Cycle

VHDL - Simulation

NAND Example

VHDL – Simulation Cycle (II) Components do not need to be synchronized Components do not need to be synchronized Components can be optimistic Components can be optimistic Portions of the simulation can be ahead (in time) of other portions Portions of the simulation can be ahead (in time) of other portions “Optimism” is limited by strategy/POSE-configuration and GVT calculation “Optimism” is limited by strategy/POSE-configuration and GVT calculation Components can skip cycles where they are idle Components can skip cycles where they are idle Wakeup event allows components to skip the simulation cycles where they do no work Wakeup event allows components to skip the simulation cycles where they do no work Separate drive/process events allow delta cycles to be skipped Separate drive/process events allow delta cycles to be skipped

Future Work Additional support for VHDL Additional support for VHDL Add support for Verilog Add support for Verilog Create a second front end that can parse Verilog Create a second front end that can parse Verilog Allow the AST or a second IR to represent the super-set of VHDL and Verilog Allow the AST or a second IR to represent the super-set of VHDL and Verilog Load Balancing Load Balancing Score-Based Refinement Score-Based Refinement Phase-Based Phase-Based Automatic Granularity Detection: Break apart large components or combine smaller components without making the user modify code Automatic Granularity Detection: Break apart large components or combine smaller components without making the user modify code And so much more… And so much more…