وبلاگ بلیان

IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001) : IEEE Standard for Verilog Hardware Description Language

معرفی کتاب «IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001) : IEEE Standard for Verilog Hardware Description Language» نوشتهٔ IEEE Computer Society Design Automation Standards Committee; Institute of Electrical and Electronics Engineers، منتشرشده توسط نشر IEEE Computer Society در سال 2005. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.

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 19.3.1 `define......Page 380 19.4 `ifdef, `else, `elsif, `endif, `ifndef......Page 382 19.6 `resetall......Page 386 19.7 `line......Page 387 19.8 `timescale......Page 388 19.10 `pragma......Page 390 19.11 `begin_keywords, `end_keywords......Page 391 20.1 PLI purpose and history......Page 396 20.5 User-supplied PLI applications......Page 397 20.8 PLI include files......Page 398 21. PLI TF and ACC interface mechanism (deprecated)......Page 399 22. Using ACC routines (deprecated)......Page 400 23. ACC routine definitions (deprecated)......Page 401 24. Using TF routines (deprecated)......Page 402 25. TF routine definitions (deprecated)......Page 403 26.1.2 compiletf VPI application routine......Page 404 26.2.1 VPI callbacks......Page 405 26.2.4 Function availability......Page 406 26.3 VPI object classifications......Page 407 26.3.1 Accessing object relationships and properties......Page 408 26.3.2 Object type properties......Page 409 26.3.4 Delays and values......Page 410 26.4 List of VPI routines by functional category......Page 411 26.5 Key to data model diagrams......Page 413 26.5.2 Diagram key for accessing properties......Page 414 26.5.3 Diagram key for traversing relationships......Page 415 26.6 Object data model diagrams......Page 416 26.6.1 Module......Page 417 26.6.2 Instance arrays......Page 418 26.6.4 IO declaration......Page 419 26.6.5 Ports......Page 420 26.6.6 Nets and net arrays......Page 421 26.6.7 Regs and reg arrays......Page 423 26.6.8 Variables......Page 425 26.6.10 Object range......Page 426 26.6.11 Named event......Page 427 26.6.12 Parameter, specparam......Page 428 26.6.13 Primitive, prim term......Page 429 26.6.14 UDP......Page 430 26.6.16 Intermodule path......Page 431 26.6.18 Task, function declaration......Page 432 26.6.19 Task/function call......Page 433 26.6.20 Frames......Page 434 26.6.22 Net drivers and loads......Page 435 26.6.24 Continuous assignment......Page 436 26.6.25 Simple expressions......Page 437 26.6.26 Expressions......Page 438 26.6.27 Process, block, statement, event statement......Page 439 26.6.30 Event control......Page 440 26.6.34 Forever......Page 441 26.6.36 Case......Page 442 26.6.38 Disable......Page 443 26.6.41 Active time format......Page 444 26.6.42 Attributes......Page 445 26.6.43 Iterator......Page 446 26.6.44 Generates......Page 447 27.1 vpi_chk_error()......Page 448 27.3 vpi_control()......Page 450 27.5 vpi_free_object()......Page 451 27.7 vpi_get_cb_info()......Page 452 27.8 vpi_get_data()......Page 453 27.9 vpi_get_delays()......Page 454 27.10 vpi_get_str()......Page 456 27.11 vpi_get_systf_info()......Page 457 27.12 vpi_get_time()......Page 458 27.14 vpi_get_value()......Page 459 27.15 vpi_get_vlog_info()......Page 465 27.16 vpi_handle()......Page 466 27.17 vpi_handle_by_index()......Page 467 27.19 vpi_handle_by_name()......Page 468 27.21 vpi_iterate()......Page 469 27.22 vpi_mcd_close()......Page 470 27.24 vpi_mcd_name()......Page 471 27.25 vpi_mcd_open()......Page 472 27.26 vpi_mcd_printf()......Page 473 27.28 vpi_printf()......Page 474 27.29 vpi_put_data()......Page 475 27.30 vpi_put_delays()......Page 477 27.32 vpi_put_value()......Page 480 27.33 vpi_register_cb()......Page 483 27.33.1 Simulation event callbacks......Page 484 27.33.2 Simulation time callbacks......Page 488 27.33.3 Simulator action or feature callbacks......Page 490 27.34 vpi_register_systf()......Page 491 27.34.1 System task/function callbacks......Page 492 27.34.2 Initializing VPI system task/function callbacks......Page 493 27.34.3 Registering multiple system tasks and functions......Page 494 27.36 vpi_scan()......Page 495 27.37 vpi_vprintf()......Page 496 28.2 Processing protected envelopes......Page 497 28.2.1 Encryption......Page 498 28.3 Protect pragma directives......Page 499 28.4.3 begin_protected......Page 501 28.4.5 author......Page 502 28.4.8 encrypt_agent_info......Page 503 28.4.9 encoding......Page 504 28.4.11 data_method......Page 505 28.4.12 data_keyname......Page 506 28.4.14 data_decrypt_key......Page 507 28.4.17 digest_key_method......Page 508 28.4.19 digest_public_key......Page 509 28.4.21 digest_method......Page 510 28.4.22 digest_block......Page 511 28.4.25 key_keyname......Page 512 28.4.27 key_block......Page 513 28.4.29 runtime_license......Page 514 28.4.31 reset......Page 515 28.4.32 viewport......Page 516 A.1.3 Module parameters and ports......Page 517 A.1.4 Module items......Page 518 A.2.1 Declaration types......Page 519 A.2.2 Declaration data types......Page 520 A.2.4 Declaration assignments......Page 521 A.2.7 Task declarations......Page 522 A.3.1 Primitive instantiation and instances......Page 523 A.3.4 Primitive gate and switch types......Page 524 A.4.2 Generate construct......Page 525 A.5.3 UDP body......Page 526 A.6.3 Parallel and sequential blocks......Page 527 A.6.5 Timing control statements......Page 528 A.6.9 Task enable statements......Page 529 A.7.4 Specify path delays......Page 530 A.7.5 System timing checks......Page 532 A.8.3 Expressions......Page 534 A.8.4 Primaries......Page 535 A.8.7 Numbers......Page 536 A.9.1 Attributes......Page 537 A.9.3 Identifiers......Page 538 A.9.4 White space......Page 539 Annex B (normative) List of keywords......Page 540 C.1 $countdrivers......Page 541 C.2 $getpattern......Page 542 C.5 $list......Page 543 C.7 $reset, $reset_count, and $reset_value......Page 544 C.8 $save, $restart, and $incsave......Page 545 C.12 $showvars......Page 546 C.13 $sreadmemb and $sreadmemh......Page 547 D.2 `default_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
دانلود کتاب IEEE Std 1364-2005 (Revision of IEEE Std 1364-2001) : IEEE Standard for Verilog Hardware Description Language