Design Partitioning. Chapter 3 H/W – S/W Partitioning Why so much concern over the H/W – S/W partitioning decision? Because the lines between H/W and.

Slides:



Advertisements
Similar presentations
Simulation executable (simv)
Advertisements

Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Evolution and History of Programming Languages Software/Hardware/System.
EELE 367 – Logic Design Module 2 – Modern Digital Design Flow Agenda 1.History of Digital Design Approach 2.HDLs 3.Design Abstraction 4.Modern Design Steps.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Introduction.
Applied Software Project Management INTRODUCTION Applied Software Project Management 1 5/20/2015.
1 HW/SW Partitioning Embedded Systems Design. 2 Hardware/Software Codesign “Exploration of the system design space formed by combinations of hardware.
02/02/20091 Logic devices can be classified into two broad categories Fixed Programmable Programmable Logic Device Introduction Lecture Notes – Lab 2.
Behavioral Design Outline –Design Specification –Behavioral Design –Behavioral Specification –Hardware Description Languages –Behavioral Simulation –Behavioral.
Requirements Analysis Lecture #3 David Andrews
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.
CSE241 R1 Verilog.1Kahng & Cichy, UCSD ©2003 CSE241 VLSI Digital Circuits Winter 2003 Recitation 1: Verilog Introduction.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
2/9/2007EECS150 Lab Lecture #41 Debugging EECS150 Spring2007 – Lab Lecture #4 Laura Pelton Greg Gibeling.
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE VLSI System Design Lecture 4 - Advanced Verilog.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
02/10/06EECS150 Lab Lecture #41 Debugging EECS150 Spring 2006 – Lab Lecture #4 Philip Godoy Greg Gibeling.
Today’s Lecture Process model –initial & always statements Assignments –Continuous & procedural assignments Timing Control System tasks.
Hardware/Software Partitioning Witawas Srisa-an Embedded Systems Design and Implementation.
VerificationTechniques for Macro Blocks (IP) Overview Inspection as Verification Adversarial Testing Testbench Design Timing Verification.
P51UST: Unix and Software Tools Unix and Software Tools (P51UST) Compilers, Interpreters and Debuggers Ruibin Bai (Room AB326) Division of Computer Science.
1 Chapter 2. The System-on-a-Chip Design Process Canonical SoC Design System design flow The Specification Problem System design.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Gary MarsdenSlide 1University of Cape Town Computer Architecture – Introduction Andrew Hutchinson & Gary Marsden (me) ( ) 2005.
CS1Q Computer Systems Lecture 9 Simon Gay. Lecture 9CS1Q Computer Systems - Simon Gay2 Addition We want to be able to do arithmetic on computers and therefore.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Algorithms and Programming
ASIC/FPGA design flow. FPGA Design Flow Detailed (RTL) Design Detailed (RTL) Design Ideas (Specifications) Design Ideas (Specifications) Device Programming.
Program Development Life Cycle (PDLC)
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
FPGA-Based System Design: Chapter 6 Copyright  2004 Prentice Hall PTR Topics n Design methodologies.
System Design with CoWare N2C - Overview. 2 Agenda q Overview –CoWare background and focus –Understanding current design flows –CoWare technology overview.
High Performance Embedded Computing © 2007 Elsevier Chapter 1, part 2: Embedded Computing High Performance Embedded Computing Wayne Wolf.
CSE 494: Electronic Design Automation Lecture 2 VLSI Design, Physical Design Automation, Design Styles.
Configurable, reconfigurable, and run-time reconfigurable computing.
Languages for HW and SW Development Ondrej Cevan.
Introduction to FPGA Created & Presented By Ali Masoudi For Advanced Digital Communication Lab (ADC-Lab) At Isfahan University Of technology (IUT) Department.
Managing Complexity: Systems Design March 2, 2001.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
CSCI1600: Embedded and Real Time Software Lecture 33: Worst Case Execution Time Steven Reiss, Fall 2015.
CSCI1600: Embedded and Real Time Software Lecture 28: Verification I Steven Reiss, Fall 2015.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
© 2000 Morgan Kaufman Overheads for Computers as Components Host/target design  Use a host system to prepare software for target system: target system.
Silicon Programming--Testing1 Completing a successful project (introduction) Design for testability.
EE3A1 Computer Hardware and Digital Design Lecture 1 The Role of Hardware Description Languages.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007 Chapter 0: Historical Overview.
Introduction to FPGAs Getting Started with Xilinx.
Project Cost Management
14 Compilers, Interpreters and Debuggers
John D. McGregor Session 9 Testing Vocabulary
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
Some Simple Definitions for Testing
John D. McGregor Session 9 Testing Vocabulary
John D. McGregor Session 9 Testing Vocabulary
CSCI1600: Embedded and Real Time Software
Lecture 1.3 Hardware Description Languages (HDLs)
Software testing and configuration : Embedded software testing
EECS150 Fall 2007 – Lab Lecture #4 Shah Bawany
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
CSCI1600: Embedded and Real Time Software
Presentation transcript:

Design Partitioning

Chapter 3

H/W – S/W Partitioning Why so much concern over the H/W – S/W partitioning decision? Because the lines between H/W and S/W are blurring making the decision seem “obvious”… …which can lead to grave mistakes

H/W – S/W Partitioning The partitioning decision has a significant impact on various aspects of the project –Overall cost (development and production) –Overall time (development and production) –Overall success/failure (risk)

H/W – S/W Duality Anything that can be done in digital hardware can be done in software Anything that can be done in software can be done in digital hardware Examples? This “duality” is why the partitioning decision is such an issue To make matters worse(?), it’s getting harder and harder to define the line between hardware and software

H/W – S/W Partitioning The decision space is multi-dimensional –Microprocessor architecture –Algorithm complexity –Physical space –Development resources Available expertise Available time Available money Available tools –etc. “In practice, the analysis of trade-offs for partitioning a system is most often an informal process done with pencil and paper or spreadsheets.”

H/W – S/W Partitioning If it’s so important, why is it delegated to an informal process? Because it’s too hard (impossible?) to formalize/automate the traversal of the multi- dimensional space –There’s just too much data affecting the decision –It’s a optimization problem and optimization problems are [in general] difficult to solve –Artificial Intelligence researchers have struggled with this type of problem for over 40 years!

H/W – S/W Partitioning Generally accepted approach is to put off the final decision as long as possible This way you will have gathered as much information as possible “Path of least commitment” This is the approach adopted by AI researchers –Consider the chess playing machines

Hardware Trends H/W – S/W partitioning used to be easy –If you had a complex algorithm, you wrote software Hardware design/implementation just took too long and designs were error prone Silicon real estate was just too expensive

Hardware Trends Then smart people like Carver Mead (CalTech) came along and spoiled things –His seminal book Introduction to VLSI Design [1980] made it look “simple” Then along came Application Specific Integrated Circuit (ASIC) technology –Generic term but here we’ll use it to mean “programmable gate arrays” –Suddenly, you didn’t need a silicon foundry to create custom chips – you could do it in your office

Hardware Trends Then along came Hardware Design Languages (Verilog and VHDL) –Programmer’s can be hardware designers with no additional training And finally, the foundries (fab-houses) keep shrinking the “technology” (size of gates) on the silicon and increasing the wafer sizes –Higher density (transistors/unit area) provides smaller devices and faster circuits –More devices per wafer reduce processing costs

Programmer’s Can Be Hardware Designers? Verilog HDL module simple; reg [0:7] A, B; // -- declare two 8-bit registers reg C; // -- declare one 1-bit register initial begin: stop_at #20; $stop; // -- run for 20 clock cycles end initial begin: Init A = 0; $display(“Time A B C”); // -- debug output $monitor(“ %0d %b %b %b”, $time, A, B, C); // -- debug output end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule

Verilog HDL The two initial blocks and the always blocks run concurrently –The initial blocks run once –The always block loops until the simulation stops The variables/functions preceded by $ are simulation variables/functions (not part of the circuit) The #1 ’s in the always block are 1 time-unit delays

Verilog HDL Simulation output: Time A BC xxxxxxxxx xxxxxxxxx xxxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx0 Stop at simulation time 20 Note: the $monitor only produces output when a register value changes

Verilog HDL Two key points here: –First [and most obvious] the “hardware design” looks an awful lot like “C” code And it’s run through a compiler that acts an awful lot like a “C” compiler –Whereas a “C” compiler generates assembly language statements targeted for a specific computer architecture, a Verilog compiler generates commands used in creating a circuit on the target device

Verilog HDL Two key points here: –Second, the design was run through a hardware simulator –This means that the design can be debugged prior to spending time and money fabricating the device!

How Does It Help? Since –the H/W and S/W development tasks are starting to look similar, –and their designs are developed/simulated on the same workstation platform –bugs can be caught earlier Rather than write S/W to simulate the hardware (as a means of testing the software) we can link the actual software to the hardware (Verilog) simulation –This also eliminates the possibility of bugs in the test software

Goal The goal is to find design bugs early!!! System specification and design Hardware and software design/debug Prototype debug System test Cost to fix Design cycle

The Moral of the Story Even though hardware is developed by writing software, the cost to fix it as time goes on is still tremendous –Eventually, it ends up on a piece of silicon that is manufactured by someone else Within another part of your company By an outside vendor in the case of “fab-less design houses” –Especially true as systems get more and more highly integrated (system on chip) –Many design teams will budget resources for multiple “chip spins” to alleviate the pain of bugs

What’s the Catch? But all of these worries go away since we now have hardware and software environments that can be merged together, right? Wrong! –Even the simplest of Verilog hardware simulations can take hours to run –Simulation tools are expensive –Exhaustive testing is very difficult

What’s the Payoff? If you can afford the tools… and you can tolerate the simulation time… and everything works as planned… then the hardware software/software integration phase is [almost] trivial This is referred to as “co-verification” –The hardware and software are being verified concurrently

The Two Co’s Co-design –The process of developing the hardware and software simultaneously –We almost always do this, albeit the software is often untested w.r.t. the actual hardware Co-verification –The process of verifying the correctness of the complete hardware/software system as a single unit including actual interfaces between the two

Risk Management Hardware is the biggest risk Hardware testing as a means of risk management –Test vectors – literally vectors of 0’s and 1’s that exercise all of the functionality of the hardware –Designers specify the input and expected-output pairs

Risk Management (cont.) –Testers then run the inputs, the simulation generates the outputs, and the compares them to the expected-outputs Testers may be part of the design team Testers may be employees of the fabrication facility –Fabrication facility requires this because they want your business!

Risk Management Realistically, you won’t exhaustively test the hardware Realistically, the parts you don’t test are the parts that fail

Test Vectors In some cases you may be able to generate these automatically –The HDL compiler can be used to generate test vectors by creating I/O functions –You just write a little bit of code that exercises the circuit code In some cases you may only have time to check the “extreme cases” –You assume that if those work then all the cases in between will also work

Co-design/Co-verification As useful (mandatory?) as these techniques seem, there’s still issues –Cost of the tools –Time to learn the tools –Execution time of the tools While us programmer’s can now design hardware using the tools, the bottom line is that if you want “good” hardware, have a hardware designer design it An analogous statement goes for software development Hardware/software integration remains a problem –“We’ll fix it in software” is a common industrial cry

And now… …on to the lab Interfacing to the outside world