Electronic System Level

Design and Verification

Hardware Implementation

 






















 

 

 

 

 

 

 

 

 

This chapter deals with producing a hardware implementation of a component of a design. In other chapters, we have seen the process of designing and analyzing a system at the ES level, and partitioning the system functionality into hardware and software. The purpose of this partitioning is to improve the overall performance, power, and area characteristics of the system in addition to making the size of the partitioned pieces suitable for implementation. There are a number of different implementation technologies that can be used for any part of the system functionality:

,PU: The function can be executed as software on a general-purpose CPU such as an ARM, MIPS or Tensilica Diamond core.
・PU (Extensible Processing Unit): The function can be executed as software on an extensible processor in which specialized instructions have been added for the particular algorithm.
.SP: The function can be executed as software on a specialized DSP such as a Texas Instruments TMS320 or StarCore SC2400.
〃LIW processor: The function can be executed as microcode on a specialized VLIW processor.
:PGA: The function can be implemented in configurable hardware such as an FPGA core.
、SIC: The function can be implemented as dedicated hardware in custom gates.
Each of these options has different power, performance, and programmability characteristics. Partitioning the SoC functionality among these implementation technologies consists of seeking a balance between performance and power on the one hand and programmability on the other, as defined in Chapter 2, and discussed in Chapters 8 and 9. Other factors that enter into this decision include manufacturing cost due to silicon area, and the cost of licensing any required IP.

11.1 Introduction
11.2 Extensible Processors
11.3 DSP Coprocessors
11.4 Customized VLIW Coprocessors
11.5 Application-Specific Coprocessors
11.6 High-Level Hardware Design Flow for ASICs and FPGAs
11.7 Behavioral Synthesis
    11.7.1 Differences between RTL and Behavioral Code
        11.7.1.1 Multicycle Functionality
        11.7.1.2 Loops
        11.7.1.3 Memory Access
    11.7.2 Behavioral Synthesis Shortcomings: Input Language
    11.7.3 Behavioral Synthesis Shortcomings: Timing
    11.7.4 Behavioral Synthesis Shortcomings: Verification
11.8 ESL Synthesis
    11.8.1 Language
        11.8.1.1 Structure
        11.8.1.2 Concurrency
        11.8.1.3 Data Types
        11.8.1.4 Operations
        11.8.1.5 Example
    11.8.2 Input and Output
    11.8.3 Verification
    11.8.4 Quality of Results
        11.8.4.1 Timing
        11.8.4.2 Scheduling
        11.8.4.3 Allocation
        11.8.4.4 Back-End Friendliness
        11.8.4.5 Example Results
11.9 Hardware Design or Silver Bullet?
    11.9.1 Role of Constraints
    11.9.2 Pragmas
    11.9.3 Code Changes
    11.9.4 Example
        11.9.4.1 Constraints
        11.9.4.2 Code Modification
11.10 Design Exploration
11.11 Provocative Thoughts
11.12 Summary
11.13 The Prescription

Errata

Feedback

     Your name:
     Your company or affiliation:
     e-mail address:

     Would you like to be contacted by one of the authors

Your comments or suggestion

Buy the books here

This site is owned and maintained by Brian Bailey
All information is Copyright © 2007-2010