|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 ic_qiand 于 2011-9-6 21:16 编辑
Hi,all!
Here is a synopsys hercules tutorial guide, which I've recently found in edaboard.
Hope it is useful for U.
Getting_Started_with_Hercules.pdf
(9.04 MB, 下载次数: 491 )
hercules_Examples-2008.09.tar.gz
(3.3 MB, 下载次数: 355 )
------------------------------------------------------------------------------------------
Contents
What Is Hercules? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Note to Dracula Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Document Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Learning Schedule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Related Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
1. Installation and Setup
About This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Creating Directories and Getting the Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Create a Target Directory for Hercules Setup Files . . . . . . . . . . . . . . . . . 2
Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Downloading the Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Copy Install and Code Files to Target Directory. . . . . . . . . . . . . . . . . . . . 3
Extracting the Zipped File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Untar File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Install Files in Proper Directory and Execute . . . . . . . . . . . . . . . . . . . . . . 3
Get the Manuals and Release Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Get the Tutorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Ensuring Your Environment Accommodates Hercules . . . . . . . . . . . . . . . . . . 4
Edit Your .cshrc or .profile Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Initialize Your Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Authorize the Synopsys Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
iv
Licensing Hercules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Getting Hercules to Run: Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
How to Set Up Your Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.
An Error-Free Design for DRC
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Learning Method: the Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Layout Editors in This Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Overview of the Runset File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
The Runset File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Example of a Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Runset Header Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
LAYOUT_PATH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
INLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
BLOCK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
OUTLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
OUTPUT_BLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
GROUP_DIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Runset Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
WIDTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Preprocessing Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CHECK_PATH_90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Layer Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
SNAP Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ASSIGN_LAYERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
GRID Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
ASSIGN_LAYERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
CHECK_45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
DRC Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Running Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
v
How to Run Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Run File Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What if My Output Is Not Correct? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Explanation of Error and Summary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
AD4FUL.RESULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
AD4FUL.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
AD4FUL.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Design Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hierarchical Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Horizontal Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Efficient Versus Inefficient Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Explanation of Output Tree Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Hierarchy Tree Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
AD4FUL.tree0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
ADFUL.tree1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
AD4FUL.tree3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Miscellaneous Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
AD4FUL.tech and AD4FUL.vcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
evaccess/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
evaccess/AD4FUL.ev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.
Single Design Error for DRC
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Running Hercules on the Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Output Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
AD4FUL.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Geometric Representation of Error . . . . . . . . . . . . . . . . . . . . . . . . . 52
AD4FUL.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Running Enterprise and Viewing Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
How to run Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
The initial Enterprise Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Viewing the EX_ADDER_2 Library File Names . . . . . . . . . . . . . . . . . . . . 56
EX_ADDER Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . 58
vi
Viewing Data in Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Layout Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Output Hierarchy Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.
A Complete Design for DRC
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A Summary of Design Rule Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Operations Allowed by Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Examining the Runset Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Writing Output Results to Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Error Hierarchy Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Permanent Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Temporary Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
EXTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
metal1 to metal1 Spacing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
metal2 to metal2 spacing - longedge Option . . . . . . . . . . . . . . . . . . 74
metal1 to metal2 spacing - touch Option . . . . . . . . . . . . . . . . . . . . . 74
INTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
poly width - edge_45 Option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
metal2 width - corner Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
CUT Checks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Cut poly by diffusion - cut_outside Option . . . . . . . . . . . . . . . . . . . . 76
AREA Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Via area - range Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
DATA CREATION / INTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . 78
BOOLEAN poly AND tox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
BOOLEAN gate AND psel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
BOOLEAN gate NOT pgate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Internal pgate Dimension Operator . . . . . . . . . . . . . . . . . . . . . . . . . 80
Internal ngate dimension Operator. . . . . . . . . . . . . . . . . . . . . . . . . . 80
DATA CREATION Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
BOOLEAN cont NOT poly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
ENCLOSE Check. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ENCLOSE toxcont by tox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ENCLOSE toxcont by metal1 - touch, overlap, and parallel Options 82
vii
From Rules to Runsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Running Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Output Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Error File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Summary File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Viewing Data Creation Layers in Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Introducing Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Running Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Viewing Errors Using Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 104
Using the Checks Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Running Hercules Inside of Hercules-Explorer . . . . . . . . . . . . . . . . . . . . 108
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.
Hercules DRC Migration
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
What Is Drac2He? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Using the Migration Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Learning method: Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Getting Started with Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
-OutType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
-rc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
-N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Other Dracula Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
How to Run Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Translation Results for Migration1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Output from First Dracula Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Dracula_DEFAULTS, OPTIONS Section . . . . . . . . . . . . . . . . . . . . . 120
OUTPUT Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
COMMENT Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
COMMENTS in the Hercules Runset . . . . . . . . . . . . . . . . . . . . . . . . 121
CASE of LAYERS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
CONJUNCTIVE and COPY Commands . . . . . . . . . . . . . . . . . . . . . 121
Output with PERM Omitted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
viii
-rc and -N Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Running Drac2He with Warnings and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Translation Results for Migration2 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Output of Translated migration2.drc File . . . . . . . . . . . . . . . . . . . . . . . . . 125
error.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.
Hercules Migration with Hercules-Explorer
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Generating a Runset with Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Translation Results for Migration3 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Setting up Hercules in the Opus Environment . . . . . . . . . . . . . . . . . . . . . . . . . 133
Starting Opus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Opening Your Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Setting Hercules Startup Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Streaming Out from Virtuoso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Opening Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Debugging with Hercules-Explorer in the Opus Environment . . . . . . . . . . . . . 138
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7.
Introduction to Hercules HLVS
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Learning Method: the Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
What are LVS and Its Components? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
What is Hierarchical LVS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Hierarchical Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Layers That Make Up a Device Should Be in the Same Block . . . . 147
Hierarchical Texting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Match Text Appropriately at all Hierarchical Levels . . . . . . . . . . . . . 149
Use Different Texting Layers for Different Polygon Layers . . . . . . . . 150
ix
Hierarchical Netlist Comparison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Designing to Benefit from Hierarchical LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Match the Hierarchy Between Schematic and Layout . . . . . . . . . . . . . . . 153
Defining the Most Beneficial Equivalence Points . . . . . . . . . . . . . . . . . . 154
Match Layout Block Name to Schematic Block Name . . . . . . . . . . . . . . . 155
Match Block Port Names for Blocks That Will Be Equivalence Points . . . 156
Difficulties Presented by Hierarchy in LVS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Devices Floating Out of Equivalence Points. . . . . . . . . . . . . . . . . . . . . . . 156
Port Swappability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Detecting Swappable Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Equivalence Points That are Resolved in Their Parent . . . . . . . . . . . . . . 158
Different Number of Instances of a Cell in the Layout and Schematic . . . 158
Overview of Required and Optional Input Files for LVS. . . . . . . . . . . . . . . . . . 159
The Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Example of an Actual Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
General Runset File Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Runset Header Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
General Runset Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Preprocessing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Texting Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Layer Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
LVS Netlist Extraction Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Device Layer Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Device Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Connectivity Commands and Options . . . . . . . . . . . . . . . . . . . . . . . 171
Texting Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Layout Netlisting Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Graphical Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
LVS Comparison Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
LVS Device Equate Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
LVS Comparison Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
The Schematic Netlist File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
NetTran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Executing NetTran as a UNIX Shell Command . . . . . . . . . . . . . . . . 181
Executing NetTran by Specifying a SCHEMATIC_FORMAT . . . . . . 185
The EDTEXT File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
The Equivalence File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Running Hercules LVS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
How to run Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
x
Run File Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
What if Your Output Is Not Correct?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Overview of Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
LVS Device Extraction Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
DAC96.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
DAC96.acct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
DAC96.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
DAC96.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Tree Files and Technology Option Files . . . . . . . . . . . . . . . . . . . . . . 207
LVS Comparison Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
DAC96.LVS_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
DAC96.cmpsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
DAC96.cmperr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Compare Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
./lvsflow Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Progress Review of Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
8.
HLVS Advanced Concepts
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
General Requirements of a Strict LVS Flow Comparison . . . . . . . . . . . . . . . . 260
Comparing Top-Block Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Requiring Ports to Match by Name . . . . . . . . . . . . . . . . . . . . . . . . . 262
Requiring All Ports to be Texted . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Symmetry: Independent and Dependent Swappability . . . . . . . . . . . . . . 263
Guaranteeing Equivalence Point Matching . . . . . . . . . . . . . . . . . . . . . . . 264
Reuse of IP Blocks and Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Debugging Large Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Guidelines for a Good Equivalence File . . . . . . . . . . . . . . . . . . . . . . 265
Guaranteeing Devices Are Netlisted in the Cell Where They Are Designed 265
MOS_REFERENCE_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
PUSH_DOWN_DEVICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Setting up Error and Warning Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Hercules Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Running Hercules LVS for Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Runfile Results for Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Running Hercules LVS for Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
xi
Runfile Results for Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
EQUATE, EQUIV, and COMPARE—Which Setting Takes Priority? . . . . . . . . . 296
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
9.
Hercules HLVS Debugging
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Quick Checklist for LVS Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
LVS Extraction Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
STEP 1: Check for Texting or Device Extraction Errors. . . . . . . . . . . . . . 298
Missing Terminals - Device Extraction Errors . . . . . . . . . . . . . . . . . 298
Too Many Terminals - Device Extraction Errors . . . . . . . . . . . . . . . . 300
Unused Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Text Opens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Text Shorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
STEP 2: Review Your TEXT_OPTIONS, ASSIGN, and TEXT Sections, 303
STEP 3: Debug All Device Extraction Errors.. . . . . . . . . . . . . . . . . . . . . . 304
STEP 4: Rerun Your Hercules LVS Job.. . . . . . . . . . . . . . . . . . . . . . . . . . 304
LVS Comparison Debug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
STEP 5: Review the Equivalence Points. . . . . . . . . . . . . . . . . . . . . . . . . . 304
Filtering Options Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Merging Options Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
POWER/GROUND Shorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
LAYOUT POWER or LAYOUT GROUND Definitions Missing . . . . . 305
Schematic Globals Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
STEP 6: Fix COMPARE Errors and Rerun Hercules. . . . . . . . . . . . . . . . 306
Running Hercules LVS with Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Debugging Your Hercules LVS Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
STEP 1: Check for Texting or Device Extraction Errors. . . . . . . . . . . . . . 309
Short Finding in Hercules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Short Finding in Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 310
Loading Extract Errors in Hercules-Explorer . . . . . . . . . . . . . . . . . . 312
Loading Text Short Coordinates Into Shortest Path Tool . . . . . . . . . 313
Setting Error Highlight Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Viewing Text Short Errors in Enterprise . . . . . . . . . . . . . . . . . . . . . . 315
Fixing the Short Between DINT15 and ICDOUT15 . . . . . . . . . . . . . 318
Using Hercules-Explorer Shortest Path for VDD/GND Short . . . . . . 319
Selecting Start and Stop Points Manually . . . . . . . . . . . . . . . . . . . . 324
xii
Correcting the VDD/GND Short . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Short Finding with FSPBTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Running Hercules with FSPBTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Viewing the Shortest Path Output . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed . . . . . 332
Step 2: Review your TEXT_OPTIONS, ASSIGN, and TEXT Sections. . . 333
Step 3: Debug All Device Extraction Errors.. . . . . . . . . . . . . . . . . . . . . . . 333
Step 4: Rerun Your Hercules LVS Job . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Step 5: Review the Equivalence Points.. . . . . . . . . . . . . . . . . . . . . . . . . . 333
Linking Hercules-Explorer to HTML Interface . . . . . . . . . . . . . . . . . 333
Reviewing the LVSDEBUG File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors . . . . . . . 339
STEP 6: Fix COMPARE Errors and Rerun Hercules. . . . . . . . . . . . . . . . 339
Where to Start Debugging LVS Errors . . . . . . . . . . . . . . . . . . . . . . . 341
Loading buf4x for Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Files Available in Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 344
Reading the sum.block.block File . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Table on Schematic and Layout Net Relationships . . . . . . . . . . . . . 348
Highlighting Nets and Devices in the Layout . . . . . . . . . . . . . . . . . . 349
Using Information About Matched Devices Connected to Unmatched Nets
351
Analyzing the Highlight Information . . . . . . . . . . . . . . . . . . . . . . . . . 352
Loading cs_add for Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Highlighting to Find an Open Between Two Nets . . . . . . . . . . . . . . . 355
An Exercise for the Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
When Do You Rerun Hercules? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
10. HLVS Migration with Hercules-Explorer
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Overview of HLVS Migration Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Details of Flow Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Generating a Runset with Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Translation Results for Migration.lvs Example . . . . . . . . . . . . . . . . . . . . . . . . . 375
Translated Header and Option Sections . . . . . . . . . . . . . . . . . . . . . . . . . 375
Translated EDTEXT and HEDTEXT Files . . . . . . . . . . . . . . . . . . . . . . . . 376
xiii
Netlisting Consistency Between Composer and Hercules-Explorer . . . . 377
Case Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Setting up Hercules in the Opus Environment . . . . . . . . . . . . . . . . . . . . . . . . . 378
Starting Opus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Opening Your Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Connecting Hercules-Explorer to Virtuoso and Composer . . . . . . . . . . . 380
Executing Hercules LVS in the Opus Environment . . . . . . . . . . . . . . . . . . . . . 382
Highlighting in Virtuoso and Composer . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Debugging with Hercules-Explorer Connected to Virtuoso and Composer . . . 386
Opening the sum.block.block File in Hercules-Explorer. . . . . . . . . . . . . . 386
Detailed Flow: Dracula Rule Files to Hercules LVS Output . . . . . . . . . . . . . . . 391
Hercules Parses the Output of Drac2He as Input . . . . . . . . . . . . . . . . . . 393
Reading and Converting the CDL Netlist . . . . . . . . . . . . . . . . . . . . . . . . . 394
Streaming in Your GDSII File with gdsin . . . . . . . . . . . . . . . . . . . . . . . . . 395
Device Extraction and Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Generic Differences in Hercules and Dracula Device Extraction . . . 396
MOSFET Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
BIPOLAR Device Extraction (BJTs) . . . . . . . . . . . . . . . . . . . . . . . . . 397
DIODE Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
CAPACITOR Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
RESISTOR Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Layout Netlist Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Generating Schematic Globals, Equates, and the Equivalence File . . . . 400
Details on Filter Option Translation . . . . . . . . . . . . . . . . . . . . . . . . . 402
Details of Merging, Gate Formation, and Filtering Options . . . . . . . 403
How the EQUIVALENCE File Is Generated . . . . . . . . . . . . . . . . . . . 404
Comparing the Layout and Schematic Netlists . . . . . . . . . . . . . . . . . . . . 405
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
11. Runset Debugger
About This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Learning Method: the Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . 409
General Applications of the Runset Debugger. . . . . . . . . . . . . . . . . . . . . . . . . 409
xiv
The Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
DRC Checks in the Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
LVS Checks in the Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Enterprise Interface Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
How to Run the Hercules Runset Debugger with Enterprise . . . . . . . . . . 413
Using the Setup Window in the Runset Debugger . . . . . . . . . . . . . . . . . . 415
Filling in the Setup Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Analyzing the Errors window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Correcting Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Verifying Corrected Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Using the Watchpoints and Review Windows in the Runset Debugger . . 420
Selecting Watchpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Using the Review Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Using the Exec Window to Run Hercules and Generate Debug Data . . . 427
Using the Results Window and Debugging. . . . . . . . . . . . . . . . . . . . . . . 429
Opening the Output Library and Cell . . . . . . . . . . . . . . . . . . . . . . . . 430
Viewing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Solving the Device Extraction Errors . . . . . . . . . . . . . . . . . . . . . . . . 433
Checking the Updated Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Adding the DRC Checks as Debug Points . . . . . . . . . . . . . . . . . . . . 437
Solving the DRC Check Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Verifying the Debugged Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Virtuoso Interface Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
How to Run the Hercules Runset Debugger with Virtuoso . . . . . . . . . . . 444
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Streaming Out the QA Cells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Starting the Runset Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Using the Setup Window in the Runset Debugger . . . . . . . . . . . . . . . . . . 449
Filling in the Setup Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Analyzing the Errors Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Correcting Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Verifying Corrected Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Using the Watchpoints and Review Windows in the Runset Debugger . . 458
Selecting Watchpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Using the Review Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Using the Exec Window to Run Hercules and Generate Debug Data . . . 464
Using the Results Window and Debugging . . . . . . . . . . . . . . . . . . . . . . . 465
Opening the Output Library and Cell . . . . . . . . . . . . . . . . . . . . . . . . 467
xv
Viewing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Solving the Device Extraction Errors . . . . . . . . . . . . . . . . . . . . . . . . 469
Looking at NMOS Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
A. Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Create Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Open the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Stream In the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Open a Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Select a Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Running Hercules from Enterprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Using Hercules-Explorer with Enterprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Close Any Open Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Load Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Fixing the Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Rerunning Hercules from Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . 501
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Index |
|