Reuse methodology manual for system-on-a-chip designs

Titel: Reuse methodology manual for system-on-a-chip designs / by Michael Keating, Pierre Bricaud
Verfasser:
Beteiligt:
Ausgabe: 3. ed.
Veröffentlicht: Boston : Kluwer, 2002
Umfang: XVIII, 291 S. : Ill.
Format: E-Book
Sprache: Englisch
RVK-Notation:
Schlagworte:
Vorliegende Ausgabe: Online-Ausg.: 2003. - Online-Ressource.
ISBN: 0306476401 (Sekundärausgabe)
Buchumschlag
X
  • Foreword
  • p. xiii
  • Preface to the Third Edition
  • p. xv
  • Acknowledgements
  • p. xvii
  • 1
  • Introduction
  • p. 1
  • 1.1
  • Goals of This Manual
  • p. 2
  • 1.1.1
  • Assumptions
  • p. 3
  • 1.1.2
  • Definitions
  • p. 3
  • 1.1.3
  • Virtual Socket Interface Alliance
  • p. 4
  • 1.2
  • Design for Reuse: The Challenge
  • p. 4
  • 1.2.1
  • Design for Use
  • p. 5
  • 1.2.2
  • Design for Reuse
  • p. 5
  • 1.3
  • The Emerging Business Model for Reuse
  • p. 6
  • 2
  • The System-on-Chip Design Process
  • p. 9
  • 2.1
  • A Canonical SoC Design
  • p. 9
  • 2.2
  • System Design Flow
  • p. 11
  • 2.2.1
  • Waterfall vs. Spiral
  • p. 11
  • 2.2.2
  • Top-Down vs. Bottom-Up
  • p. 15
  • 2.2.3
  • Construct by Correction
  • p. 15
  • 2.2.4
  • Summary
  • p. 16
  • 2.3
  • The Specification Problem
  • p. 17
  • 2.3.1
  • Specification Requirements
  • p. 17
  • 2.3.2
  • Types of Specifications
  • p. 18
  • 2.4
  • The System Design Process
  • p. 19
  • 3
  • System-Level Design Issues: Rules and Tools
  • p. 23
  • 3.1
  • The Standard Model
  • p. 23
  • 3.1.1
  • Soft IP vs. Hard IP
  • p. 25
  • 3.1.2
  • The Role of Full-Custom Design in Reuse
  • p. 27
  • 3.2
  • Design for Timing Closure: Logic Design Issues
  • p. 28
  • 3.2.1
  • Interfaces and Timing Closure
  • p. 28
  • 3.2.2
  • Synchronous vs. Asynchronous Design Style
  • p. 33
  • 3.2.3
  • Clocking
  • p. 35
  • 3.2.4
  • Reset
  • p. 36
  • 3.2.5
  • Timing Exceptions and Multicycle Paths
  • p. 37
  • 3.3
  • Design for Timing Closure: Physical Design Issues
  • p. 38
  • 3.3.1
  • Floorplanning
  • p. 38
  • 3.3.2
  • Synthesis Strategy and Timing Budgets
  • p. 39
  • 3.3.3
  • Hard Macros
  • p. 39
  • 3.3.4
  • Clock Distribution
  • p. 40
  • 3.4
  • Design for Verification: Verification Strategy
  • p. 40
  • 3.5
  • System Interconnect and On-Chip Buses
  • p. 42
  • 3.5.1
  • Basic Interface Issues
  • p. 43
  • 3.5.2
  • Tristate vs. Mux Buses
  • p. 47
  • 3.5.3
  • Synchronous Design of Buses
  • p. 47
  • 3.5.4
  • Summary
  • p. 47
  • 3.5.5
  • IP-to-IP Interfaces
  • p. 48
  • 3.6
  • Design for Bring-Up and Debug: On-Chip Debug Structures
  • p. 51
  • 3.7
  • Design for Low Power
  • p. 52
  • 3.7.1
  • Lowering the Supply Voltage
  • p. 53
  • 3.7.2
  • Reducing Capacitance and Switching Activity
  • p. 54
  • 3.7.3
  • Sizing and Other Synthesis Techniques
  • p. 56
  • 3.7.4
  • Summary
  • p. 57
  • 3.8
  • Design for Test: Manufacturing Test Strategies
  • p. 57
  • 3.8.1
  • System-Level Test Issues
  • p. 57
  • 3.8.2
  • Memory Test
  • p. 58
  • 3.8.3
  • Microprocessor Test
  • p. 58
  • 3.8.4
  • Other Macros
  • p. 59
  • 3.8.5
  • Logic BIST
  • p. 59
  • 3.9
  • Prerequisites for Reuse
  • p. 60
  • 3.9.1
  • Libraries
  • p. 60
  • 3.9.2
  • Physical Design Rules
  • p. 61
  • 4
  • The Macro Design Process
  • p. 63
  • 4.1
  • Overview of IP Design
  • p. 63
  • 4.1.1
  • Characteristics of Good IP
  • p. 64
  • 4.1.2
  • Implementation and Verification IP
  • p. 65
  • 4.1.3
  • Overview of Design Process
  • p. 67
  • 4.2
  • Key Features
  • p. 68
  • 4.3
  • Planning and Specification
  • p. 69
  • 4.3.1
  • Functional Specification
  • p. 69
  • 4.3.2
  • Verification Specification
  • p. 71
  • 4.3.3
  • Packaging Specification
  • p. 71
  • 4.3.4
  • Development Plan
  • p. 71
  • 4.3.5
  • High-Level Models as Executable Specifications
  • p. 72
  • 4.4
  • Macro Design and Verification
  • p. 73
  • 4.4.1
  • Summary
  • p. 77
  • 4.5
  • Soft Macro Productization
  • p. 78
  • 4.5.1
  • Productization Process
  • p. 78
  • 4.5.2
  • Activities and Tools
  • p. 78
  • 5
  • RTL Coding Guidelines
  • p. 81
  • 5.1
  • Overview of the Coding Guidelines
  • p. 81
  • 5.2
  • Basic Coding Practices
  • p. 82
  • 5.2.1
  • General Naming Conventions
  • p. 82
  • 5.2.2
  • Naming Conventions for VITAL Support
  • p. 84
  • 5.2.3
  • State Variable Names
  • p. 85
  • 5.2.4
  • Include Informational Headers in Source Files
  • p. 85
  • 5.2.5
  • Use Comments
  • p. 87
  • 5.2.6
  • Keep Commands on Separate Lines
  • p. 87
  • 5.2.7
  • Line Length
  • p. 87
  • 5.2.8
  • Indentation
  • p. 88
  • 5.2.9
  • Do Not Use HDL Reserved Words
  • p. 89
  • 5.2.10
  • Port Ordering
  • p. 89
  • 5.2.11
  • Port Maps and Generic Maps
  • p. 92
  • 5.2.12
  • VHDL Entity, Architecture, and Configuration Sections
  • p. 93
  • 5.2.13
  • Use Functions
  • p. 93
  • 5.2.14
  • Use Loops and Arrays
  • p. 94
  • 5.2.15
  • Use Meaningful Labels
  • p. 96
  • 5.3
  • Coding for Portability
  • p. 97
  • 5.3.1
  • Use Only IEEE Standard Types (VHDL)
  • p. 97
  • 5.3.2
  • Do Not Use Hard-Coded Numeric Values
  • p. 98
  • 5.3.3
  • Packages (VHDL)
  • p. 98
  • 5.3.4
  • Constant Definition Files (Verilog)
  • p. 98
  • 5.3.5
  • Avoid Embedding Synthesis Commands
  • p. 99
  • 5.3.6
  • Use Technology-Independent Libraries
  • p. 99
  • 5.3.7
  • Coding For Translation
  • p. 100
  • 5.4
  • Guidelines for Clocks and Resets
  • p. 101
  • 5.4.1
  • Avoid Mixed Clock Edges
  • p. 102
  • 5.4.2
  • Avoid Clock Buffers
  • p. 103
  • 5.4.3
  • Avoid Gated Clocks
  • p. 103
  • 5.4.4
  • Avoid Internally Generated Clocks
  • p. 104
  • 5.4.5
  • Gated Clocks and Low-Power Designs
  • p. 105
  • 5.4.6
  • Avoid Internally Generated Resets
  • p. 106
  • 5.4.7
  • Reset Logic Function
  • p. 107
  • 5.4.8
  • Single-Bit Synchronizers
  • p. 108
  • 5.4.9
  • Multiple-Bit Synchronizers
  • p. 108
  • 5.5
  • Coding for Synthesis
  • p. 108
  • 5.5.1
  • Infer Registers
  • p. 109
  • 5.5.2
  • Avoid Latches
  • p. 110
  • 5.5.3
  • If you must use a latch
  • p. 113
  • 5.5.4
  • Avoid Combinational Feedback
  • p. 113
  • 5.5.5
  • Specify Complete Sensitivity Lists
  • p. 114
  • 5.5.6
  • Blocking and Nonblocking Assignments (Verilog)
  • p. 117
  • 5.5.7
  • Signal vs. Variable Assignments (VHDL)
  • p. 119
  • 5.5.8
  • Case Statements vs. if-then-else Statements
  • p. 120
  • 5.5.9
  • Coding Sequential Logic
  • p. 122
  • 5.5.10
  • Coding Critical Signals
  • p. 124
  • 5.5.11
  • Avoid Delay Times
  • p. 124
  • 5.5.12
  • Avoid ful_case and parallel_case Pragmas
  • p. 124
  • 5.6
  • Partitioning for Synthesis
  • p. 125
  • 5.6.1
  • Register All Outputs
  • p. 125
  • 5.6.2
  • Locate Related Combinational Logic in a Single Module
  • p. 126
  • 5.6.3
  • Separate Modules That Have Different Design Goals
  • p. 127
  • 5.6.4
  • Asynchronous Logic
  • p. 128
  • 5.6.5
  • Arithmetic Operators: Merging Resources
  • p. 128
  • 5.6.6
  • Partitioning for Synthesis Runtime
  • p. 130
  • 5.6.7
  • Avoid Timing Exceptions
  • p. 130
  • 5.6.8
  • Eliminate Glue Logic at the Top Level
  • p. 133
  • 5.6.9
  • Chip-Level Partitioning
  • p. 134
  • 5.7
  • Designing with Memories
  • p. 135
  • 5.8
  • Code Profiling
  • p. 136
  • 6
  • Macro Synthesis Guidelines
  • p. 137
  • 6.1
  • Overview of the Synthesis Problem
  • p. 137
  • 6.2
  • Macro Synthesis Strategy
  • p. 138
  • 6.2.1
  • Macro Timing Constraints
  • p. 139
  • 6.2.2
  • Subblock Timing Constraints
  • p. 139
  • 6.2.3
  • Synthesis in the Design Process
  • p. 140
  • 6.2.4
  • Subblock Synthesis Process
  • p. 141
  • 6.2.5
  • Macro Synthesis Process
  • p. 141
  • 6.2.6
  • Wire Load Models
  • p. 142
  • 6.2.7
  • Preserve Clock and Reset Networks
  • p. 142
  • 6.2.8
  • Code Checking Before Synthesis
  • p. 143
  • 6.2.9
  • Code Checking After Synthesis
  • p. 143
  • 6.3
  • Physical Synthesis
  • p. 144
  • 6.3.1
  • Classical Synthesis
  • p. 144
  • 6.3.2
  • Physical Synthesis
  • p. 145
  • 6.3.3
  • Physical Synthesis Deliverables
  • p. 145
  • 6.4
  • RAM and Datapath Generators
  • p. 145
  • 6.4.1
  • Memory Design
  • p. 146
  • 6.4.2
  • RAM Generator Flow
  • p. 147
  • 6.4.3
  • Datapath Design
  • p. 148
  • 6.5
  • Coding Guidelines for Synthesis Scripts
  • p. 150
  • 7
  • Macro Verification Guidelines
  • p. 153
  • 7.1
  • Overview of Macro Verification
  • p. 153
  • 7.1.1
  • Verification Plan
  • p. 154
  • 7.1.2
  • Verification Strategy
  • p. 155
  • 7.2
  • Inspection as Verification
  • p. 159
  • 7.3
  • Adversarial Testing
  • p. 160
  • 7.4
  • Testbench Design
  • p. 161
  • 7.4.1
  • Transaction-Based Verification
  • p. 161
  • 7.4.2
  • Component-Based Verification
  • p. 163
  • 7.4.3
  • Automated Response Checking
  • p. 165
  • 7.4.4
  • Verification Suite Design
  • p. 166
  • 7.5
  • Design of Verification Components
  • p. 169
  • 7.5.1
  • Bus Functional Models
  • p. 169
  • 7.5.2
  • Monitors
  • p. 171
  • 7.5.3
  • Device Models
  • p. 171
  • 7.5.4
  • Verification Component Usage
  • p. 172
  • 7.6
  • Getting to 100%
  • p. 172
  • 7.6.1
  • Functional and Code Coverage
  • p. 172
  • 7.6.2
  • Prototyping
  • p. 172
  • 7.6.3
  • Limited Production
  • p. 173
  • 7.6.4
  • Property Checking
  • p. 173
  • 7.6.5
  • Code Coverage Analysis
  • p. 174
  • 7.7
  • Timing Verification
  • p. 177
  • 8
  • Developing Hard Macros
  • p. 179
  • 8.1
  • Overview
  • p. 179
  • 8.1.1
  • Why and When to Use Hard Macros
  • p. 180
  • 8.1.2
  • Design Process for Hard vs. Soft Macros
  • p. 181
  • 8.2
  • Design Issues for Hard Macros
  • p. 181
  • 8.2.1
  • Full-Custom Design
  • p. 181
  • 8.2.2
  • Interface Design
  • p. 182
  • 8.2.3
  • Design For Test
  • p. 183
  • 8.2.4
  • Clock
  • p. 184
  • 8.2.5
  • Aspect Ratio
  • p. 185
  • 8.2.6
  • Porosity
  • p. 186
  • 8.2.7
  • Pin Placement and Layout
  • p. 187
  • 8.2.8
  • Power Distribution
  • p. 187
  • 8.2.9
  • Antenna Checking
  • p. 188
  • 8.3
  • The Hard Macro Design Process
  • p. 190
  • 8.4
  • Productization of Hard Macros
  • p. 190
  • 8.4.1
  • Physical Design
  • p. 190
  • 8.4.2
  • Verification
  • p. 193
  • 8.5
  • Model Development for Hard Macros
  • p. 194
  • 8.5.1
  • Functional Models
  • p. 194
  • 8.5.2
  • Timing Models
  • p. 199
  • 8.5.3
  • Power Models
  • p. 200
  • 8.5.4
  • Test Models
  • p. 201
  • 8.5.5
  • Physical Models
  • p. 204
  • 8.6
  • Porting Hard Macros
  • p. 204
  • 9
  • Macro Deployment: Packaging for Reuse
  • p. 207
  • 9.1
  • Delivering the Complete Product
  • p. 207
  • 9.1.1
  • Soft Macro Deliverables
  • p. 208
  • 9.1.2
  • Hard Macro Deliverables
  • p. 210
  • 9.1.3
  • Software
  • p. 212
  • 9.1.4
  • The Design Archive
  • p. 213
  • 9.2
  • Contents of the User Guide
  • p. 214
  • 10
  • System Integration with Reusable Macros
  • p. 217
  • 10.1
  • Integration Overview
  • p. 217
  • 10.2
  • Integrating Macros into an SoC Design
  • p. 218
  • 10.2.1
  • Problems in Integrating IP
  • p. 218
  • 10.2.2
  • Strategies for Managing Interfacing Issues
  • p. 219
  • 10.2.3
  • Interfacing Hard Macros to the Rest of the Design
  • p. 220
  • 10.3
  • Selecting IP
  • p. 221
  • 10.3.1
  • Hard Macro Selection
  • p. 221
  • 10.3.2
  • Soft Macro Selection
  • p. 221
  • 10.3.3
  • Soft Macro Installation
  • p. 222
  • 10.3.4
  • Soft Macro Configuration
  • p. 223
  • 10.3.5
  • Synthesis of Soft Macros
  • p. 223
  • 10.4
  • Integrating Memories
  • p. 223
  • 10.5
  • Physical Design
  • p. 224
  • 10.5.1
  • Design Planning and Synthesis
  • p. 226
  • 10.5.2
  • Physical Placement
  • p. 230
  • 10.5.3
  • Timing Closure
  • p. 234
  • 10.5.4
  • Verifying the Physical Design
  • p. 237
  • 10.5.5
  • Summary
  • p. 238
  • 11
  • System-Level Verification Issues
  • p. 239
  • 11.1
  • The Importance of Verification
  • p. 239
  • 11.2
  • The Verification Strategy
  • p. 240
  • 11.3
  • Interface Verification
  • p. 241
  • 11.3.1
  • Transaction Verification
  • p. 241
  • 11.3.2
  • Data or Behavioral Verification
  • p. 242
  • 11.3.3
  • Standardized Interfaces
  • p. 244
  • 11.4
  • Functional Verification
  • p. 244
  • 11.5
  • Random Testing
  • p. 247
  • 11.6
  • Application-Based Verification
  • p. 249
  • 11.6.1
  • Software-Driven Application Testbench
  • p. 250
  • 11.6.2
  • Rapid Prototyping for Testing
  • p. 251
  • 11.7
  • Gate-Level Verification
  • p. 253
  • 11.7.1
  • Sign-Off Simulation
  • p. 253
  • 11.7.2
  • Formal Verification
  • p. 254
  • 11.7.3
  • Gate-Level Simulation with Full Timing
  • p. 255
  • 11.8
  • Specialized Hardware for System Verification
  • p. 256
  • 11.8.1
  • Accelerated Verification Overview
  • p. 258
  • 11.8.2
  • RTL Acceleration
  • p. 259
  • 11.8.3
  • Software Driven Verification
  • p. 260
  • 11.8.4
  • Traditional In-Circuit Verification
  • p. 260
  • 11.8.5
  • Design Guidelines for Emulation
  • p. 261
  • 11.8.6
  • Testbenches for Emulation
  • p. 261
  • 12
  • Data and Project Management
  • p. 265
  • 12.1
  • Data Management
  • p. 265
  • 12.1.1
  • Revision Control Systems
  • p. 265
  • 12.1.2
  • Bug Tracking
  • p. 267
  • 12.1.3
  • Regression Testing
  • p. 267
  • 12.1.4
  • Managing Multiple Sites
  • p. 267
  • 12.1.5
  • Archiving
  • p. 268
  • 12.2
  • Project Management
  • p. 269
  • 12.2.1
  • Development Process
  • p. 269
  • 12.2.2
  • Functional Specification
  • p. 269
  • 12.2.3
  • Project Plan
  • p. 270
  • 13
  • Implementing Reuse-Based SoC Designs
  • p. 271
  • 13.1
  • Alcatel
  • p. 272
  • 13.2
  • Atmel
  • p. 274
  • 13.3
  • Infineon Technologies
  • p. 276
  • 13.4
  • LSI Logic
  • p. 278
  • 13.5
  • Philips Semiconductor
  • p. 280
  • 13.6
  • STMicroelectronics
  • p. 282
  • 13.7
  • Conclusion
  • p. 284
  • Bibliography
  • p. 285
  • Index
  • p. 287