Mintz / Ekendahl | Hardware Verification with C++ | E-Book | www.sack.de
E-Book

E-Book, Englisch, 341 Seiten

Mintz / Ekendahl Hardware Verification with C++

A Practitioner's Handbook
1. Auflage 2006
ISBN: 978-0-387-36254-0
Verlag: Springer US
Format: PDF
Kopierschutz: 1 - PDF Watermark

A Practitioner's Handbook

E-Book, Englisch, 341 Seiten

ISBN: 978-0-387-36254-0
Verlag: Springer US
Format: PDF
Kopierschutz: 1 - PDF Watermark



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'.

Mintz / Ekendahl Hardware Verification with C++ jetzt bestellen!

Weitere Infos & Material


1;Contents;8
2;Preface;20
3;Acknowledgments;22
4;CHAPTER 1 Introduction;23
4.1;Background;25
4.2;What is Functional Verification?;26
4.3;Why Focus on C++?;26
4.4;A Tour of the Handbook;27
4.5;For Further Reading;28
5;Part I: C++ and Verification (The Why and How);29
5.1;CHAPTER 2 Why C++?;31
5.1.1;Overview;32
5.1.2;C++: A Good Verification Language;33
5.1.3;A Look at Hardware-Verification Languages;35
5.1.4;Main Benefits of Using C++;37
5.1.5;Other Benefits of Using C++;38
5.1.6;Drawbacks of Using C++;39
5.1.7;For Further Reading;39
5.2;CHAPTER 3 OOP, C++, and Verification;41
5.2.1;Overview;42
5.2.2;The Evolution of OOP and C++;43
5.2.3;The Evolution of Functional Verification;47
5.2.4;OOP Using C++;51
5.2.5;Summary;63
5.2.6;For Further Reading;63
5.3;CHAPTER 4 A Layered Approach;65
5.3.1;Overview;66
5.3.2;A Whiteboard Drawing;68
5.3.3;The “Common-Currency” Components;70
5.3.4;The Interface Layer in Detail;71
5.3.5;The Top-Layer Components;76
5.3.6;What is a Test?;78
5.3.7;The Test Component;80
5.3.8;The Test Irritator;82
5.3.9;A Complete Test;83
5.3.10;Summary;85
5.3.11;For Further Reading;85
6;Part II: An Open-Source Environment with C++;87
6.1;CHAPTER 5 Teal Basics;89
6.1.1;Overview;90
6.1.2;Teal’s Main Components;93
6.1.3;Using Teal;95
6.1.4;Logging Output;98
6.1.5;Using Test Parameters;101
6.1.6;Accessing Memory;103
6.1.7;Constrained Random Numbers;106
6.1.8;Working with Simulation Events and Concurrency;108
6.1.9;Summary;110
6.1.10;For Further Reading;110
6.2;CHAPTER 6 Truss: A Standard Verification Framework;113
6.2.1;Overview;114
6.2.2;General Considerations;115
6.2.3;Major Classes and Their Roles;117
6.2.4;The verification_component Abstract Base Class;121
6.2.5;Detailed Responsibilities of the Major Components;122
6.2.6;Test Component and Irritator Classes;128
6.2.7;Summary;135
6.3;CHAPTER 7 Truss Flow;137
6.3.1;Overview;138
6.3.2;About verification_top.cpp;138
6.3.3;The Test Component Dance;141
6.3.4;The Irritator Dance;143
6.3.5;Compiling and Running Tests;144
6.3.6;The First Test: A Directed Test;147
6.3.7;The Second Test: Adding Channels and Random Parameters;149
6.3.8;The Remaining Tests: Mix-and-Match Test Components;158
6.3.9;Summary;159
6.4;CHAPTER 8 Truss Example;161
6.4.1;Overview;162
6.4.2;Directory Structure;162
6.4.3;Theory of Operation;164
6.4.4;Running the Simple ALU Example;166
6.4.5;Points of Interest;166
6.4.6;Power-on Reset;167
6.4.7;Driver and Monitor Protocol;168
6.4.8;The alu_test_component;169
6.4.9;Checking the Chip;169
6.4.10;Completing the Test;171
6.4.11;Summary;172
7;Part III: Using OOP for Verification (Best Practices);175
7.1;CHAPTER 9 Thinking OOP;177
7.1.1;Overview;178
7.1.2;Sources of Complexity;179
7.1.3;Creating Adaptable Code;188
7.1.4;Architectural Considerations to Maximize Adaptability;190
7.1.5;Separating Interface from Implementation;192
7.1.6;Interface, Implementation, and Base Classes;193
7.1.7;Summary;195
7.1.8;For Further Reading;195
7.2;CHAPTER 10 Designing with OOP;197
7.2.1;Overview;198
7.2.2;Keeping the Abstraction Level Consistent;198
7.2.3;Using “Correct by Construction”;200
7.2.4;The Value of Namespaces;203
7.2.5;Data Duplication—A Necessary Evil;205
7.2.6;Designing Well, Optimizing Only When Necessary;206
7.2.7;Using the Interface, Only the Interface;207
7.2.8;Verification Close to the Programming Model;208
7.2.9;The Three Parts of Checking;209
7.2.10;Separating the Test from the Testbench;211
7.2.11;Summary;212
7.2.12;For Further Reading;213
7.3;CHAPTER 11 OOP Classes;215
7.3.1;Overview;216
7.3.2;Defining Classes;217
7.3.3;How Much Electricity?;217
7.3.4;Global Services;220
7.3.5;Class Instance Identifiers;225
7.3.6;Class Inheritance for Reuse;227
7.3.7;Class Inheritance for Interfaces;229
7.3.8;Operator Overloading for Common-Currency Classes;232
7.3.9;Creating Classes—What the Compiler Will Do for You;234
7.3.10;Advanced Class Techniques;236
7.3.11;Summary;237
7.3.12;For Further Reading;238
7.4;CHAPTER 12 OOP Connections;239
7.4.1;Overview;240
7.4.2;How Tight a Connection?;241
7.4.3;Types of Connections;243
7.4.4;Two Tight Connection Techniques;245
7.4.5;Threads and Connections;248
7.4.6;Fancier Connections;251
7.4.7;Summary;255
7.4.8;For Further Reading;256
7.5;CHAPTER 13 Coding OOP;257
7.5.1;Overview;258
7.5.2;“If” Tests—A Necessary Evil;258
7.5.3;Coding Tricks;266
7.5.4;Coding Idioms;270
7.5.5;Enumeration for Data, Integer for Interface;275
7.5.6;What’s in a Name?;279
7.5.7;Coding with Style;281
7.5.8;Using Templates;286
7.5.9;Summary;290
7.5.10;For Further Reading;291
8;Part IV: Examples (Putting It All Together);293
8.1;CHAPTER 14 Block Level Testing;295
8.1.1;Overview;296
8.1.2;Theory of Operation;297
8.1.3;Running the UART Example;301
8.1.4;Points of Interest;302
8.1.5;Configuration;302
8.1.6;Configuring the Chip;308
8.1.7;Traffic Generation;312
8.1.8;The Checker;315
8.1.9;Connecting It All Together;318
8.1.10;More Tests;326
8.1.11;Summary;326
8.2;CHAPTER 15 Chip Level Testing;329
8.2.1;Overview;330
8.2.2;Theory of Operation;330
8.2.3;Running the UART Example;332
8.2.4;The quad_test_components Test;332
8.2.5;The quad_uart_irritators Test;334
8.2.6;The quad_uart_vectors Test;339
8.2.7;The uart_test_0 Test;341
8.2.8;Summary;341
8.3;CHAPTER 16 Things to Remember;343
8.3.1;Part I: Use C++ and Layers!;344
8.3.2;Part II: An Open-Source Approach;344
8.3.3;Part III: OOP—Best Practices;345
8.3.4;Part IV: Examples—Copy and Adapt!;346
8.3.5;Conclusion to the Conclusion;347
9;Index;349



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.