×

Writing Testbenches using Syst

消耗积分:0 | 格式:rar | 大小:3 | 2009-07-11

1045098026

分享资料个

Coverage Points    51
Cross Coverage  53
Transition Coverage   . 53
What Does 100 Percent Functional Coverage Mean? . 54
Verification Language Technologies  55
Assertions  . . 57
Simulated Assertions   . 58
Formal Assertion Proving  59
Revision Control   . . 61
The Software Engineering Experience  62
Configuration Management  . 63
Working with Releases   65
Issue Tracking    66
What Is an Issue?    67
The Grapevine System   68
The Post-It System   . . 68
The Procedural System   69
Computerized System   69
Metrics   . 71
Code-Related Metrics   71
Quality-Related Metrics  . . 73
Interpreting Metrics   . 74
Summary   76
CHAPTER 3 The Verification Plan 77
The Role of the Verification Plan  . . 78
Specifying the Verification  78
Defining First-Time Success  . 79
Levels of Verification  . . 80
Unit-Level Verification   81
Block and Core Verification  . 82
ASIC and FPGA Verification  84
System-Level Verification  . 84
Board-Level Verification  . . 85
Verification Strategies  86
Verifying the Response   86
From Specification to Features . 87
Block-Level Features   90
System-Level Features   91
Table of Contents
viii Writing Testbenches using SystemVerilog
Error Types to Look For  . . 91
Prioritize   . 92
Design for Verification   93
Directed Testbenches Approach 96
Group into Testcases   . 96
From Testcases to Testbenches  98
Verifying Testbenches   99
Measuring Progress   100
Coverage-Driven Random-Based Approach  . . 101
Measuring Progress   101
From Features to Functional Coverage . . 103
From Features to Testbench  105
From Features to Generators  107
Directed Testcases   . . 109
Summary  111
CHAPTER 4 High-Level Modeling 113
High-Level versus RTL Thinking  . .113
Contrasting the Approaches  115
You Gotta Have Style!  . .117
A Question of Discipline  . 117
Optimize the Right Thing  118
Good Comments Improve Maintainability 121
Structure of High-Level Code . 122
Encapsulation Hides Implementation Details  . . 122
Encapsulating Useful Subprograms  . 125
Encapsulating Bus-Functional Models  127
Data Abstraction   . 130
2-state Data Types   . 131
Struct, Class  . 131
Union   . . 134
Arrays   . . 139
Queues   . 141
Associative Arrays   . 143
Files  145
From High-Level to Physical-Level  . 146
Object-Oriented Programming 147
Classes   . 147
Inheritance  . . 153
Writing Testbenches using SystemVerilog ix
Polymorphism  156
The Parallel Simulation Engine 159
Connectivity, Time and Concurrency  160
The Problems with Concurrency . 160
Emulating Parallelism on a Sequential Processor  162
The Simulation Cycle   163
Parallel vs. Sequential  . . 169
Fork/Join Statement   170
The Difference Between Driving and Assigning  . 173
Race Conditions  . . 176
Read/Write Race Conditions  177
Write/Write Race Conditions  180
Initialization Races   . 182
Guidelines for Avoiding Race Conditions . 183
Semaphores  . . 184
Portability Issues   186
Events from Overwritten Scheduled Values   186
Disabled Scheduled Values  . 187
Output Arguments on Disabled Tasks  188
Non-Re-Entrant Tasks   188
Static vs. Automatic Variables . . 193
Summary  . . 196
CHAPTER 5 Stimulus and Response 197
Reference Signals   198
Time Resolution Issues  . . 199
Aligning Signals in Delta-Time . . 201
Clock Multipliers   . . 203
Asynchronous Reference Signals 205
Random Generation of Reference Signal Parameters 206
Applying Reset    208
Simple Stimulus   . 212
Applying Synchronous Data Values  . 212
Abstracting Waveform Generation  . . 214
Simple Output    216
Visual Inspection of Response  217
Producing Simulation Results  217
Minimizing Sampling   219
Visual Inspection of Waveforms . 220
Table of Contents
x Writing Testbenches using SystemVerilog
Self-Checking Testbenches  . 221
Input and Output Vectors  221
Golden Vectors    222
Self-Checking Operations  224
Complex Stimulus   227
Feedback Between Stimulus and Design . 228
Recovering from Deadlocks  228
Asynchronous Interfaces  . 231
Bus-Functional Models  234
CPU Transactions   . . 234
From Bus-Functional Tasks to Bus-Functional Model 236
Physical Interfaces   . 238
Configurable Bus-Functional Models  243
Response Monitors   246
Autonomous Monitors   249
Slave Generators   . . 253
Multiple Possible Transactions . . 255
Transaction-Level Interface  258
Procedural Interface vs Dataflow Interface   259
What is a Transaction?  . . 263
Blocking Transactions  . . 265
Nonblocking Transactions  . 265
Split Transactions   . . 267
Exceptions   270
Summary  . . 278
CHAPTER 6 Architecting Testbenches 279
Verification Harness  . . 280
Design Configuration  . 284
Abstracting Design Configuration  . . 285
Configuring the Design  . . 288
Random Design Configuration . . 290
Self-Checking Testbenches  292
Hard Coded Response  . . 294
Data Tagging  295
Reference Models   . . 297
Transfer Function   . . 299
Scoreboarding  300
Integration with the Transaction Layer . . 302
Writing Testbenches using SystemVerilog xi
Directed Stimulus   304
Random Stimulus   . 307
Atomic Generation   . 307
Adding Constraints   . 312
Constraining Sequences  . 316
Defining Random Scenarios  320
Defining Procedural Scenarios . 322
System-Level Verification Harnesses . . 327
Layered Bus-Functional Models . 328
Summary  . . 331
CHAPTER 7 Simulation Management 333
Transaction-Level Models  333
Transaction-Level versus Synthesizable Models  334
Example of Transaction-Level Modeling . 335
Characteristics of a Transaction-Level Model  . . 337
Modeling Reset    341
Writing Good Transaction-Level Models . 342
Transaction-Level Models Are Faster  347
The Cost of Transaction-Level Models  348
The Benefits of Transaction-Level Models 349
Demonstrating Equivalence  351
Pass or Fail?  352
Managing Simulations  . 355
Configuration Management  355
Avoiding Recompilation or SDF Re-Annotation  . 358
Output File Management  361
Seed Management   . . 364
Regression  . 365
Running Regressions   366
Regression Management  . 367
Summary  . . 370
APPENDIX A Coding Guidelines 371
File Structure    372
Filenames   375
Style Guidelines   . . 376
Table of Contents
xii Writing Testbenches using SystemVerilog
Comments   376
Layout   . . 378
Structure   380
Debugging   383
Naming Guidelines   384
Capitalization  384
Identifiers   386
Constants   389
Portability Guidelines  . 391
APPENDIX B Glossary 397
Index 401

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !