๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

IEEE Standard for Verilog ยฎ Hardware Description Language

โœ Scribed by coll.


Publisher
IEEE Computer Society
Year
2005
Tongue
English
Leaves
590
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Table of Contents


IEEE Standard for Verilogยฎ Hardware Description Language......Page 3
Introduction......Page 5
Participants......Page 6
Contents......Page 9
List of Figures......Page 23
List of Tables......Page 25
List of Syntax Boxes......Page 28
1.2 Conventions used in this standard......Page 31
1.3 Syntactic description......Page 32
1.5 Contents of this standard......Page 33
1.9 Prerequisites......Page 35
2. Normative references......Page 36
3.4 Operators......Page 38
3.5 Numbers......Page 39
3.5.1 Integer constants......Page 40
3.6 Strings......Page 42
3.6.3 Special characters in strings......Page 43
3.7.1 Escaped identifiers......Page 44
3.7.4 Compiler directives......Page 45
3.8.1 Examples......Page 46
3.8.2 Syntax......Page 48
4.2.1 Net declarations......Page 51
4.2.2 Variable declarations......Page 53
4.3.2 Vector net accessibility......Page 54
4.5 Implicit declarations......Page 55
4.6.1 Wire and tri nets......Page 56
4.6.2 Wired nets......Page 57
4.6.3 Trireg net......Page 58
4.6.5 Unresolved nets......Page 61
4.8 Integers, reals, times, and realtimes......Page 62
4.8.2 Conversion......Page 63
4.9.2 reg and variable arrays......Page 64
4.10 Parameters......Page 65
4.10.1 Module parameters......Page 66
4.10.2 Local parameters (localparam)......Page 67
4.10.3 Specify parameters......Page 68
4.11 Name spaces......Page 69
5.1 Operators......Page 71
5.1.1 Operators with real operands......Page 72
5.1.2 Operator precedence......Page 73
5.1.3 Using integer numbers in expressions......Page 74
5.1.5 Arithmetic operators......Page 75
5.1.6 Arithmetic expressions with regs and integers......Page 77
5.1.7 Relational operators......Page 78
5.1.9 Logical operators......Page 79
5.1.10 Bitwise operators......Page 80
5.1.11 Reduction operators......Page 81
5.1.13 Conditional operator......Page 83
5.1.14 Concatenations......Page 84
5.2 Operands......Page 85
5.2.1 Vector bit-select and part-select addressing......Page 86
5.2.2 Array and memory addressing......Page 87
5.2.3 Strings......Page 88
5.3 Minimum, typical, and maximum delay expressions......Page 91
5.4.1 Rules for expression bit lengths......Page 92
5.4.2 Example of expression bit-length problem......Page 93
5.5 Signed expressions......Page 94
5.5.2 Steps for evaluating an expression......Page 95
5.6 Assignments and truncation......Page 96
6.1 Continuous assignments......Page 98
6.1.2 The continuous assignment statement......Page 99
6.1.4 Strength......Page 101
6.2.1 Variable declaration assignment......Page 102
6.2.2 Variable declaration syntax......Page 103
7.1 Gate and switch declaration syntax......Page 104
7.1.2 The drive strength specification......Page 106
7.1.5 The range specification......Page 107
7.1.6 Primitive instance connection list......Page 108
7.2 and, nand, nor, or, xor, and xnor gates......Page 110
7.3 buf and not gates......Page 111
7.4 bufif1, bufif0, notif1, and notif0 gates......Page 112
7.5 MOS switches......Page 113
7.6 Bidirectional pass switches......Page 114
7.7 CMOS switches......Page 115
7.9 Logic strength modeling......Page 116
7.10.1 Combined signals of unambiguous strength......Page 118
7.10.2 Ambiguous strengths: sources and combinations......Page 119
7.10.3 Ambiguous strength signals and unambiguous signals......Page 124
7.10.4 Wired logic net types......Page 128
7.13.2 trireg strength......Page 130
7.14 Gate and net delays......Page 131
7.14.1 min:typ:max delays......Page 132
7.14.2 trireg net charge decay......Page 133
8.1 UDP definition......Page 135
8.1.4 UDP state table......Page 137
8.1.6 Summary of symbols......Page 138
8.2 Combinational UDPs......Page 139
8.4 Edge-sensitive sequential UDPs......Page 140
8.5 Sequential UDP initialization......Page 141
8.6 UDP instances......Page 143
8.7 Mixing level-sensitive and edge-sensitive descriptions......Page 144
8.8 Level-sensitive dominance......Page 145
9.1 Behavioral model overview......Page 146
9.2.1 Blocking procedural assignments......Page 147
9.2.2 The nonblocking procedural assignment......Page 148
9.3 Procedural continuous assignments......Page 152
9.3.1 The assign and deassign procedural statements......Page 153
9.3.2 The force and release procedural statements......Page 154
9.4 Conditional statement......Page 155
9.4.1 If-else-if construct......Page 156
9.5 Case statement......Page 157
9.5.1 Case statement with do-not-cares......Page 158
9.5.2 Constant expression in case statement......Page 159
9.6 Looping statements......Page 160
9.7 Procedural timing controls......Page 161
9.7.2 Event control......Page 162
9.7.3 Named events......Page 163
9.7.5 Implicit event_expression list......Page 164
9.7.7 Intra-assignment timing controls......Page 166
9.8 Block statements......Page 169
9.8.1 Sequential blocks......Page 170
9.8.3 Block names......Page 171
9.8.4 Start and finish times......Page 172
9.9.1 Initial construct......Page 173
9.9.2 Always construct......Page 174
10.2 Tasks and task enabling......Page 175
10.2.1 Task declarations......Page 176
10.2.2 Task enabling and argument passing......Page 177
10.2.3 Task memory usage and concurrent activation......Page 179
10.3 Disabling of named blocks and tasks......Page 180
10.4.1 Function declarations......Page 182
10.4.2 Returning a value from a function......Page 184
10.4.4 Function rules......Page 185
10.4.5 Use of constant functions......Page 186
11.3 The stratified event queue......Page 188
11.4 Verilog simulation reference model......Page 189
11.5 Race conditions......Page 190
11.6.5 Switch (transistor) processing......Page 191
11.6.7 Functions and tasks......Page 192
12.1 Modules......Page 193
12.1.2 Module instantiation......Page 195
12.2 Overriding module parameter values......Page 197
12.2.1 defparam statement......Page 198
12.2.2 Module instance parameter value assignment......Page 200
12.3.1 Port definition......Page 203
12.3.3 Port declarations......Page 204
12.3.5 Connecting module instance ports by ordered list......Page 206
12.3.6 Connecting module instance ports by name......Page 207
12.3.8 Connecting dissimilar ports......Page 208
12.3.10 Net types resulting from dissimilar port connections......Page 209
12.4 Generate constructs......Page 211
12.4.1 Loop generate constructs......Page 213
12.4.2 Conditional generate constructs......Page 216
12.4.3 External names for unnamed generate blocks......Page 220
12.5 Hierarchical names......Page 221
12.6 Upwards name referencing......Page 223
12.7 Scope rules......Page 225
12.8.2 Early resolution of hierarchical names......Page 227
13.1.1 Library notation......Page 229
13.2.1 Specifying libraries-the library map file......Page 230
13.3.1 Basic configuration syntax......Page 232
13.4.1 Precompiling in a single-pass use model......Page 235
13.5 Configuration examples......Page 236
13.5.3 Using cell clause......Page 237
13.6 Displaying library binding information......Page 238
13.7.3 Resolving multiple path specifications......Page 239
14.1 Specify block declaration......Page 241
14.2 Module path declarations......Page 242
14.2.2 Simple module paths......Page 243
14.2.3 Edge-sensitive paths......Page 244
14.2.4 State-dependent paths......Page 245
14.2.5 Full connection and parallel connection paths......Page 249
14.2.7 Module path polarity......Page 250
14.3.1 Specifying transition delays on module paths......Page 252
14.3.2 Specifying x transition delays......Page 254
14.4 Mixing module path delays and distributed delays......Page 255
14.5 Driving wired logic......Page 256
14.6 Detailed control of pulse filtering behavior......Page 258
14.6.1 Specify block control of pulse limit values......Page 259
14.6.4 Detailed pulse control capabilities......Page 260
15.1 Overview......Page 267
15.2 Timing checks using a stability window......Page 270
15.2.1 $setup......Page 271
15.2.2 $hold......Page 272
15.2.3 $setuphold......Page 273
15.2.4 $removal......Page 275
15.2.5 $recovery......Page 276
15.2.6 $recrem......Page 277
15.3 Timing checks for clock and control signals......Page 278
15.3.1 $skew......Page 279
15.3.2 $timeskew......Page 280
15.3.3 $fullskew......Page 282
15.3.4 $width......Page 285
15.3.5 $period......Page 286
15.3.6 $nochange......Page 287
15.4 Edge-control specifiers......Page 288
15.5 Notifiers: user-defined responses to timing violations......Page 289
15.5.1 Requirements for accurate simulation......Page 291
15.5.2 Conditions in negative timing checks......Page 293
15.5.4 Option behavior......Page 294
15.6 Enabling timing checks with conditioned events......Page 295
15.8 Negative timing checks......Page 296
16.2.1 Mapping of SDF delay constructs to Verilog declarations......Page 299
16.2.2 Mapping of SDF timing check constructs to Verilog......Page 301
16.2.3 SDF annotation of specparams......Page 302
16.2.4 SDF annotation of interconnect delays......Page 303
16.3 Multiple annotations......Page 304
16.5 Pulse limit annotation......Page 305
16.6 SDF to Verilog delay value mapping......Page 306
17. System tasks and functions......Page 307
17.1.1 The display and write tasks......Page 308
17.1.2 Strobed monitoring......Page 315
17.2 File input-output system tasks and functions......Page 316
17.2.1 Opening and closing files......Page 317
17.2.2 File output system tasks......Page 318
17.2.3 Formatting data to a string......Page 319
17.2.4 Reading data from a file......Page 320
17.2.5 File positioning......Page 324
17.2.8 Detecting EOF......Page 325
17.2.9 Loading memory data from a file......Page 326
17.2.10 Loading timing data from an SDF file......Page 327
17.3 Timescale system tasks......Page 328
17.3.1 $printtimescale......Page 329
17.3.2 $timeformat......Page 330
17.4.2 $stop......Page 332
17.5.1 Array types......Page 333
17.5.4 Logic array personality formats......Page 334
17.6.3 $q_remove......Page 337
17.6.6 Status codes......Page 338
17.7.2 $stime......Page 339
17.8 Conversion functions......Page 340
17.9.1 $random function......Page 341
17.9.2 $dist_ functions......Page 342
17.9.3 Algorithm for probabilistic distribution functions......Page 343
17.10.1 $test$plusargs (string)......Page 350
17.10.2 $value$plusargs (user_string, variable)......Page 351
17.11.2 Real math functions......Page 353
18.1.1 Specifying name of dump file ($dumpfile)......Page 355
18.1.2 Specifying variables to be dumped ($dumpvars)......Page 356
18.1.3 Stopping and resuming the dump ($dumpoff/$dumpon)......Page 357
18.1.6 Reading dump file during simulation ($dumpflush)......Page 358
18.2 Format of four-state VCD file......Page 359
18.2.1 Syntax of four-state VCD file......Page 360
18.2.2 Formats of variable values......Page 361
18.2.3 Description of keyword commands......Page 362
18.2.4 Four-state VCD file format example......Page 367
18.3.1 Specifying dump file name and ports to be dumped ($dumpports)......Page 368
18.3.2 Stopping and resuming the dump ($dumpportsoff/$dumpportson)......Page 369
18.3.4 Limiting size of dump file ($dumpportslimit)......Page 370
18.3.7 General rules for extended VCD system tasks......Page 371
18.4.1 Syntax of extended VCD file......Page 372
18.4.2 Extended VCD node information......Page 374
18.4.3 Value changes......Page 376
18.4.4 Extended VCD file format example......Page 377
19.2 default_nettype......Page 379<br>19.3.1define......Page 380
19.4 ifdef,else, elsif,endif, ifndef......Page 382<br>19.6resetall......Page 386
19.7 line......Page 387<br>19.8timescale......Page 388
19.10 pragma......Page 390<br>19.11begin_keywords, end_keywords......Page 391<br>20.1 PLI purpose and history......Page 396<br>20.5 User-supplied PLI applications......Page 397<br>20.8 PLI include files......Page 398<br>21. PLI TF and ACC interface mechanism (deprecated)......Page 399<br>22. Using ACC routines (deprecated)......Page 400<br>23. ACC routine definitions (deprecated)......Page 401<br>24. Using TF routines (deprecated)......Page 402<br>25. TF routine definitions (deprecated)......Page 403<br>26.1.2 compiletf VPI application routine......Page 404<br>26.2.1 VPI callbacks......Page 405<br>26.2.4 Function availability......Page 406<br>26.3 VPI object classifications......Page 407<br>26.3.1 Accessing object relationships and properties......Page 408<br>26.3.2 Object type properties......Page 409<br>26.3.4 Delays and values......Page 410<br>26.4 List of VPI routines by functional category......Page 411<br>26.5 Key to data model diagrams......Page 413<br>26.5.2 Diagram key for accessing properties......Page 414<br>26.5.3 Diagram key for traversing relationships......Page 415<br>26.6 Object data model diagrams......Page 416<br>26.6.1 Module......Page 417<br>26.6.2 Instance arrays......Page 418<br>26.6.4 IO declaration......Page 419<br>26.6.5 Ports......Page 420<br>26.6.6 Nets and net arrays......Page 421<br>26.6.7 Regs and reg arrays......Page 423<br>26.6.8 Variables......Page 425<br>26.6.10 Object range......Page 426<br>26.6.11 Named event......Page 427<br>26.6.12 Parameter, specparam......Page 428<br>26.6.13 Primitive, prim term......Page 429<br>26.6.14 UDP......Page 430<br>26.6.16 Intermodule path......Page 431<br>26.6.18 Task, function declaration......Page 432<br>26.6.19 Task/function call......Page 433<br>26.6.20 Frames......Page 434<br>26.6.22 Net drivers and loads......Page 435<br>26.6.24 Continuous assignment......Page 436<br>26.6.25 Simple expressions......Page 437<br>26.6.26 Expressions......Page 438<br>26.6.27 Process, block, statement, event statement......Page 439<br>26.6.30 Event control......Page 440<br>26.6.34 Forever......Page 441<br>26.6.36 Case......Page 442<br>26.6.38 Disable......Page 443<br>26.6.41 Active time format......Page 444<br>26.6.42 Attributes......Page 445<br>26.6.43 Iterator......Page 446<br>26.6.44 Generates......Page 447<br>27.1 vpi_chk_error()......Page 448<br>27.3 vpi_control()......Page 450<br>27.5 vpi_free_object()......Page 451<br>27.7 vpi_get_cb_info()......Page 452<br>27.8 vpi_get_data()......Page 453<br>27.9 vpi_get_delays()......Page 454<br>27.10 vpi_get_str()......Page 456<br>27.11 vpi_get_systf_info()......Page 457<br>27.12 vpi_get_time()......Page 458<br>27.14 vpi_get_value()......Page 459<br>27.15 vpi_get_vlog_info()......Page 465<br>27.16 vpi_handle()......Page 466<br>27.17 vpi_handle_by_index()......Page 467<br>27.19 vpi_handle_by_name()......Page 468<br>27.21 vpi_iterate()......Page 469<br>27.22 vpi_mcd_close()......Page 470<br>27.24 vpi_mcd_name()......Page 471<br>27.25 vpi_mcd_open()......Page 472<br>27.26 vpi_mcd_printf()......Page 473<br>27.28 vpi_printf()......Page 474<br>27.29 vpi_put_data()......Page 475<br>27.30 vpi_put_delays()......Page 477<br>27.32 vpi_put_value()......Page 480<br>27.33 vpi_register_cb()......Page 483<br>27.33.1 Simulation event callbacks......Page 484<br>27.33.2 Simulation time callbacks......Page 488<br>27.33.3 Simulator action or feature callbacks......Page 490<br>27.34 vpi_register_systf()......Page 491<br>27.34.1 System task/function callbacks......Page 492<br>27.34.2 Initializing VPI system task/function callbacks......Page 493<br>27.34.3 Registering multiple system tasks and functions......Page 494<br>27.36 vpi_scan()......Page 495<br>27.37 vpi_vprintf()......Page 496<br>28.2 Processing protected envelopes......Page 497<br>28.2.1 Encryption......Page 498<br>28.3 Protect pragma directives......Page 499<br>28.4.3 begin_protected......Page 501<br>28.4.5 author......Page 502<br>28.4.8 encrypt_agent_info......Page 503<br>28.4.9 encoding......Page 504<br>28.4.11 data_method......Page 505<br>28.4.12 data_keyname......Page 506<br>28.4.14 data_decrypt_key......Page 507<br>28.4.17 digest_key_method......Page 508<br>28.4.19 digest_public_key......Page 509<br>28.4.21 digest_method......Page 510<br>28.4.22 digest_block......Page 511<br>28.4.25 key_keyname......Page 512<br>28.4.27 key_block......Page 513<br>28.4.29 runtime_license......Page 514<br>28.4.31 reset......Page 515<br>28.4.32 viewport......Page 516<br>A.1.3 Module parameters and ports......Page 517<br>A.1.4 Module items......Page 518<br>A.2.1 Declaration types......Page 519<br>A.2.2 Declaration data types......Page 520<br>A.2.4 Declaration assignments......Page 521<br>A.2.7 Task declarations......Page 522<br>A.3.1 Primitive instantiation and instances......Page 523<br>A.3.4 Primitive gate and switch types......Page 524<br>A.4.2 Generate construct......Page 525<br>A.5.3 UDP body......Page 526<br>A.6.3 Parallel and sequential blocks......Page 527<br>A.6.5 Timing control statements......Page 528<br>A.6.9 Task enable statements......Page 529<br>A.7.4 Specify path delays......Page 530<br>A.7.5 System timing checks......Page 532<br>A.8.3 Expressions......Page 534<br>A.8.4 Primaries......Page 535<br>A.8.7 Numbers......Page 536<br>A.9.1 Attributes......Page 537<br>A.9.3 Identifiers......Page 538<br>A.9.4 White space......Page 539<br>Annex B (normative) List of keywords......Page 540<br>C.1 $countdrivers......Page 541<br>C.2 $getpattern......Page 542<br>C.5 $list......Page 543<br>C.7 $reset, $reset_count, and $reset_value......Page 544<br>C.8 $save, $restart, and $incsave......Page 545<br>C.12 $showvars......Page 546<br>C.13 $sreadmemb and $sreadmemh......Page 547<br>D.2default_trireg_strength......Page 548
D.6 `delay_mode_zero......Page 549
Annex E (normative) acc_user.h (deprecated)......Page 550
Annex F (normative) veriuser.h (deprecated)......Page 551
Annex G (normative) vpi_user.h......Page 552
H.1.1 Encryption input......Page 567
H.2.1 Encryption input......Page 568
H.3 Digital envelopes......Page 569
H.3.1 Encryption input......Page 570
H.3.2 Encryption output......Page 571
Annex I (informative) Bibliography......Page 572
Index......Page 573


๐Ÿ“œ SIMILAR VOLUMES


1364-2001 IEEE Standard Verilog Hardware
๐Ÿ“‚ Library ๐Ÿ“… 2001 ๐Ÿ› IEEE ๐ŸŒ English

Abstract: The VerilogR Hardware Description Language (HDL) is defined. Verilog HDL is a formal notation intended for use in all phases of the creation of electronic systems. Because it is both machine readable and human readable, it supports the development, verification, synthesis, and testing of h

IEEE Std 1364-1995: IEEE Standard Hardwa
๐Ÿ“‚ Library ๐Ÿ“… 1996 ๐Ÿ› IEEE ๐ŸŒ English

The VerilogR Hardware Description Language (HDL) is defined. Verilog HDL is a formal notation intended for use in all phases of the creation of electronic systems. Because it is both machine readable and human readable, it supports the development, verification, synthesis, and testing of hardware de