OpenAccess™ Release 2.2 Standard API Tutorial

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

It is widely accepted that integrated circuit (IC) design productivity is a limiting factor to realizing the available transistor capacity of ICs today. The massive increase in data and need for more accurate modeling due to the effects of shrinking feature sizes make it unreasonable to continue to transfer a design between sequential applications using ASCII interchange formats. Cycle times in critical design loops that depend on sequential processing using ASCII files for data transfer suffer significant file translation overhead as those files grow with transistor count. A logically central repository for design information makes it possible to overcome key failings of traditional Electronic Design Automation (EDA) environments. A common information model enables great efficiencies by eliminating data translation among design and analysis tools. IC design customers can improve their choice among tools while realizing more effective and better performing design systems when those tools utilize standard APIs for data access and manipulation. Software integrators of Computer- Aided Design (CAD) systems for ICs can focus on methodology and functionality rather than the incompatibilities in communciation between design tools.

Author(s): David Mallis
Edition: 6
Publisher: OpenAccess™ Release 2.2 Standard API Tutorial
Year: 2007

Language: English
Pages: 756

OpenAccess™ Release 2.2 Standard API Tutorial......Page 1
Copyright......Page 2
Credits......Page 3
About Si2......Page 4
Si2 OA Tutorial Overview......Page 5
Instruction Frame (online version only)......Page 6
Objectives......Page 7
Glossary......Page 8
Figure Animations......Page 9
Audience......Page 10
Class Identifiers......Page 11
Common Word Reuse......Page 12
Reference Implementation Specifics......Page 13
Required Environment for Labs......Page 14
Editing Code......Page 15
Debugging......Page 16
Labs Graphics Utility: grafig......Page 17
Acknowledgements......Page 19
Contents......Page 21
Index of Figures......Page 39
Index of Tables......Page 47
Index of Exercises and Labs......Page 53
1.1 History......Page 59
1.1.1 CFI Design Representation (DR)......Page 60
1.1.2 CHDStd......Page 61
1.2 The OpenAccess Concept......Page 62
1.3 The Interface Standard......Page 63
1.4 The Reference Implementation......Page 65
1.4.1.1 Design Portability......Page 66
1.5 The OpenEvolution Process......Page 67
1.5.2.2 Change Management......Page 68
1.5.3 Community Contributions......Page 69
1.6 Getting Help with OpenAccess......Page 70
1.6.1 OpenEDA.Si2.org: OpenAccess Central......Page 71
2.1.1 API Reference......Page 75
2.1.1.3 Class Reference Pages......Page 76
2.1.2 Information Model......Page 78
2.1.3 PlugIn APIs......Page 79
2.1.4 Standard Mappings......Page 80
2.3 Using the Documentation......Page 81
3.1.1 Extension Languages......Page 83
3.2 Implementation Architecture......Page 84
3.4 Notation......Page 85
3.4.3 Functions......Page 86
3.5 API versus Application Responsibility......Page 87
3.6 Use Case Flexibility......Page 88
3.7.4 Object Handle Validation......Page 89
3.8 Deferring Enforcement to Application......Page 92
4 API Style......Page 93
4.1 Object-Oriented Design......Page 94
4.1.3 Strong Typing......Page 95
4.1.5 Data/Information Hiding......Page 97
4.1.6.2 Operators......Page 98
4.2 Platform Independence......Page 100
4.3 Error Handling......Page 102
4.3.1 Differentiating Exceptions......Page 103
4.3.1.1 Multiple try/catch Blocks......Page 104
4.3.1.2 Exception Message Id......Page 105
4.4 Static Methods......Page 106
4.5 Templates......Page 107
4.6 Aggregated Data Structures......Page 108
4.6.1.1.1 Iter......Page 109
4.6.2.3 Lookup Tables......Page 111
5 API Classes......Page 113
5.1.1 Characteristics......Page 114
5.1.2 API Examples......Page 115
5.1.3 Automatic Classes......Page 116
5.2 Utility Classes......Page 117
5.2.1.1 Stack......Page 118
5.2.1.2 Heap......Page 119
5.2.2 Data Passed by Reference......Page 120
5.2.3.2 Overloaded, Attribute-Named Methods......Page 122
5.2.4 Utility Object Relationships......Page 123
5.2.5 enum Encapsulations......Page 124
5.2.6.2 Constructors......Page 125
5.2.6.3 Array Elements......Page 126
5.2.6.4 Array Manipulation......Page 127
5.2.6.5.1 Datatypes......Page 128
5.2.6.5.2 1DLookupTbl......Page 129
5.2.6.5.3 2DLookupTbl......Page 130
5.2.6.5.4 Calculated Values......Page 131
5.3 Interface Classes......Page 133
6.1.1 Headers......Page 137
6.1.2 Initialization Calls......Page 139
6.1.3 Link Libraries......Page 140
6.1.4 Version Information......Page 141
6.2 Handling Exceptions......Page 143
6.3.1 Heap Memory Allocation......Page 144
6.3.2.2 Execution Timer......Page 145
6.3.3 Math Library Functions......Page 146
6.3.4.1 oaFile, oaDir......Page 148
6.4 Debugging......Page 149
6.5 Virtual Memory Management......Page 150
7.1 Flow Construction......Page 153
7.2 Database Implementations......Page 154
7.3 Design Portability......Page 155
7.4 Interfacing Applications......Page 157
7.5.2 Dynamic Linking or Loading......Page 161
7.6 Migration Strategies......Page 163
7.6.1 Plug-n-Play......Page 164
8 Names......Page 167
8.1 Database-Managed Names......Page 168
8.1.1 NameSpaces......Page 169
8.1.2 Name Objects......Page 170
8.2.1 Case Sensitivity......Page 171
8.2.4 Hierarchy Semantics......Page 172
8.2.5 Multi-Bit Semantics......Page 173
8.2.6 NameSpace Differences......Page 174
8.3 Application Responsibilies......Page 175
8.4.1 Rules......Page 176
8.4.2 Name Mapping Limitations......Page 177
8.5.1.1 Normal Names......Page 178
8.5.2.2 Escaped Names......Page 179
8.5.3 Cdba......Page 180
8.5.3.2 Bundle names......Page 181
8.5.3.4 Suffix Repeat Operators......Page 182
8.5.5 LEF/DEF......Page 183
8.5.6 UNIX......Page 184
8.5.8 SPEF......Page 185
8.5.11 Programmable NameSpaces......Page 186
8.5.12 NameSpace Mapping Examples......Page 187
8.6.1 Creating Mapped Names......Page 188
8.6.3 Exceptions......Page 189
8.7 Converting Among Names......Page 190
8.8 Automatically Assigned Names......Page 193
8.9.2.2 setName()......Page 194
9.1 Database Types......Page 197
9.4 DMObject......Page 198
9.5 Lib......Page 200
9.5.1 Attributes......Page 201
9.5.2 Relationships......Page 202
9.6.1 Relationships......Page 203
9.6.2.1 Name......Page 204
9.7 LibAccess......Page 205
9.7.1 Multiple Access......Page 206
9.7.3 Handle Access......Page 207
9.9 View......Page 208
9.11 Mapping Lib Name to Path......Page 209
9.11.1 LibDefList......Page 210
9.11.2.1 Default Path......Page 213
9.11.2.2.2 Statements......Page 214
9.11.2.2.3 Filename and Directory Rules......Page 215
9.11.2.2.5 Errors......Page 216
9.12 DM PlugIns......Page 219
9.12.1 Filesystem Name Collisions......Page 220
9.12.2.1 Reserved Filesystem Names......Page 221
9.12.3 DMTurbo......Page 223
9.13 Version Control......Page 224
10.1 Folded Hierarchical Model......Page 227
10.2 Representations of the Hierarchy......Page 230
10.2.1 Embedded Module Hierarchy (EMH)......Page 231
10.2.2 Implementation Efficiencies......Page 233
10.2.3 Domain Integration......Page 234
10.3 Design......Page 235
10.3.1 ViewType......Page 236
10.3.1.2 Custom ViewType......Page 238
10.3.2 Open......Page 239
10.3.6 Design Persistency......Page 240
10.3.7.1 enableUndo......Page 242
10.3.7.3.2 PreCheckpoint Undo Model......Page 243
10.3.7.3.3 PostCheckpoint Undo Model......Page 244
10.3.7.6 Undo and Observers......Page 245
10.4 Wafer......Page 246
11 Block Domain......Page 247
11.1.1 Attributes......Page 248
11.1.3 Relationships......Page 249
11.2 Inst......Page 250
11.2.1 Attributes......Page 251
11.2.2 Derived Attributes......Page 253
11.2.3 Inst Relationships......Page 254
11.2.4 Inst Binding......Page 255
11.2.5 InstHeader......Page 256
11.2.6 RefHeader......Page 257
11.3 Net......Page 258
11.3.1 Net Attributes......Page 259
11.3.2 BitNet Attributes......Page 261
11.3.3.1 Object Associations......Page 262
11.3.3.2 Member [Of] Nets......Page 263
11.3.4.2 Shield Nets......Page 264
11.3.4.4 Equivalent Nets......Page 265
11.3.5 Creating Nets......Page 266
11.3.6 Editing Nets......Page 267
11.4.1 Creating Terms......Page 268
11.4.3 BitTerm Relationships......Page 269
11.4.4 Term Attributes......Page 270
11.4.5 BitTerm Attributes......Page 271
11.4.6 Shorted Terms......Page 272
11.5.1 InstTerm Binding......Page 274
11.5.2 InstTerm Attributes......Page 275
11.5.4.1 Individual InstTerm Creation......Page 276
11.5.4.2 Batch InstTerm Creation......Page 277
11.5.5.2 Net Connection......Page 278
11.5.6 5-Box Model......Page 279
11.6.1 BusNet......Page 282
11.6.2 BusNetBit......Page 285
11.6.3 BusNetDef......Page 286
11.6.3.1 Relationships......Page 287
11.6.3.2 BitOrder......Page 288
11.6.3.3 Implicit Objects......Page 289
11.6.4 BundleNet......Page 290
11.6.4.1 Implicit Net......Page 292
11.6.5 Scalarization......Page 293
11.6.8 ArrayInst......Page 295
11.6.9 VectorInst......Page 296
11.6.10 Multi-Bit Artifacts in Schematics......Page 297
11.6.11 Name Semantics......Page 299
11.6.12 Filtering Multi-Bit Objects......Page 300
11.7 Assigned Connection......Page 303
12 Module Domain......Page 305
12.1.1 Attributes......Page 306
12.1.2.1 ModNet......Page 307
12.1.2.2 ModTerm......Page 308
12.2 Domain Synchronization......Page 310
12.2.1.1 Physical-Only Objects......Page 311
12.2.3 Symmetric Connectivity......Page 312
12.2.4 Embedded Module Hierarchy......Page 314
12.3 ModInsts......Page 315
12.3.3 ModInsts......Page 316
12.3.5 ModInstHeader......Page 317
12.3.6 ModModuleInstHeader......Page 318
12.4 embed(), detach()......Page 319
12.5 Module Edit Propagation......Page 326
13 Occurrence Domain......Page 331
13.2 Cross-domain Accessibility......Page 332
13.3 OccInst......Page 333
13.3.2 OccModuleInst......Page 335
13.3.3 Occurrence Headers......Page 338
13.4.1 Symmetric Connectivity......Page 339
13.5.1 Uniquification......Page 340
13.5.2 Chain of Ancestors......Page 342
13.6 Traversal......Page 343
14 Application Extensions......Page 347
14.1 Properties......Page 348
14.1.1.2 Owner......Page 349
14.1.1.4 String Representation Value......Page 350
14.1.2 Range Properties......Page 352
14.1.3 Application-defined Property......Page 353
14.1.4 oaHierProp......Page 355
14.2 Groups......Page 356
14.2.2 Group Attributes......Page 358
14.2.2.2 GroupType......Page 359
14.2.2.5 Leader......Page 360
14.2.3 GroupDef......Page 362
14.2.3.2 Predefined Group Defs......Page 363
14.2.3.3.1 Subset......Page 364
14.2.3.4.1 Attributes......Page 365
14.3.2 FigGroupMem......Page 366
14.3.3 Attributes......Page 367
14.4 App Extensibility API......Page 368
14.4.1.1 Register the Custom Attribute Type......Page 369
14.4.1.2 Store a Value......Page 371
14.4.1.4 Deleting Values......Page 372
14.4.1.7 Pointer Swizzling......Page 373
14.4.1.8 Scope......Page 374
14.4.2 Custom Object Types......Page 375
14.4.2.4 Create Objects of the Custom Type......Page 376
14.4.2.4.2 Cross-references Among Objects......Page 377
14.5 DMData......Page 378
14.8 Interoperability Challenges......Page 382
15.1 Fig......Page 383
15.2 Basic Transforms......Page 384
15.2.2 Orientation......Page 385
15.3.1 LPPHeader......Page 387
15.3.2 Shape Attributes......Page 388
15.3.3 oaText......Page 390
15.3.3.1 Common Attributes......Page 391
15.3.5.1 AttrDisplay......Page 395
15.3.5.5 TextOverride......Page 396
15.3.6.1 oaTextLink......Page 397
15.3.6.2 IText......Page 398
15.3.6.3 ITextInvalidate......Page 400
15.3.6.4 Session Scope......Page 401
15.4.1 Attributes......Page 403
15.4.2 Operators......Page 404
15.4.3 Geometric Analysis......Page 405
15.5 Pin......Page 407
15.5.1 Attributes......Page 408
15.5.3 Strong, Weak Connections......Page 409
15.5.5 InstPin......Page 411
15.6 Advanced Transform Operations......Page 412
15.6.1 Concatenation......Page 413
15.6.2 Transform Ordering......Page 414
15.6.3 Rotating About a Specified Point......Page 416
15.6.4 Inst Placement......Page 417
15.6.5 Hierarchical Transformations......Page 419
15.6.6 Non-Orthogonal Rotation......Page 420
15.7.1 RegionQuery PlugIn Architecture......Page 423
15.7.2.2 Query Callback Implementation......Page 424
15.7.3.1.2 Query Initialization......Page 425
15.7.3.2 query()......Page 426
15.7.3.3 abort()......Page 427
16 Cooperative Processing......Page 431
16.1.1 Implementing Observers......Page 432
16.1.1.4 ModType......Page 433
16.1.1.4.1 Modifications and One-to-Many Relationships......Page 434
16.1.3 Special Observer Events......Page 436
16.1.4 Design Events......Page 437
16.1.5 Side-Effect Events......Page 438
16.1.6 Event-Driven Flow......Page 439
16.1.7.1 Performance......Page 440
16.1.7.3 Recursion......Page 441
16.2 File Locking......Page 442
16.3 Compatibility......Page 443
16.3.1.2 Initialization Functions......Page 444
16.3.1.3 CompatibilityError......Page 445
16.3.1.4 Feature......Page 446
16.3.1.5 OS Version Identification......Page 447
16.3.1.6 revNumber......Page 448
16.3.4 Cross Implementation Portability......Page 449
16.4.3 Markers......Page 450
16.5 TimeStamp......Page 452
17 Pcells......Page 457
17.1 Pcell Parameters......Page 458
17.1.2 ParamArray......Page 459
17.2 SuperMaster......Page 460
17.3 SubMaster......Page 461
17.3.1.2.1 append()......Page 462
17.3.1.2.2 read()......Page 463
17.4 SuperHeader, SubHeader......Page 464
17.5.1 getParams(), getAllParams()......Page 466
17.5.2 setParams()......Page 467
17.7 IPcell......Page 468
17.7.1 getName......Page 470
17.7.3 onEval()......Page 471
17.7.6 onUnbind()......Page 472
17.7.8 onRead()......Page 473
17.8.2 PlugIn Pcells......Page 474
17.8.2.1 PlugIn Factory......Page 475
17.8.2.3 Registration File......Page 476
17.8.3 oaPcellCPP......Page 477
17.8.3.2 IPcellCPPDefMgr......Page 478
17.9 PcellObserver......Page 481
17.10 Module Domain......Page 483
18.1.1 Geometric......Page 487
18.1.3 Net Association......Page 488
18.2 Route......Page 489
18.2.1 Attributes......Page 490
18.2.2 Relationships......Page 491
18.2.3 Constraints......Page 493
18.2.5 PathSeg......Page 494
18.2.5.1 SegStyle......Page 495
18.2.5.1.1 Constructors......Page 496
18.2.5.1.2 Changing Style Attributes......Page 497
18.2.6 Steiner......Page 503
18.2.7 Abutment......Page 504
18.2.8 Guides......Page 505
18.2.9 Routing a Net......Page 506
18.3 Via......Page 509
18.3.1 ViaDef......Page 512
18.3.2 CustomVia......Page 513
18.3.3.1 Master Design......Page 514
18.3.3.2 StdVia Instantiation......Page 515
18.3.5 ViaParam......Page 516
18.3.5.1 ViaParamType Default Values......Page 517
18.3.5.3 Cut Layer, Width, Height......Page 518
18.3.5.4 Cut Columns, Rows, Spacing......Page 519
18.3.5.6 Cut Pattern......Page 520
18.3.5.8 Layer Offsets......Page 522
18.3.5.9 Implant1 Enclosure, Implant2 Enclosure......Page 523
18.3.6.1 Attributes......Page 524
18.3.6.2 find() Methods......Page 525
18.3.6.3 StdViaVariant......Page 526
18.3.6.4 CustomViaVariant......Page 527
18.3.6.5 ViaVariantHeader......Page 528
18.3.7 ViaSpec (deprecated)......Page 529
19 Technology......Page 533
19.1.2 Attached Tech......Page 534
19.1.3.1 Tech Data Graph......Page 536
19.1.3.2 Conflicts......Page 537
19.1.3.2.1 Tech Observer......Page 538
19.1.3.3 Attribute Access Across Graph......Page 539
19.1.4 Relationships......Page 540
19.1.5.1 Primary Attributes......Page 542
19.1.6 Units of Measurement......Page 543
19.1.6.3 DBUperUU......Page 544
19.1.7 Explicit vs. Implicit Values......Page 545
19.1.8 ProcessFamily......Page 547
19.2 Layer......Page 548
19.2.1.3 density values......Page 549
19.2.2 PhysicalLayer......Page 550
19.2.3.1 DerivedLayerDef......Page 551
19.2.3.2 Logical Operations......Page 553
19.2.3.3 Sizing Operations......Page 555
19.2.3.4.1 Predefined DerivedLayerParamDef......Page 557
19.2.3.4.3 Pairing LayerOps with DerivedLayerParams......Page 558
19.3 Purpose......Page 559
19.3.1.2 PurposeNum......Page 560
19.3.3 Application Defined Purposes......Page 561
20 Constraints......Page 565
20.1 oaValue......Page 566
20.1.1 Ownership......Page 567
20.1.2 Value SubClasses......Page 568
20.1.2.2 Range......Page 569
20.1.2.3 Array......Page 570
20.1.2.4 LookupTbl......Page 572
20.2 ConstraintDef......Page 573
20.2.1.1 ConstraintType......Page 574
20.2.1.2 Simple Constraints......Page 575
20.2.1.3 Single Layer Constraints......Page 576
20.2.1.4 Layer Pair Constraints......Page 578
20.2.2 Application-Defined......Page 579
20.3 Constraint......Page 581
20.3.1.1.1 Predefined......Page 583
20.3.1.2 Relationships......Page 584
20.4 ConstraintGroup......Page 585
20.4.1.2 Ordering......Page 587
20.4.1.4 ConstraintGroup Nesting......Page 588
20.4.2.1 Attributes......Page 589
20.4.2.2 Predefined ConstraintGroupDefs......Page 590
20.4.2.3 User-Defined ConstraintGroupDef......Page 591
20.4.3.2 allowedOwner......Page 592
20.4.4 Predefined Constraint Groups......Page 593
20.4.4.1 Implicit......Page 594
20.4.4.2 Default......Page 595
20.4.4.3 Foundry Rules......Page 596
20.4.4.4 Other Predefined ConstraintGroups......Page 597
20.4.5 Application-Specific Constraint Groups......Page 598
20.4.7 Search Order......Page 599
20.5.1 Definitions of Constraint Measurements......Page 602
20.5.2 ConstraintParam Semantics......Page 603
20.5.3 Antenna Effects......Page 606
20.5.3.2 AntennaData......Page 608
20.5.3.3 Cumulative Antenna Ratios......Page 609
20.5.4 Placement......Page 611
20.5.5.1 ValidRoutingVias......Page 612
20.5.5.1.1 ViaTopologyArrayValue......Page 613
20.5.5.2 ViaStackingAllowed......Page 614
20.5.5.3 ViaStackLimit......Page 616
20.5.5.4 Number of Cuts......Page 618
20.5.5.5 Via Spacing......Page 619
20.5.6.3 MinEnclosedArea......Page 622
20.5.7 Density......Page 623
20.5.8.2 RouteGrid......Page 624
20.5.8.4 DiagonalShapesAllowed......Page 626
20.5.8.6 TaperHalo......Page 627
20.5.9.1 MinWireExtension......Page 628
20.5.10.1 MinSpacing......Page 630
20.5.10.2 MinDiffPotentialSpacing......Page 632
20.5.10.4 MinFillPatternSpacing......Page 633
20.5.10.5 Proximity Spacing......Page 634
20.5.10.7 MergeSpaceAllowed......Page 635
20.5.11 Boundary......Page 636
20.5.12 Edge Lengths......Page 637
20.5.13 Size......Page 639
20.5.13.2 MaxWidth......Page 640
20.5.13.4 MinSize......Page 641
20.5.14.3 MinClearanceOverLayer......Page 642
20.5.14.4 MinTouchingDirectionClearance......Page 643
20.5.15 Overlap......Page 644
20.5.17 Shape Angle......Page 645
21 Parasitics......Page 649
21.1.2 Annotated Parasitics......Page 650
21.2.2 Physical Location......Page 651
21.2.6 Confidence......Page 652
21.2.9 Memory Management......Page 654
21.2.10 Partitions......Page 655
21.3.1 ParasiticNetwork......Page 656
21.3.2 Partitions......Page 658
21.3.3.2 Connection......Page 660
21.3.4 Device......Page 661
21.3.4.2 Name......Page 663
21.3.4.3.2 Inductor......Page 664
21.3.4.4 SeriesRL......Page 665
21.3.4.5.1 GroundedNode......Page 666
21.3.4.6 MutualInductor......Page 667
21.3.4.8 Device Pairs......Page 668
21.3.5 SubNetwork......Page 670
21.4 ReducedModel......Page 672
21.4.1 Domain......Page 673
21.4.3 oaLumpedElmore......Page 674
21.4.5 oaPiPoleResidue......Page 675
21.5 PVT......Page 677
21.5.1 OpPoint......Page 678
21.5.2.1 Relationships......Page 679
21.5.2.2 Attributes......Page 680
21.5.3 Analysis Point......Page 681
21.6 Domain Semantics......Page 684
22.1 ScanChain......Page 687
22.1.1 ScanChain......Page 688
22.1.3 ScanChainInst......Page 689
23.1 Cluster......Page 691
23.2 Boundary......Page 692
23.2.2 PRBoundary......Page 693
23.3 Blockage......Page 694
23.4 Site......Page 697
23.4.1 SiteDef......Page 698
23.4.3 RowHeader......Page 699
23.4.4 Symmetry......Page 700
23.4.5.1 GCellPattern......Page 701
23.4.5.2 GCell Supply and Demand Data......Page 702
23.5 TrackPattern......Page 703
24.1.1 Transient Declarations......Page 705
24.1.3 Defaults......Page 706
24.2.1.1 Member Function Declaration......Page 707
24.2.3 Reference ( & )......Page 708
24.3.1 Block Scope......Page 709
24.3.2 C++ Namespaces......Page 710
24.4.2 Heap Allocation......Page 711
24.5.1.2 Functional Notation......Page 712
24.5.2 Implicit Conversion......Page 713
24.5.2.2.1 Constructors......Page 714
24.5.2.3 Ellipsis Conversions......Page 715
24.6.1 Explicit initialization......Page 716
24.7 Overloading......Page 717
24.8.2 Loop Invariance......Page 720
24.8.3 Needless Transient Allocations......Page 721
24.9.3 Assignment Instead of Comparison......Page 722
24.9.5 Missing ;......Page 723
25 References......Page 725
26 Glossary......Page 729
27.1.1 Class Diagrams......Page 751
27.1.2 Attribute Modeling......Page 753
27.2 Verilog Reserved Words......Page 754
27.3 VHDL Reserved Words......Page 755