EDA365电子工程师网
标题:
SystemVerilog for Verification
[打印本页]
作者:
xuzwg
时间:
2016-5-4 16:14
标题:
SystemVerilog for Verification
2 y& p% \# J; a$ N7 [+ o
SystemVerilog for Verification:
, N* u, `$ N3 _: u7 }7 ]5 N
A Guide to Learning the Testbench Language Features
9 l" V1 E. s) J; k+ c4 G i. e# _! s
1. VERIFICATION GUIDELINES 1
' c( K6 a5 I1 x5 C2 ]: @$ W
1.1 Introduction 1
! C' Z* \, n; R {5 s6 B# j# m
1.2 The Verification Process 2
1 j1 h* }1 v9 S) d$ Q; R: D7 ?
1.3 The Verification Plan 4
( c+ k9 R8 K( \$ q5 T6 j! S
1.4 The Verification Methodology Manual 4
/ \' H3 Z2 n+ q! W' ^, Z
1.5 Basic Testbench Functionality 5
" D2 N5 } y! w/ u
1.6 Directed Testing 5
) a3 Z6 i! Z& m
1.7 Methodology Basics 7
4 h* b$ E% R2 J2 `! L
1.8 Constrained-Random Stimulus 8
5 I# Z d9 l/ P/ c- f2 r4 T
1.9 What Should You Randomize? 10
: k" n: N! O; e
1.10 Functional Coverage 13
3 W3 o# H# V9 U. ?8 u v. i9 R
1.11 Testbench Components 15
6 }: T1 _1 Z# Z
1.12 Layered Testbench 16
' C. N. N& B* \# v# S$ @
1.13 Building a Layered Testbench 22
- q6 E* w$ G0 q) Z
1.14 Simulation Environment Phases 23
3 D1 h3 ]5 l9 Q2 {0 \! R, e5 D5 g
1.15 Maximum Code Reuse 24
8 R( K5 ]- M9 r6 \8 A9 @( P- N% c
1.16 Testbench Performance 24
( a5 [! T1 A/ F6 c& M" T
1.17 Conclusion 25
9 g: s5 |! d* q6 _
2. DATA TYPES 27
2 h# ?( F7 B9 ~
2.1 Introduction 27
n6 i9 \; Q$ I$ \3 M( a
2.2 Built-in Data Types 27
7 X# e: b1 U* @" z0 U# e
viii SystemVerilog for Verification
4 q& ~( L1 K, n" E
2.3 Fixed-Size Arrays 29
% y4 s, T2 z8 U6 k# j
2.4 Dynamic Arrays 34
5 @: s% ^/ S/ f2 |( b: | Q! h
2.5 Queues 36
2 Y* w# E% d4 q4 K5 k0 N
2.6 Associative Arrays 37
8 ^0 M( x, L9 S
2.7 Linked Lists 39
2 G n) {0 C m/ Q
2.8 Array Methods 40
! F Z1 C1 Z. z% t x- C
2.9 Choosing a Storage Type 42
2 V; L, y4 @5 T
2.10 Creating New Types with typedef 45
- N# u) _" X7 z3 Q& i8 z& Y
2.11 Creating User-Defined Structures 46
* a. p) ]/ f$ n. j
2.12 Enumerated Types 47
' s5 p `* X4 S# U( X
2.13 Constants 51
% H2 _1 d* d! `2 K+ s& B. F
2.14 Strings 51
/ }# d5 e6 W% K6 h
2.15 Expression Width 52
$ H, c; p, V% J. E! a& ^, \
2.16 Net Types 53
; Q7 y9 T- g) s% E
2.17 Conclusion 53
( ~. [- D" O4 m) X( j k+ x
3. PROCEDURAL STATEMENTS AND ROUTINES 55
: e5 T3 s5 e6 K$ F1 G
3.1 Introduction 55
6 C' q" f8 J' C3 D# e! e! d
3.2 Procedural Statements 55
& D6 {& ~* ]. r
3.3 Tasks, Functions, and Void Functions 56
7 H2 J1 i/ F2 }3 S
3.4 Task and Function Overview 57
: E3 G0 W" a/ r) Y
3.5 Routine Arguments 57
' k, D/ M# [5 ~
3.6 Returning from a Routine 62
8 X i) U. A; i
3.7 Local Data Storage 62
~- X# r# q( W! h! C
3.8 Time Values 64
' R, L; J& [7 G! G' ~
3.9 Conclusion 65
& i) }+ u6 o) X3 X9 \0 R$ F
4. BASIC OOP 67
* S( _! i( i, j: P
4.1 Introduction 67
) K$ i( P2 M$ _
4.2 Think of Nouns, not Verbs 67
" p) W# K( c! T+ b3 {5 M
4.3 Your First Class 68
2 x$ a7 A9 z7 i
4.4 Where to Define a Class 69
, V+ B' V7 X5 \
4.5 OOP Terminology 69
+ T4 ]! T6 G2 x2 [* P% ?
4.6 Creating New Objects 70
d3 ?9 D o# i& s5 G/ Z
4.7 Object Deallocation 74
7 p3 b+ O \3 R* i) F+ ]5 z1 }
4.8 Using Objects 76
) v3 B/ C0 _ |% \7 w+ M
4.9 Static Variables vs. Global Variables 76
+ \5 \- f! S) m0 _: j1 G
4.10 Class Routines 78
2 {" g' H4 O" c3 F) L
4.11 Defining Routines Outside of the Class 79
3 w v( Y! L0 d! A
4.12 Scoping Rules 81
2 p4 m5 `6 K/ g' J5 S
4.13 Using One Class Inside Another 85
+ J T# d9 Q0 i O, R$ X
4.14 Understanding Dynamic Objects 87
3 G/ v3 l: a& [& s4 V
4.15 Copying Objects 91
: L4 X' [8 m! T, U V" u* C; K
4.16 Public vs. Private 95
+ v( ?- Q( Y# J4 w' B- n1 Q
Contents ix
5 E! [% e8 U# c: ]" X
4.17 Straying Off Course 96
) V6 V4 f; H$ |! Y, i
4.18 Building a Testbench 96
! C- R. x. D M. ~$ M* F4 n$ i
4.19 Conclusion 97
6 o! p) T1 V; A4 Y+ N2 v
5. CONNECTING THE TESTBENCH AND DESIGN 99
2 ~9 s+ M7 B" @( s) @& R6 B
5.1 Introduction 99
% z, E& ?8 a) ]# N
5.2 Separating the Testbench and Design 99
1 T% Y! H6 l9 H5 T5 ^
5.3 The Interface Construct 102
6 B: q ~2 g9 \' b3 U n: }
5.4 Stimulus Timing 108
. T( A1 L2 x4 B( {- \
5.5 Interface Driving and Sampling 114
# T7 H1 V& {$ T$ ]7 c, Q
5.6 Connecting It All Together 121
7 q) _ x0 B/ k% N
5.7 Top-Level Scope 121
% ^! Y5 A3 T2 A5 u7 M" j0 g8 j& H) C
5.8 Program – Module Interactions 123
- s. |& x* ^- h8 v& L6 D
5.9 SystemVerilog Assertions 124
2 u- k2 a8 H) h' v+ N- x6 E, p$ f: o! k
5.10 The Four-Port ATM Router 126
9 i( r; u' v G/ v0 X
5.11 Conclusion 134
5 L: m/ Y4 {' ?! Q5 q' I7 W* }0 s
6. RANDOMIZATION 135
8 A7 d& [) {" O# |7 v
6.1 Introduction 135
* Q# R* I& i* R/ m, V- q* h
6.2 What to Randomize 136
8 E3 C, }4 U! H O/ r% `( G- h
6.3 Randomization in SystemVerilog 138
$ V4 E$ Q4 @$ @. p- L9 G
6.4 Constraint Details 141
q; d; q) a/ ^: g; }0 J: j
6.5 Solution Probabilities 149
; V1 D/ E1 W4 }! C) g# ]3 F+ }
6.6 Controlling Multiple Constraint Blocks 154
9 ?) s5 j" _" i; U7 {" X
6.7 Valid Constraints 154
( y; |& h* p; l$ x e
6.8 In-line Constraints 155
0 h- i3 `8 Z0 I0 Y
6.9 The pre_randomize and post_randomize Functions 156
+ e. x3 s; V( F
6.10 Constraints Tips and Techniques 158
, [$ z: A3 H2 Q2 ]
6.11 Common Randomization Problems 164
. H$ D0 S; S8 O' Y8 k
6.12 Iterative and Array Constraints 165
f* g+ _% `1 g" {: d
6.13 Atomic Stimulus Generation vs. Scenario Generation 172
" t8 u4 w$ |; {
6.14 Random Control 175
& ^* V' ?+ a# F7 m% Z+ v8 ^
6.15 Random Generators 177
1 n8 L2 _2 B( |. s1 p0 E! u
6.16 Random Device Configuration 180
1 o! I/ R9 y: F
6.17 Conclusion 182
2 B! v. |" u l7 p
7. THREADS AND INTERPROCESS COMMUNICATION 183
: |' X/ s; [) I# H
7.1 Introduction 183
8 q# O# r7 F1 w; M) g" K
7.2 Working with Threads 184
4 u$ d. i! H4 m0 H7 D
7.3 Interprocess Communication 194
! e* o2 c6 I7 b8 C2 ?3 s4 m
7.4 Events 195
' w$ F; A* F4 V2 X2 i+ e. j5 n* L
7.5 Semaphores 199
/ {$ [# K P% @) B, z% Q
7.6 Mailboxes 201
( `8 z* |8 |" G
7.7 Building a Testbench with Threads and IPC 210
8 r6 e6 L# t# A: ?
x SystemVerilog for Verification
$ M& q; F$ X$ e/ D$ P
7.8 Conclusion 214
! K; k/ s5 M$ F8 n
8. ADVANCED OOP AND GUIDELINES 215
- @% u. q# @) l3 _, e
8.1 Introduction 215
! ? i% a# r, j' J
8.2 Introduction to Inheritance 216
. c4 a; G/ a9 N( P1 J; t
8.3 Factory Patterns 221
. A; t4 c$ ^& P/ g1 U% G3 v2 z# p N
8.4 Type Casting and Virtual Methods 225
" @& n' C& {8 S1 M
8.5 Composition, Inheritance, and Alternatives 228
- k. |+ a2 E2 R$ s, B1 x: S
8.6 Copying an Object 233
6 G0 S+ G: a" f3 A8 i* x
8.7 Callbacks 236
: ?. n" q! a; j4 \- O" Q9 Q
8.8 Conclusion 240
. B& K, F9 z/ G0 b4 j
9. FUNCTIONAL COVERAGE 241
+ `7 M9 E9 l m: n
9.1 Introduction 241
9 I4 r, y# P* a8 z' Y3 ?% m
9.2 Coverage Types 243
' E9 ?9 e1 F' `* @; z! ?% a
9.3 Functional Coverage Strategies 246
3 c* m K/ H5 J6 A1 K
9.4 Simple Functional Coverage Example 248
1 a3 h9 F. H4 g3 h, l9 v" p
9.5 Anatomy of a Cover Group 251
, |( e# E* w) Y5 Y- S( M
9.6 Triggering a Cover Group 253
' V- F- ~% _8 l+ Q
9.7 Data Sampling 256
8 w- N, {9 D2 |% B
9.8 Cross Coverage 265
/ E& \1 p. C( C; y1 N0 _
9.9 Coverage Options 272
: K* u% }9 T5 K
9.10 Parameterized Cover Groups 274
/ P7 `, {# l7 {, l% v, c9 d4 f
9.11 Analyzing Coverage Data 275
( P. \/ s% E7 h1 U
9.12 Measuring Coverage Statistics During Simulation 276
" b- p: Q* A* j1 q1 u) y
9.13 Conclusion 277
! p5 i+ N1 m$ I9 L( L
10. ADVANCED INTERFACES 279
4 T$ K: y. i+ ], U
10.1 Introduction 279
% H. Y4 y8 h: q8 o6 X
10.2 Virtual Interfaces with the ATM Router 279
' I' P9 P n7 r( t1 \
10.3 Connecting to Multiple Design Configurations 284
. W0 T* \# h& c+ Y) ~/ Q3 P' O
10.4 Procedural Code in an Interface 290
. r3 l1 o' s t& f* T6 f) A0 x
10.5 Conclusion 294
1 ]$ h' N( T; D- g
References 295
) ]: q% A+ O7 s
Index 297
% A s) p7 p2 N( \
Systemverilog for Verification.rar
2016-5-4 16:14 上传
点击文件名下载附件
下载积分: 威望 -5
1.26 MB, 下载次数: 0, 下载积分: 威望 -5
作者:
xuzwg
时间:
2016-5-4 16:14
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2