在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12164|回复: 67

[资料] SystemVerilog For Design 2nd Edition

[复制链接]
发表于 2013-4-21 08:57:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
SystemVerilog For Design
A Guide to Using SystemVerilog for Hardware Design and Modeling

SystemVerilog for Design(Second Edition).pdf (2.66 MB, 下载次数: 1007 )



Foreword ................................................................................................................. xxi
Preface ................................................................................................................... xxiii
Target audience...................................................................................................................... xxiii
Topics covered........................................................................................................................xxiv
About the examples in this book..............................................................................................xxv
Obtaining copies of the examples...........................................................................................xxvi
Example testing.......................................................................................................................xxvi
Other sources of information .................................................................................................xxvii
Acknowledgements..................................................................................................................xxx
Chapter 1: Introduction to SystemVerilog...............................................................1
1.1     SystemVerilog origins.......................................................................................................1
1.1.1     Generations of the SystemVerilog standard.......................................................2
1.1.2     Donations to SystemVerilog ..............................................................................4
1.2     Key SystemVerilog enhancements for hardware design...................................................5
1.3     Summary ...........................................................................................................................6
Chapter 2: SystemVerilog Declaration Spaces ........................................................7
2.1     Packages  ...........................................................................................................................8
2.1.1     Package definitions ............................................................................................9
2.1.2     Referencing package contents..........................................................................10
2.1.3     Synthesis guidelines .........................................................................................14
2.2     $unit compilation-unit declarations.................................................................................14
2.2.1     Coding guidelines.............................................................................................17
2.2.2     SystemVerilog identifier search rules ..............................................................17
2.2.3     Source code order.............................................................................................17
2.2.4     Coding guidelines for importing packages into $unit ......................................19
2.2.5     Synthesis guidelines .........................................................................................25
2.3     Declarations in unnamed statement blocks .....................................................................26
2.3.1     Local variables in unnamed blocks ..................................................................27
2.4     Simulation time units and precision ................................................................................28
2.4.1     Verilog’s timescale directive............................................................................28
2.4.2     Time values with time units .............................................................................30
2.4.3     Scope-level time unit and precision .................................................................31viii
2.4.4     Compilation-unit time units and precision.......................................................32
2.5     Summary .........................................................................................................................34
Chapter 3: SystemVerilog Literal Values and Built-in Data Types.....................37
3.1     Enhanced literal value assignments.................................................................................38
3.2     ‘define enhancements ......................................................................................................39
3.2.1     Macro argument substitution within strings.....................................................39
3.2.2     Constructing identifier names from macros.....................................................41
3.3     SystemVerilog variables..................................................................................................42
3.3.1     Object types and data types..............................................................................42
3.3.2     SystemVerilog 4-state variables.......................................................................43
3.3.3     SystemVerilog 2-state variables.......................................................................44
3.3.4     Explicit and implicit variable and net data types .............................................47
3.3.5     Synthesis guidelines .........................................................................................48
3.4     Using 2-state types in RTL models .................................................................................48
3.4.1     2-state type characteristics ...............................................................................49
3.4.2     2-state types versus 2-state simulation.............................................................49
3.4.3     Using 2-state types with case statements .........................................................51
3.5     Relaxation of type rules...................................................................................................52
3.6     Signed and unsigned modifiers .......................................................................................55
3.7     Static and automatic variables.........................................................................................56
3.7.1     Static and automatic variable initialization ......................................................59
3.7.2     Synthesis guidelines for automatic variables ...................................................60
3.7.3     Guidelines for using static and automatic variables.........................................61
3.8     Deterministic variable initialization ................................................................................61
3.8.1     Initialization determinism ................................................................................61
3.8.2     Initializing sequential logic asynchronous inputs ............................................65
3.9     Type casting ....................................................................................................................67
3.9.1     Static (compile time) casting............................................................................67
3.9.2     Dynamic casting...............................................................................................69
3.9.3     Synthesis guidelines .........................................................................................70
3.10   Constants .........................................................................................................................71
3.11   Summary .........................................................................................................................72
Chapter 4: SystemVerilog User-Defined and Enumerated Types .......................75
4.1     User-defined types...........................................................................................................75
4.1.1     Local typedef definitions..................................................................................76
4.1.2     Shared typedef definitions................................................................................76
4.1.3     Naming convention for user-defined types ......................................................78
4.2     Enumerated types ............................................................................................................79
4.2.1     Enumerated type label sequences.....................................................................83ix
4.2.2     Enumerated type label scope............................................................................83
4.2.3     Enumerated type values ...................................................................................84
4.2.4     Base type of enumerated types.........................................................................85
4.2.5     Typed and anonymous enumerations...............................................................86
4.2.6     Strong typing on enumerated type operations..................................................86
4.2.7     Casting expressions to enumerated types.........................................................88
4.2.8     Special system tasks and methods for enumerated types.................................89
4.2.9     Printing enumerated types................................................................................92
4.3     Summary .........................................................................................................................93
Chapter 5: SystemVerilog Arrays, Structures and Unions ..................................95
5.1     Structures.........................................................................................................................96
5.1.1     Structure declarations.......................................................................................97
5.1.2     Assigning values to structures..........................................................................98
5.1.3     Packed and unpacked structures.....................................................................101
5.1.4     Passing structures through ports.....................................................................104
5.1.5     Passing structures as arguments to tasks and functions .................................105
5.1.6     Synthesis guidelines .......................................................................................105
5.2     Unions ...........................................................................................................................105
5.2.1     Unpacked unions............................................................................................106
5.2.2     Tagged unions ................................................................................................108
5.2.3     Packed unions.................................................................................................109
5.2.4     Synthesis guidelines .......................................................................................111
5.2.5     An example of using structures and unions ...................................................111
5.3     Arrays ............................................................................................................................113
5.3.1     Unpacked arrays.............................................................................................113
5.3.2     Packed arrays .................................................................................................116
5.3.3     Using packed and unpacked arrays ................................................................118
5.3.4     Initializing arrays at declaration.....................................................................119
5.3.5     Assigning values to arrays .............................................................................121
5.3.6     Copying arrays ...............................................................................................123
5.3.7     Copying arrays and structures using bit-stream casting.................................124
5.3.8     Arrays of arrays..............................................................................................125
5.3.9     Using user-defined types with arrays.............................................................126
5.3.10   Passing arrays through ports and to tasks and functions................................127
5.3.11   Arrays of structures and unions......................................................................128
5.3.12   Arrays in structures and unions......................................................................128
5.3.13   Synthesis guidelines .......................................................................................128
5.3.14   An example of using arrays............................................................................129
5.4     The foreach array looping construct..............................................................................130x
5.5     Array querying system functions ..................................................................................132
5.6     The $bits “sizeof” system function ...............................................................................134
5.7     Dynamic arrays, associative arrays, sparse arrays and strings ......................................135
5.8     Summary .......................................................................................................................136
Chapter 6: SystemVerilog Procedural Blocks, Tasks and Functions ................137
6.1     Verilog general purpose always procedural block ........................................................138
6.2     SystemVerilog specialized procedural blocks...............................................................142
6.2.1     Combinational logic procedural blocks .........................................................142
6.2.2     Latched logic procedural blocks ....................................................................150
6.2.3     Sequential logic procedural blocks ................................................................152
6.2.4     Synthesis guidelines .......................................................................................152
6.3     Enhancements to tasks and functions............................................................................153
6.3.1     Implicit task and function statement grouping...............................................153
6.3.2     Returning function values ..............................................................................153
6.3.3     Returning before the end of tasks and functions............................................154
6.3.4     Void functions................................................................................................155
6.3.5     Passing task/function arguments by name .....................................................156
6.3.6     Enhanced function formal arguments ............................................................157
6.3.7     Functions with no formal arguments..............................................................158
6.3.8     Default formal argument direction and type ..................................................158
6.3.9     Default formal argument values.....................................................................159
6.3.10   Arrays, structures and unions as formal arguments .......................................160
6.3.11   Passing argument values by reference instead of copy..................................161
6.3.12   Named task and function ends .......................................................................165
6.3.13   Empty tasks and functions .............................................................................166
6.4     Summary .......................................................................................................................166
Chapter 7: SystemVerilog Procedural Statements..............................................169
7.1     New operators................................................................................................................170
7.1.1     Increment and decrement operators ...............................................................170
7.1.2     Assignment operators.....................................................................................173
7.1.3     Equality operators with don’t care wildcards.................................................176
7.1.4     Set membership operator — inside ................................................................178
7.2     Operand enhancements..................................................................................................180
7.2.1     Operations on 2-state and 4-state types..........................................................180
7.2.2     Type casting ...................................................................................................180
7.2.3     Size casting.....................................................................................................181
7.2.4     Sign casting ....................................................................................................182
7.3     Enhanced for loops........................................................................................................182
7.3.1     Local variables within for loop declarations..................................................183xi
7.3.2     Multiple for loop assignments........................................................................185
7.3.3     Hierarchically referencing variables declared in for loops ............................185
7.3.4     Synthesis guidelines .......................................................................................186
7.4     Bottom testing do...while loop ......................................................................................186
7.4.1     Synthesis guidelines .......................................................................................188
7.5     The foreach array looping construct..............................................................................188
7.6     New jump statements — break, continue, return ..........................................................188
7.6.1     The continue statement ..................................................................................190
7.6.2     The break statement .......................................................................................190
7.6.3     The return statement.......................................................................................191
7.6.4     Synthesis guidelines .......................................................................................192
7.7     Enhanced block names ..................................................................................................192
7.8     Statement labels.............................................................................................................194
7.9     Enhanced case statements .............................................................................................195
7.9.1     Unique case decisions ....................................................................................196
7.9.2     Priority case statements..................................................................................199
7.9.3     Unique and priority versus parallel_case and full_case.................................201
7.10   Enhanced if...else decisions...........................................................................................203
7.10.1   Unique if...else decisions ...............................................................................203
7.10.2   Priority if decisions ........................................................................................205
7.11   Summary .......................................................................................................................206
Chapter 8: Modeling Finite State Machines with SystemVerilog ......................207
8.1     Modeling state machines with enumerated types..........................................................208
8.1.1     Representing state encoding with enumerated types .....................................210
8.1.2     Reversed case statements with enumerated types..........................................211
8.1.3     Enumerated types and unique case statements...............................................213
8.1.4     Specifying unused state values.......................................................................214
8.1.5     Assigning state values to enumerated type variables.....................................216
8.1.6     Performing operations on enumerated type variables....................................218
8.2     Using 2-state types in FSM models...............................................................................219
8.2.1     Resetting FSMs with 2-state and enumerated types ......................................219
8.3     Summary .......................................................................................................................221
Chapter 9: SystemVerilog Design Hierarchy.......................................................223
9.1     Module prototypes.........................................................................................................224
9.1.1     Prototype and actual definition ......................................................................225
9.1.2     Avoiding port declaration redundancy...........................................................225
9.2     Named ending statements..............................................................................................226
9.2.1     Named module ends.......................................................................................226
9.2.2     Named code block ends .................................................................................226xii
9.3     Nested (local) module declarations ...............................................................................227
9.3.1     Nested module name visibility.......................................................................230
9.3.2     Instantiating nested modules ..........................................................................231
9.3.3     Nested module name search rules ..................................................................232
9.4     Simplified netlists of module instances.........................................................................233
9.4.1     Implicit  .name port connections....................................................................238
9.4.2     Implicit  .*  port connection ...........................................................................242
9.5     Net aliasing....................................................................................................................244
9.5.1     Alias rules.......................................................................................................245
9.5.2     Implicit net declarations.................................................................................246
9.5.3     Using aliases with .name and .* .....................................................................247
9.6     Passing values through module ports ............................................................................251
9.6.1     All types can be passed through ports............................................................251
9.6.2     Module port restrictions in SystemVerilog ....................................................252
9.7     Reference ports..............................................................................................................255
9.7.1     Reference ports as shared variables ...............................................................256
9.7.2     Synthesis guidelines .......................................................................................256
9.8     Enhanced port declarations ...........................................................................................257
9.8.1     Verilog-1995 port declarations ......................................................................257
9.8.2     Verilog-2001 port declarations ......................................................................257
9.8.3     SystemVerilog port declarations ....................................................................258
9.9     Parameterized types.......................................................................................................260
9.10   Summary .......................................................................................................................261
Chapter 10: SystemVerilog Interfaces..................................................................263
10.1   Interface concepts..........................................................................................................264
10.1.1   Disadvantages of Verilog’s module ports ......................................................268
10.1.2   Advantages of SystemVerilog interfaces .......................................................269
10.1.3   SystemVerilog interface contents ..................................................................273
10.1.4   Differences between modules and interfaces.................................................273
10.2   Interface declarations ....................................................................................................274
10.2.1   Source code declaration order........................................................................276
10.2.2   Global and local interface definitions ............................................................276
10.3   Using interfaces as module ports...................................................................................277
10.3.1   Explicitly named interface ports ....................................................................277
10.3.2   Generic interface ports ...................................................................................278
10.3.3   Synthesis guidelines .......................................................................................278
10.4   Instantiating and connecting interfaces .........................................................................278
10.5   Referencing signals within an interface ........................................................................279
10.6   Interface modports.........................................................................................................28110.6.1   Specifying which modport view to use..........................................................282
10.6.2   Using modports to define different sets of connections.................................286
10.7   Using tasks and functions in interfaces .........................................................................288
10.7.1   Interface methods ...........................................................................................289
10.7.2   Importing interface methods ..........................................................................289
10.7.3   Synthesis guidelines for interface methods....................................................292
10.7.4   Exporting tasks and functions ........................................................................293
10.8   Using procedural blocks in interfaces ...........................................................................296
10.9   Reconfigurable interfaces..............................................................................................296
10.10 Verification with interfaces ...........................................................................................298
10.11 Summary .......................................................................................................................299
Chapter 11: A Complete Design Modeled with SystemVerilog..........................301
11.1   SystemVerilog ATM example.......................................................................................301
11.2   Data abstraction.............................................................................................................302
11.3   Interface encapsulation..................................................................................................305
11.4   Design top level: squat ..................................................................................................308
11.5   Receivers and transmitters.............................................................................................315
11.5.1   Receiver state machine...................................................................................315
11.5.2   Transmitter state machine ..............................................................................318
11.6   Testbench.......................................................................................................................321
11.7   Summary .......................................................................................................................327
Chapter 12: Behavioral and Transaction Level Modeling .................................329
12.1   Behavioral modeling .....................................................................................................330
12.2   What is a transaction?....................................................................................................330
12.3   Transaction level modeling in SystemVerilog ..............................................................332
12.3.1   Memory subsystem example..........................................................................333
12.4   Transaction level models via interfaces ........................................................................335
12.5   Bus arbitration ...............................................................................................................337
12.6   Transactors, adapters, and bus functional models.........................................................341
12.6.1   Master adapter as module...............................................................................341
12.6.2   Adapter in an interface ...................................................................................348
12.7   More complex transactions ...........................................................................................353
12.8   Summary .......................................................................................................................354
Appendix A: The SystemVerilog Formal Definition (BNF) ...............................355
Appendix B: Verilog and SystemVerilog Reserved Keywords...........................395
Appendix C: A History of SUPERLOG, the Beginning of SystemVerilog .......401
Index ........................................................................................................................415

发表于 2013-4-21 09:42:00 | 显示全部楼层
SystemVerilog For Design 2nd Edition
发表于 2014-11-22 18:34:18 | 显示全部楼层
SystemVerilog For Design 2nd Edition
发表于 2014-11-22 20:58:49 | 显示全部楼层
对SystemVerilog有兴趣
发表于 2014-11-23 19:55:02 | 显示全部楼层
下来看看
发表于 2014-11-25 14:25:23 | 显示全部楼层
谢谢分享。
发表于 2014-11-27 09:41:46 | 显示全部楼层
感謝樓主分享!
发表于 2014-12-5 17:33:30 | 显示全部楼层
谢谢分享。
发表于 2014-12-5 20:57:26 | 显示全部楼层
谢谢分享
发表于 2015-3-22 11:38:24 | 显示全部楼层
谢谢分享!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 17:49 , Processed in 0.036899 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表