Chapter 15: Property Specification and Evaluation Engine 371
15.1 Property Specification Hierarchy 372
15.2 Boolean Expressions 374
15.2.1 Operand Types 374
15.2.2 Operators 375
15.2.3 Sampling Events 375
15.2.4 Operand Value Sampling: Sampled Value vs. Current Value 375
15.2.5 Sampled Value Functions 376
15.3 Sequences 377
15.3.1 Sequence Declarations and Formal Arguments 379
15.3.2 Sequence Evaluation Model 381
15.3.2.1 Evaluation Sub-Threads and Multiple Matches 382
15.3.3 Sequence Operators 383
15.3.3.1 Sequence Delay Repeat Operators 383
15.3.3.2 Sequence Repeat Operators 384
15.3.3.3 Sequence AND Operator 386
15.3.3.4 Sequence OR Operator 387
15.3.3.5 Sequence INTERSECT Operator 387
15.3.3.6 Sequence THROUGHOUT Operator 388
15.3.3.7 Sequence WITHIN Operator 389
15.3.3.8 Sequence �gfirst_match�h Operator 389
15.4 SystemVerilog Properties 390
15.4.1 Property Declarations and Formal Arguments 390
15.4.2 Property Evaluation Model 391
15.4.2.1 Evaluation Threads: Properties and Sequences 393
15.4.2.2 Property Evaluation Start Points 393
15.4.2.3 Properties and Degenerate Sequences 395
15.4.3 Property Operators 396
15.4.3.1 Boolean Operators 397
15.4.3.2 Implication Operators 397
15.5 Base Operators vs. Derived Operators 400
15.6 Multi-Clock Sequences and Properties 401
15.6.1 Semantic Requirements 402
15.7 Sequence and Property Dictionary 404
15.7.1 Sequence Dictionary 404
15.7.1.1 Sequences Based on One Condition 405
15.7.1.2 Sequences Based on Two Conditions 406
15.7.1.3 Sequences Based on Multi-Cycle Behaviors 407
15.7.2 Property Dictionary 408
15.7.2.1 Properties using a Condition as a Qualifying Condition 409
15.7.2.2 Properties using a Multi-Cycle Behavior as a Qualifier 409
15.7.2.3 Properties Used for Debugging Sequences 410
Chapter 16: Assertion-Based Verification (ABV) 411
16.1 Assertion Definition Flow 412
16.1.1 Participants and Roles 412
16.1.2 Assertions and Project Phases 413
16.1.2.1 Architectural Design 413
16.1.2.2 Block Design and Verification 413
16.1.2.3 Cluster/Chip Integration and Verification 414
16.1.2.4 System Integration and Verification 415
16.2 Assertions vs. Assumptions 415
16.3 SystemVerilog Assertions 417
16.3.1 Assertion Activation 417
16.3.1.1 Immediate Assertions 417
16.3.1.2 Concurrent Assertions 418
16.3.1.2.1 Procedural Assertions 419
16.3.2 Severity System Tasks 421
16.3.3 Assertion Control System Tasks 421
16.4 Capturing Assertion Requirements 422
16.4.1 Step 1: Consider Verification Objectives 422
16.4.2 Step 2: Partition the Problem 423
16.4.2.1 Interface 423
16.4.2.1.1 Configuration 424
16.4.2.1.2 DUV Input Pins 424
16.4.2.1.3 Protocol 425
16.4.2.1.4 Register Interface 426
16.4.2.2 Core Function 426
16.4.2.3 Design Outputs 426
16.4.3 Step 3: Identify Requirements for Each Partition 427
16.4.4 Step 4: Map Requirements to Assertion Forms 427
16.4.5 Step 5: Define Clocking and Reset/Interrupt Conditions 428
16.4.6 Step 6: Add the Assertions to the Design 428
16.5 Assertion-Based Verification IPs 429
16.5.1 Assertion Libraries 429
16.5.1.1 Assertion Library Component Architecture 430
16.5.1.2 Using Assertion Library Components 431
16.5.2 Assertion-Based Protocol Checkers 431
16.5.2.1 Assertion-Based Protocol Checker Architecture 432