Nicht aus der Schweiz? Besuchen Sie lehmanns.de

Hardware Verification with C++ (eBook)

A Practitioner's Handbook
eBook Download: PDF
2006 | 2006
XXI, 341 Seiten
Springer US (Verlag)
978-0-387-36254-0 (ISBN)

Lese- und Medienproben

Hardware Verification with C++ -  Robert Ekendahl,  Mike Mintz
Systemvoraussetzungen
106,99 inkl. MwSt
(CHF 104,50)
Der eBook-Verkauf erfolgt durch die Lehmanns Media GmbH (Berlin) zum Preis in Euro inkl. MwSt.
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

Describes a small verification library with a concentration on user adaptability such as re-useable components, portable Intellectual Property, and co-verification.

Takes a realistic view of reusability and distills lessons learned down to a tool box of techniques and guidelines.



Mike Mintz has more than 20 years of software development experience. Five years ago, he switched back to hardware verification. He has managed groups of software developers and has more than 15 years of C++ programming experience. He implemented C++ verification systems at several companies, using C++, as well languages such as SystemVerilog, Vera and 'e'.

Robert Ekendahl has a background in ASIC design and more then 12 years experience as a senior verification engineer. Has developed verification system and served as project manager for fortune 100 companies and start-ups with a focus on telecommunication. Has worked in C++ as well as languages such as Verilog, VHDL, C, Vera and 'e'.


For Further Reading . . . . . . . . . . . . . . . . . . . . . . . 41 C h a p t e r 4 : A L a y e r e d A p p r o a c h . . . . . . . . . . . 43 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 A Whiteboard Drawing . . . . . . . . . . . . . . . . . . . . . . 46 An "e;ends-in"e; approach. . . . . . . . . . . . . . . . . . . . . 47 Refining the whiteboard blocks . . . . . . . . . . . . . . . 47 The "e;Common-Currency"e; Components . . . . . . . . . . . 48 The Interface Layer in Detail. . . . . . . . . . . . . . . . . . 49 The wire layer . . . . . . . . . . . . . . . . . . . . . . . . . . 50 The agent layer . . . . . . . . . . . . . . . . . . . . . . . . . 52 The transaction layer . . . . . . . . . . . . . . . . . . . . . 53 The Top-Layer Components . . . . . . . . . . . . . . . . . . 54 What is a Test? . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 The Test Component . . . . . . . . . . . . . . . . . . . . . . . 58 The Test Irritator . . . . . . . . . . . . . . . . . . . . . . . . . 60 A Complete Test . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 For Further Reading . . . . . . . . . . . . . . . . . . . . . . . 63 Part II: An Open-Source Environment with C++ . . . . . . 65 C h a p t e r 5 : T e a l B a s i c s . . . . . . . . . . . . . . . . . . . 67 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 What Teal provides . . . . . . . . . . . . . . . . . . . . . . . 68 Teal's similarity to HDLs . . . . . . . . . . . . . . . . . . . 69 A tiny but complete example . . . . . . . . . . . . . . . . 69 Teal's Main Components. . . . . . . . . . . . . . . . . . . . . 71 Using Teal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Your C++ test . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 A P r ac titioner 's Handboo k ix Contents Creating registers . . . . . . . . . . . . . . . . . . . . . . . 74 Working with a reg or vreg . . . . . . . . . . . . . . . . . . 75 Logging Output . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Using Test Parameters . . . . . . . . . . . . . . . . . . . . . . 79 Accessing Memory . . . . . . . . . . . . . . . . . . . . . . . . . 81 A memory note example . . . . . . . . . . . . . . . . . . . 82 Constrained Random Numbers . . . . . . . . . . . . . . . . . 84 Required initialization . . . . . . . . . . . . . . . . . . . . . 84 Using random numbers. . . . . . . . . . . . . . . . . . . . . 84 Working with Simulation Events and Concurrency . . . . 86 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 For Further Reading . . . . . . . . . . . . . . . . . . . . . . . 88 Chapter 6: Truss: A Standard Verification F r a m e w o r k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 General Considerations . . . . . . . . . . . . . . . . . . . . . 93 Using a language other than C++ . . . . . . . . . . . . . . 93 Keeping it simple . . . . . . . . . . . . . . . . . . . . . . . . 94 Major Classes and Their Roles . . . . . . . . . . . . . . . . .

Mike Mintz has more than 20 years of software development experience. Five years ago, he switched back to hardware verification. He has managed groups of software developers and has more than 15 years of C++ programming experience. He implemented C++ verification systems at several companies, using C++, as well languages such as SystemVerilog, Vera and ‘e’.Robert Ekendahl has a background in ASIC design and more then 12 years experience as a senior verification engineer. Has developed verification system and served as project manager for fortune 100 companies and start-ups with a focus on telecommunication. Has worked in C++ as well as languages such as Verilog, VHDL, C, Vera and ‘e’.

Contents 8
Preface 20
Acknowledgments 22
CHAPTER 1 Introduction 23
Background 25
What is Functional Verification? 26
Why Focus on C++? 26
A Tour of the Handbook 27
For Further Reading 28
Part I: C++ and Verification (The Why and How) 29
CHAPTER 2 Why C++? 31
Overview 32
C++: A Good Verification Language 33
A Look at Hardware-Verification Languages 35
Main Benefits of Using C++ 37
Other Benefits of Using C++ 38
Drawbacks of Using C++ 39
For Further Reading 39
CHAPTER 3 OOP, C++, and Verification 41
Overview 42
The Evolution of OOP and C++ 43
The Evolution of Functional Verification 47
OOP Using C++ 51
Summary 63
For Further Reading 63
CHAPTER 4 A Layered Approach 65
Overview 66
A Whiteboard Drawing 68
The “Common-Currency” Components 70
The Interface Layer in Detail 71
The Top-Layer Components 76
What is a Test? 78
The Test Component 80
The Test Irritator 82
A Complete Test 83
Summary 85
For Further Reading 85
Part II: An Open-Source Environment with C++ 87
CHAPTER 5 Teal Basics 89
Overview 90
Teal’s Main Components 93
Using Teal 95
Logging Output 98
Using Test Parameters 101
Accessing Memory 103
Constrained Random Numbers 106
Working with Simulation Events and Concurrency 108
Summary 110
For Further Reading 110
CHAPTER 6 Truss: A Standard Verification Framework 113
Overview 114
General Considerations 115
Major Classes and Their Roles 117
The verification_component Abstract Base Class 121
Detailed Responsibilities of the Major Components 122
Test Component and Irritator Classes 128
Summary 135
CHAPTER 7 Truss Flow 137
Overview 138
About verification_top.cpp 138
The Test Component Dance 141
The Irritator Dance 143
Compiling and Running Tests 144
The First Test: A Directed Test 147
The Second Test: Adding Channels and Random Parameters 149
The Remaining Tests: Mix-and-Match Test Components 158
Summary 159
CHAPTER 8 Truss Example 161
Overview 162
Directory Structure 162
Theory of Operation 164
Running the Simple ALU Example 166
Points of Interest 166
Power-on Reset 167
Driver and Monitor Protocol 168
The alu_test_component 169
Checking the Chip 169
Completing the Test 171
Summary 172
Part III: Using OOP for Verification (Best Practices) 175
CHAPTER 9 Thinking OOP 177
Overview 178
Sources of Complexity 179
Creating Adaptable Code 188
Architectural Considerations to Maximize Adaptability 190
Separating Interface from Implementation 192
Interface, Implementation, and Base Classes 193
Summary 195
For Further Reading 195
CHAPTER 10 Designing with OOP 197
Overview 198
Keeping the Abstraction Level Consistent 198
Using “Correct by Construction” 200
The Value of Namespaces 203
Data Duplication—A Necessary Evil 205
Designing Well, Optimizing Only When Necessary 206
Using the Interface, Only the Interface 207
Verification Close to the Programming Model 208
The Three Parts of Checking 209
Separating the Test from the Testbench 211
Summary 212
For Further Reading 213
CHAPTER 11 OOP Classes 215
Overview 216
Defining Classes 217
How Much Electricity? 217
Global Services 220
Class Instance Identifiers 225
Class Inheritance for Reuse 227
Class Inheritance for Interfaces 229
Operator Overloading for Common-Currency Classes 232
Creating Classes—What the Compiler Will Do for You 234
Advanced Class Techniques 236
Summary 237
For Further Reading 238
CHAPTER 12 OOP Connections 239
Overview 240
How Tight a Connection? 241
Types of Connections 243
Two Tight Connection Techniques 245
Threads and Connections 248
Fancier Connections 251
Summary 255
For Further Reading 256
CHAPTER 13 Coding OOP 257
Overview 258
“If” Tests—A Necessary Evil 258
Coding Tricks 266
Coding Idioms 270
Enumeration for Data, Integer for Interface 275
What’s in a Name? 279
Coding with Style 281
Using Templates 286
Summary 290
For Further Reading 291
Part IV: Examples (Putting It All Together) 293
CHAPTER 14 Block Level Testing 295
Overview 296
Theory of Operation 297
Running the UART Example 301
Points of Interest 302
Configuration 302
Configuring the Chip 308
Traffic Generation 312
The Checker 315
Connecting It All Together 318
More Tests 326
Summary 326
CHAPTER 15 Chip Level Testing 329
Overview 330
Theory of Operation 330
Running the UART Example 332
The quad_test_components Test 332
The quad_uart_irritators Test 334
The quad_uart_vectors Test 339
The uart_test_0 Test 341
Summary 341
CHAPTER 16 Things to Remember 343
Part I: Use C++ and Layers! 344
Part II: An Open-Source Approach 344
Part III: OOP—Best Practices 345
Part IV: Examples—Copy and Adapt! 346
Conclusion to the Conclusion 347
Index 349

Erscheint lt. Verlag 11.12.2006
Zusatzinfo XXI, 341 p.
Verlagsort New York
Sprache englisch
Themenwelt Informatik Programmiersprachen / -werkzeuge C / C++
Informatik Weitere Themen CAD-Programme
Technik Elektrotechnik / Energietechnik
Schlagworte ASIC • C++ • C++ programming language • FPGA • Handbook • Hardware • programming • Standard • teal • testbenches • Truss • verification
ISBN-10 0-387-36254-1 / 0387362541
ISBN-13 978-0-387-36254-0 / 9780387362540
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
PDFPDF (Wasserzeichen)
Größe: 1,9 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
C++ lernen - professionell anwenden - Lösungen nutzen

von Ulrich Breymann

eBook Download (2023)
Carl Hanser Fachbuchverlag
CHF 48,80
C++ lernen - professionell anwenden - Lösungen nutzen

von Ulrich Breymann

eBook Download (2023)
Carl Hanser Fachbuchverlag
CHF 48,80
Das umfassende Handbuch

von Jürgen Wolf; René Krooß

eBook Download (2023)
Rheinwerk Computing (Verlag)
CHF 48,75