
Assertion-Based Design
By:Â Adam C. Krolnik, Harry D. Foster, David J. Lacey
Hardcover | 30 June 2003 | Edition Number 2
At a Glance
388 Pages
23.5 x 15.5 x 2.54
Hardcover
$139.75
or 4 interest-free payments of $34.94 with
 orÂShips in 5 to 7 business days
Industry Reviews
| Foreword | p. xv |
| Preface | p. xvii |
| Introduction | p. 1 |
| Property checking | p. 1 |
| Verification techniques | p. 3 |
| What is an assertion? | p. 4 |
| A historical perspective | p. 5 |
| Do assertions really work? | p. 7 |
| What are the benefits of assertions? | p. 8 |
| Why are assertions not used? | p. 12 |
| Phases of the design process | p. 15 |
| Ensuring requirements are satisfied | p. 18 |
| Techniques for ensuring consistency | p. 19 |
| Roles and ownership | p. 21 |
| Summary | p. 21 |
| Assertion Methodology | p. 23 |
| Design methodology | p. 23 |
| Project planning | p. 24 |
| Project documents | p. 25 |
| EDA and internal tools | p. 26 |
| RTL styles and conventions | p. 27 |
| Support infrastructure | p. 28 |
| Partner coordination | p. 29 |
| Design requirements | p. 30 |
| Design documents | p. 31 |
| Design reviews | p. 32 |
| Design validation | p. 32 |
| Assertion methodology for new designs | p. 33 |
| Key learnings | p. 34 |
| Best practices | p. 36 |
| Assertion density | p. 40 |
| Process for adding assertions | p. 42 |
| When not to add assertions | p. 43 |
| Assertion methodology for existing designs | p. 44 |
| Assertions and simulation | p. 45 |
| Assertions and formal verification | p. 48 |
| Formal verification framework | p. 48 |
| Formal methodology | p. 52 |
| ECC example | p. 58 |
| Summary | p. 60 |
| Specifying RTL Properties | p. 61 |
| Definitions and concepts | p. 62 |
| Property | p. 62 |
| Events | p. 65 |
| Property classification | p. 66 |
| Safety versus liveness | p. 66 |
| Constraint versus assertion | p. 67 |
| Declarative versus procedural | p. 67 |
| RTL assertion specification techniques | p. 68 |
| RTL invariant assertions | p. 69 |
| OVL invariant | p. 69 |
| PSL invariant | p. 72 |
| Declaring properties with PSL | p. 73 |
| RTL cycle related assertions | p. 74 |
| PSL and default clock declaration | p. 76 |
| Specifying sequences | p. 76 |
| Declaring sequences within PSL | p. 80 |
| Sequence operators within PSL | p. 80 |
| Checking sequences with the OVL | p. 81 |
| Specifying eventualities | p. 82 |
| OVL event bounded window checkers | p. 83 |
| PSL built-in functions | p. 83 |
| Pragma-based assertions | p. 84 |
| System Verilog assertions | p. 85 |
| Immediate assertions | p. 86 |
| Concurrent assertions | p. 88 |
| Sequence declaration | p. 92 |
| Sequence operations | p. 92 |
| Repetition operators | p. 93 |
| First match operator | p. 95 |
| Throughout operators | p. 96 |
| Dynamic variables within sequences | p. 96 |
| System functions | p. 98 |
| PCI property specification example | p. 98 |
| PCI overview | p. 99 |
| Summary | p. 105 |
| PLI-Based Assertions | p. 107 |
| Procedural assertions | p. 108 |
| A simple PLI assertion | p. 110 |
| Checktf routine | p. 110 |
| Calltf routine | p. 111 |
| Assertions within a simulation time slot | p. 112 |
| Nested PLI assertion problem | p. 115 |
| Assertions across simulation time slots | p. 116 |
| Controlling assertion evaluations by a clock | p. 117 |
| False firing across multiple time slots | p. 121 |
| PLI-based assertion library | p. 123 |
| Assert quiescent state | p. 124 |
| Summary | p. 129 |
| Functional Coverage | p. 131 |
| Verification approaches | p. 133 |
| Understanding coverage | p. 134 |
| Controllability versus observability | p. 134 |
| Types of traditional coverage metrics | p. 135 |
| What is functional coverage? | p. 137 |
| Building functional coverage models | p. 138 |
| Sources of functional coverage | p. 139 |
| Does functional coverage really work? | p. 141 |
| Benefits of functional coverage | p. 141 |
| Success stories | p. 142 |
| Why is functional coverage not used | p. 143 |
| Functional coverage methodology | p. 144 |
| Steps to functional coverage | p. 145 |
| Correct coverage density | p. 146 |
| Incorrect coverage density | p. 148 |
| Coverage analysis | p. 149 |
| Coverage data organization | p. 150 |
| Tracking functional coverage | p. 152 |
| Actions to take | p. 152 |
| Coverage best practices | p. 153 |
| Coverage-driven test generation | p. 157 |
| Specifying functional coverage | p. 158 |
| Embedded in the RTL | p. 158 |
| Functional coverage libraries | p. 159 |
| Assertion-based methods | p. 160 |
| Post processing | p. 162 |
| PLI logging and reporting | p. 162 |
| Simulation control | p. 162 |
| Functional coverage examples | p. 163 |
| AHB example | p. 166 |
| Summary | p. 169 |
| Assertion Patterns | p. 171 |
| Introduction to patterns | p. 171 |
| What are assertion patterns? | p. 172 |
| Elements of an assertion pattern | p. 173 |
| Signal patterns | p. 174 |
| X detection pattern | p. 175 |
| Valid range pattern | p. 177 |
| One-hot pattern | p. 180 |
| Gray-code pattern | p. 183 |
| Set patterns | p. 184 |
| Valid opcode pattern | p. 184 |
| Valid signal combination pattern | p. 186 |
| Invalid signal combination pattern | p. 189 |
| Conditional patterns | p. 190 |
| Conditional expression pattern | p. 190 |
| Sequence implication pattern | p. 193 |
| Past and future event patterns | p. 197 |
| Past event pattern | p. 197 |
| Future event pattern | p. 199 |
| Window patterns | p. 201 |
| Time-bounded window patterns | p. 202 |
| Event-bounded window patterns | p. 205 |
| Sequence patterns | p. 207 |
| Forbidden sequence patterns | p. 207 |
| Buffered data validity pattern | p. 208 |
| Tagged transaction pattern | p. 209 |
| Pipelined protocol pattern | p. 213 |
| Applying patterns to a real example | p. 216 |
| Intra-interface assertions | p. 218 |
| Inter-interface assertions | p. 222 |
| Summary | p. 224 |
| Assertion Cookbook | p. 225 |
| Queue--FIFO | p. 227 |
| Fixed depth pipeline register | p. 233 |
| Stack--LIFO | p. 237 |
| Caches--direct mapped | p. 240 |
| Cache--set associative | p. 246 |
| FSM | p. 251 |
| Counters | p. 255 |
| Multiplexers | p. 259 |
| Encoded multiplexer | p. 259 |
| Decoded (one-hot) multiplexer | p. 260 |
| Priority multiplexer | p. 262 |
| Complex multiplexer | p. 263 |
| Encoder | p. 264 |
| Priority encoder | p. 266 |
| Simple single request protocol | p. 267 |
| In-order multiple request protocol | p. 270 |
| Out-of-order request interface | p. 273 |
| State tables | p. 275 |
| Memories | p. 277 |
| Arbiter | p. 280 |
| Summary | p. 284 |
| Open Verification Library | p. 285 |
| OVL methodology advantages | p. 285 |
| OVL standard definition | p. 286 |
| OVL runtime macro controls | p. 287 |
| Customizing OVL messages | p. 288 |
| Firing OVL monitors | p. 290 |
| Using OVL assertion monitors | p. 291 |
| Checking invariant properties | p. 292 |
| Assert_always | p. 292 |
| Assert_never | p. 294 |
| Assert_zero_one_hot | p. 296 |
| Assert_range | p. 298 |
| Checking cycle relationships | p. 299 |
| Assert_next | p. 299 |
| Assert_frame | p. 301 |
| Assert_cycle_sequence | p. 304 |
| Checking event bounded windows | p. 306 |
| Assert_win_change | p. 306 |
| Assert_win_unchange | p. 308 |
| Checking time bounded windows | p. 310 |
| Assert_change | p. 310 |
| Assert_unchange | p. 312 |
| Checking state transitions | p. 314 |
| Assert_no_transition | p. 314 |
| Assert_transition | p. 315 |
| PSL Property Specification Language | p. 319 |
| Introduction to PSL | p. 319 |
| Operators and keywords | p. 320 |
| PSL Boolean layer | p. 323 |
| PSL Temporal Layer | p. 323 |
| Named SERE | p. 324 |
| SERE concatenation (;) operator | p. 324 |
| Consecutive repetition ([*]) operator | p. 324 |
| Nonconsecutive repetition ([=]) operator | p. 326 |
| Goto repetition ([- greater than sign]) operator | p. 327 |
| Sequence fusion (:) operator | p. 328 |
| Sequence non-length-matching (&) operator | p. 328 |
| Sequence length-matching (&&) operator | p. 328 |
| Sequence or ([vertical bar]) operator | p. 329 |
| Until* sequence operators | p. 329 |
| Within* sequence operators | p. 329 |
| Next operator | p. 330 |
| Eventually! operator | p. 330 |
| Before* operators | p. 331 |
| Abort operator | p. 331 |
| Endpoint declaration | p. 332 |
| Suffix implication operators | p. 332 |
| Logical implication operator | p. 333 |
| Always temporal operator | p. 333 |
| Never temporal operator | p. 333 |
| PSL properties | p. 334 |
| Property declaration | p. 334 |
| Named properties | p. 334 |
| Property clocking | p. 334 |
| Forall property replication | p. 335 |
| The verification layer | p. 335 |
| Assert directive | p. 336 |
| Assume directive | p. 336 |
| Cover directive | p. 336 |
| The modeling layer | p. 336 |
| Rose() and fell() functions | p. 337 |
| Prev() and next() functions | p. 337 |
| BNF | p. 337 |
| Verilog Extensions | p. 338 |
| Flavor macros | p. 339 |
| Syntax productions | p. 340 |
| System Verilog Assertions | p. 347 |
| Introduction to System Verilog | p. 347 |
| Operator and keywords | p. 347 |
| Sequence and property operations | p. 349 |
| Temporal delay | p. 349 |
| Consecutive repetition | p. 351 |
| Goto repetition | p. 351 |
| Nonconsecutive repetition | p. 352 |
| Sequence and | p. 353 |
| Sequence intersection | p. 354 |
| Sequence or | p. 355 |
| Boolean until (throughout) | p. 355 |
| Within sequence | p. 356 |
| Ended | p. 357 |
| Matched | p. 357 |
| First match | p. 358 |
| Implication | p. 358 |
| Sequences and properties | p. 359 |
| Assert and cover statements | p. 363 |
| Dynamic data within sequences | p. 364 |
| Templates | p. 365 |
| System Functions | p. 366 |
| System Tasks | p. 367 |
| BNF | p. 368 |
| Use of Assertions BNF | p. 369 |
| Assertion statements | p. 369 |
| Property and sequence declarations | p. 370 |
| Property construction | p. 370 |
| Sequence construction | p. 371 |
| Template declaration | p. 373 |
| Table of Contents provided by Ingram. All Rights Reserved. |
ISBN: 9781402074981
ISBN-10: 1402074980
Published: 30th June 2003
Format: Hardcover
Language: English
Number of Pages: 388
Audience: Professional and Scholarly
Publisher: Springer Nature B.V.
Country of Publication: GB
Edition Number: 2
Dimensions (cm): 23.5 x 15.5 x 2.54
Weight (kg): 0.79
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $79.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In

Encyclopedia of Electronic Components
Resistors, Capacitors, Inductors, Semiconductors, Electromagnetism
Paperback
RRP $47.75
$26.75
OFF

Make: More Electronics
Journey Deep into the World of Logic Chips, Amplifiers, Sensors, and Randomicity
Paperback
RRP $66.75
$34.99
OFF
This product is categorised by
- Non-FictionEngineering & TechnologyElectronics & Communications EngineeringElectronics EngineeringCircuits & Components
- Non-FictionComputing & I.T.Computer ScienceComputer Architecture & Logic Design
- Non-FictionEngineering & TechnologyEnergy Technology & EngineeringElectrical Engineering
- Non-FictionArts & EntertainmentHistory of Art & Design Styles
- Non-FictionComputing & I.T.Graphical & Digital Media Applications






















