Search and Find

Book Title

Author/Publisher

Table of Contents

Show eBooks for my device only:

 

Hardware Verification with C++ - A Practitioner's Handbook

of: Mike Mintz, Robert Ekendahl

Springer-Verlag, 2006

ISBN: 9780387362540 , 341 Pages

Format: PDF, Read online

Copy protection: DRM

Windows PC,Mac OSX,Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Read Online for: Windows PC,Mac OSX,Linux

Price: 106,99 EUR



More of the content

Hardware Verification with C++ - A Practitioner's Handbook


 

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