SYNOPSYS™ Examples: Tolerancing the Apochromatic Objective
In the previous example we designed an apochromatic telescope objective. In this lesson we will calculate a tolerance budget for that lens.
Not all lens designers give the subject of lens tolerances the attention it deserves. We have written an informative description of what tolerances are all about, how they are calculated, and what kinds of blunders are often made by both designers and lens makers. This will be found at
http://www.osdoptics.com/Lens%20Tolerances.html.
It will help the new user of SYNOPSYS to understand this important topic if they first read this short paper. When you have finished, you may go on with this lesson.
We will start this lesson with the results of the design you did in Lesson 1, the apochromatic objective. Before you can send drawings of the lens elements to the shop, you have to figure out how large the manufacturing errors can be and still get adequate performance. Since this example is a very well-corrected astronomical objective – the fussiest lenses you are ever likely to meet unless you design microlithography objectives – the budget will probably be very tight. That is exactly what we need for the exercise: most lenses are very easy to tolerance with SYNOPSYS, but that would not be a very interesting example.
For reference, here is the RLE file of that lens (with the curvature solve removed from surface 6, and the maximum field angle set to 0.5 degrees):
RLE
ID
F10
APO
24723
FNAME
'C:\SYNOPSYS\USER\APO_START.RLE
'
WAVL
.6500000 .5500000 .4500000
APS
3
UNITS
INCH
OBB
0.00 .5 2.00000
-0.01249 0.00000 0.00000
2.00000
0 AIR
1 RAD -282.3206120622309
TH 0.58187611
1 N1 1.53742490 N2 1.54188880 N3 1.54960358
1 GTB S
'N-BAK2 '
2 RAD -7.1715443994768
TH 0.33067176 AIR
2 AIR
3 RAD -6.6987409012966
TH 0.26355283
3 N1 1.60953772 N2 1.61628830 N3 1.62823445
3 GTB S
'N-KZFS4 '
4 RAD 5.4860309728572
TH 0.03937000 AIR
4 AIR
5 RAD 5.5795739858116
TH 0.53300999
5 N1 1.66610392 N2 1.67304720 N3 1.68543133
5 GTB S 'N-BAF10
'
6 RAD -20.4792159953376
TH 39.45248745 AIR
6 AIR
6 CV -0.04882999
6 UMC -0.05000000
6 TH 39.45248745
6 YMT 0.00000000
7 RAD -11.3257437577435
TH 0.00000000 AIR
7 AIR
END
First let us look at the lens in its final form, using the
SketchPAD display (type PAD in the Command Window, and then adjust the ray fans
scale, if needed, with the toolbar button
).

The on-axis image is the most important for this kind of objective, which is often used for planetary observing, and there is some field curvature (which is why we varied the image surface radius) and some astigmatism, which you cannot correct with a compact lens group at the stop.
First we will try a simple BTOL evaluation. BTOL is the Budget TOLerance program in SYNOPSYS, and it has a great many options, of which we will use only a few. We have provided a menu for simple cases: MSB, for Menu, Simple BTOL. Type MSB in the Command Window, and then fill in the boxes as follows: (Most of them are already filled in for you; but we selected the TOLERANCE and WAVE radio buttons (instead of DEGRADE SPOT), and clicked the Prepare MC box to select that option. Everything else can be left as it is. Click the GO button.

You see some data scroll by on the Command Window, and the results are in. Look up a little from the bottom line, and you will see
SUMMARY
OF OPTICAL PERFORMANCE
REL. Y-HEIGHT REL.
X-HEIGHT
ANTICIPATED STATISTICS
OF QUALITY DESCRIPTOR
(HBAR) (GBAR)
MEAN VALUE MULTIPLE DEV EXPECTED ZOOM
___________________________________________________________________________
0.000
0.000
0.02851 0.01284
0.04135 1
1.000
0.000
0.03284
0.01750 0.05035 1
0.500
0.000
0.02896
0.01361 0.04257 1
This says that the on-axis image will get a variance of 0.041, which is rather large. The edge of the field went to the allowed maximum variance of 0.05, but for this lens we don’t care much about that. What does the budget look like? Scroll the display up a bit more until you come to the budget results:
BUDGET
TOLERANCE ANALYSIS
-----B-----
EL.
SURF
RADIUS RADIUS
TOLERANCE THICKNESS THICKNESS TOL
(RADIUS) (FRINGES)
_____________________________________________________________________________________________
1 1
-282.32061
2.35734
4.77859
0.58188 0.00500
1 2
-7.17154
0.00097
3.04615
0.33067 0.00164
2 3 -6.69874
8.28596E-04
2.81864
0.26355 0.00494
2 4 5.48603
3.47212E-04 1.80090
0.03937 4.97777E-04
3 5 5.57957
3.44665E-04
1.74861
0.53301 0.00496
3 6
-20.47922
0.01147
4.32324
39.45249 0.00000
7 -11.32574
0.00000
0.00000
0.00000 0.00000
ELE
SURF GLASS NAME BASE
INDEX INDEX TOL
V-NUMBER V-NUMBER TOL
_____________________________________________________________________________________________
1 1 N-BAK2
1.53996d 4.49039E-04 59.70771d
0.08444
2 3
N-KZFS4
1.61336d 1.88603E-04
44.49298d 0.03630
3 5
N-BAF10
1.67003d 2.19122E-04
47.11137d 0.05250
Note:
The symbol "d" indicates that the quantity is estimated at 0.58756
uM.
The symbol "F" indicates that the
quantity is taken at the primary color.
ELE
SURF WEDGE
TOLERANCE IRREG. TOL ROLLED EDGE TOL
(ARC MIN) (TIR)
(FRINGES) (FRINGES)
_______________________________________________________________
1 1
0.00000
0.00000
0.35680 0.41817
1 2 0.44023
5.13653E-04
0.35410 0.41101
2 3
0.00000 0.00000
0.32915 0.37737
2 4 0.24462
2.80682E-04
0.32635
0.37328
3 5
0.00000
0.00000
0.31155 0.35502
3 6 0.49714
5.74080E-04
0.31665 0.36742
7 15.83939
0.00322
0.00000 0.00000
ELE
SURF ELEMENT TILT TOLERANCE Y-DECENT TOL
X-DECENT TOL
(ARC MIN) (TIR)
_______________________________________________________________
1 1 0.55503
6.47911E-04 6.58472E-04 0.00000
1 2
0.00000
0.00000
0.00000 0.00000
2 3 0.33068
3.75198E-04 2.48972E-04 0.00000
2 4
0.00000
0.00000
0.00000 0.00000
3 5 0.26276
3.03263E-04 2.88880E-04 0.00000
3 6
0.00000
0.00000 0.00000
0.00000
7
0.00000
0.00000
0.00000 0.00000
This is scary. The lens has a 0.0016 airspace tolerance between elements 1 and 2, and 0.0005 between 2 and 3. The V-number tolerance is 0.0363 on the center element, and you need to hold centration of 0.00025 on that element. Nobody can make this lens by just following a budget.
We have to loosen things up by a whole lot. Type LMM in the Command Window, which loads the last menu as a MACro, so you can edit it and run it again. Here is the BTOL input for what we just did. It is indeed very simple.
TPR
ALL
TOL
WAVE
0.05
PREPARE
MC
GO
We have to change it. First, type POP (Print OPtions) in the CW, to see what paraxial options are in effect.
______________________________________________________________________________
SOLVES,
PICKUPS, AND OPTIONS
______________________________________________________________________________
6 TH 39.45248746
6 YMT 0.00000000
This lens has a paraxial thickness solve on surface 6 (YMT means Y-height, Marginal ray, Thickness adjust). That means that the lens stayed at the paraxial focus throughout the tolerance analysis. Sometimes one can do better by allowing a small departure, so we will change that. We also add some other things to get this new MACro:
GET
3
CHG
NOP
END
BTOL
2
UCF
1
0
0
EXACT
INDEX 1 3 5
EXACT
VNO 1 3
5
TPR
ALL
TOL
WAVE 0.1
ADJUST
6 TH 100 100
PREPARE
MC
GO
STORE
3
We have deleted the thickness solve (with NOP), specified that tolerances were to be calculated looking at only the center of the field (UCF is User-Controlled Field, at a single point with angles HBAR and GBAR both zero. We also loosen the variance tolerance to 0.1, specify exact index and Vnum for all glasses (one usually gets melt data for these fussy systems and reoptimizes with those data, so the glass parameters do not need a tolerance anymore) and we add the adjustment directive so that thickness 6 (the final airspace) can be adjusted to maintain image quality. We run this MACro, and the budget is somewhat looser but still not easy.
BUDGET
TOLERANCE
ANALYSIS
-----B-----
EL.
SURF
RADIUS RADIUS
TOLERANCE THICKNESS THICKNESS TOL
(RADIUS) (FRINGES)
_____________________________________________________________________________________________
1 1
-282.32061 2.42936
4.92457
0.58188 0.00500
1 2
-7.17154
0.00146
4.57349
0.33067 0.00331
2 3
-6.69874
0.00132
4.47709
0.26355 0.00498
2 4 5.48603
6.36827E-04
3.30306
0.03937 0.00096
3 5 5.57957
6.36967E-04
3.23157
0.53301 0.00499
3 6
-20.47922
0.01292
4.87002
39.45249 0.00000
7 -11.32574
0.00000
0.00000
0.00000 0.00000
ELE
SURF GLASS NAME BASE
INDEX INDEX TOL
V-NUMBER V-NUMBER TOL
_____________________________________________________________________________________________
Note:
The symbol "d" indicates that the quantity is estimated at 0.58756
uM.
The symbol "F" indicates that the quantity is taken at the primary
color.
ELE
SURF WEDGE
TOLERANCE IRREG. TOL ROLLED EDGE TOL
(ARC MIN)
(TIR) (FRINGES) (FRINGES)
_______________________________________________________________
1 1
0.00000
0.00000
0.98687 0.44016
1 2 0.73634
8.59153E-04
0.97505 0.43160
2 3
0.00000
0.00000
0.89501 0.39468
2 4 0.41243
4.73227E-04
0.87893 0.38633
3 5
0.00000
0.00000
0.83218 0.36679
3 6 0.85590
9.88362E-04
0.85577 0.38158
7 24.62785
0.00500 0.00000
0.00000
ELE
SURF ELEMENT TILT TOLERANCE Y-DECENT TOL
X-DECENT TOL
(ARC MIN) (TIR)
_______________________________________________________________
1 1
0.86690
0.00101
0.00111 0.00000
1 2
0.00000
0.00000
0.00000 0.00000
2 3 0.58338
6.61928E-04 4.13000E-04 0.00000
2 4
0.00000
0.00000
0.00000 0.00000
3 5 0.43714
5.04532E-04 4.89761E-04 0.00000
3 6
0.00000
0.00000
0.00000 0.00000
7
0.00000
0.00000
0.00000 0.00000
Now the lens will get a variance of 0.1 at the center of the field, at the two-sigma level. Is that too large? To find out, let us run the Monte-Carlo routine and see what the as-made lenses look like. The starting lens is in the library at location 3 and we want a worst-case example to be placed into location 5.
Type in the CW:
MC 50 3 QUIET –1 ALL 5.
This will run a batch of 50 lenses, made according to the budget above, compile statistics for the batch, and then save the worst case example. If you do not know the arguments of the command, just type the letters MC, and look at the tray. The format of the command is displayed for you, and if you need more information, must press the F2 key while the command is in the tray, to open the Help File at that topic. (You have to run BTOL before MC will work, since it uses the budget from BTOL.)
![]()
MC runs its 50 cases and prints some statistics. You can look at a histogram of the results by typing MC PLOT after the run is finished. The on-axis image now has a variance of 0.1 at a two-sigma confidence.
But this looks too easy. We need to examine the worst-case example. Switch to ACON 2 (type ACON 2 – or click the orange button that says 2) and type GET 5. This is where MC put that example. Now look at the PAD display.

Here we selected the OPD Fan Plots option for the bottom display, full SFAN, and we see that the lens has way more than a quarter-wave of aberration at the on-axis image. We told you this would not be an easy problem! And this budget is still rather tight, with centration tolerances of about 10 microns.
Anyone with experience with astronomical optics could have predicted all of this, of course. One can rarely just build to print and expect such lenses to work. We have a great budget that nobody can hold, and a more practical budget that makes a bad lens. What’s next?
Clearly we need some fabrication adjustments. In this scenario, one makes an element, measures it, and then reoptimizes the lens again, varying the other elements. Then one makes another element to the new design, measures and adjusts all over again, continuing in this way until everything is made. At assembly one then adjusts centration and possibly tilts to get the best possible image.
One really should read about this topic in order to use it. Type HELP FAMC. (FAMC is Fab Adjust MC.) It’s actually not too complicated. Here is our MACro:
FAMC
50 3 QUIET -1 ALL 5
PASSES
10
FAORDER
5 3 1
PHASE
1
PANT
VLIST
RAD 1 2 3 4 5 6
VLIST
TH 2 4 6
END
AANT
GSO
0 1 5 P 0
GSO
0 1 5 1 0
GSO
0 1 5 3 0
END
SNAP
EVAL
PHASE
2
PANT
VY
3 YDC 2 100 -100
VY
3 XDC 2 100 -100
VY
5 YDC 2 100 -100
VY
5 XDC 2 100 -100
VY
6 TH
END
AANT
GNO
0 1 4 P 0 0 0 F
GNO
0 1 4 1 0 0 0 F
GNO
0 1 4 3 0 0 0 F
END
SNAP
Here is what is going on in this MACro:
1. Request FAMC, with arguments the same as for the MC program that was run above.
2. In Phase 1, the program will alter the lenses in the order given in the FAORDER line, changing the parameters by a random amount within the BTOL budget. This simulates making the hardest element first, and so on. It will optimize the lens with the variables and merit function listed in the PHASE 1 portion, as each element is manufactured, deleting those variables that apply to elements that are already finished.
3. When the lenses are all made, it simulates their mounting in the cell according to the tilt and decenter tolerances. Then it optimizes once again, varying the decenter of elements two and three in both X and Y (errors are simulated in both directions, so the compensation must be as well) in accordance with the PHASE 2 parameters. It also varies thickness 6 once again, since a large centration change produces a small focus shift as well. The merit function also corrects rays over both halves of the pupil (the “F” in the GNR lines) because there is no bilateral symmetry anymore once the errors are simulated.
We run this MACro and look at the worst case again.

This lens now has wavefront errors of just over a quarter wave – and remember this is the worst case. Most of the 50 in this batch are very much better. Type MC PLOT, and look at the portion that describes the on-axis image:

The worst-case example is the lonely box at the end of the bottom histogram, and it is much worse than the others. There is always a small chance of getting a lemon, after all, and this is it. Nonetheless, there is a high probability that the lens will work just fine if built according to this rather tight budget. (If you run these cases yourself, your statistics will be different, since MC introduces random errors according to the budget.)
Note that the budget itself was not altered, or recalculated, when we decided to use FAMC. What we did was to employ a budget that did not work very well and made it work much better. As a fringe benefit, we don’t have to worry about the tight centration errors anymore – which are expensive to hold – since the elements are to be adjusted at assembly anyway. So things have gotten much easier.
But there is a price to pay: the shop must make the elements in the order given, measure them carefully, and then send those data back to the designer, who will reoptimize everything at each step. And provision must be made for adjusting the centration of elements two and three on the test bench, and then locking everything down once the image is tuned up. But that’s what precision optics is all about.
Here are some ideas that the curious student might want to explore further. One is whether there is a way to change the lens itself so that tolerances get looser. Indeed there is. Get the lens out again, and type the command THIRD SENS. Here is what you get.
SYNOPSYS
AI>THIRD SENS
ID
F10
APO
24723
24-AUG-11 17:02:30
NORMALIZED
3RD-ORDER ANALYSIS OF TOLERANCE SENSITIVITY
SS
OF SA3 BY SURFACE (SAT)
= 6.853259
SS
OF CO3 BY SURFACE (COT)
= 0.016011
SS
OF CO3/YDC BY SURFACE (ACD) =
0.109606
SS
OF CO3/TILT BY SURFACE (ACT) = 3.664536
SS
OF CO3/YDC BY ELEMENT (ECD) =
0.031507
SS
OF CO3/TILT BY ELEMENT (ECT) = 1.045062
SS
OF SA3 BY ELEMENT (ESA)
= 0.035223
SS
OF CO3 BY ELEMENT (ECO)
= 0.000083
(Read section 10.13 of the UM for a discussion of how these third-order aberration combinations can sometimes make a difference in the tolerance budget.) Note the large value of SAT. What happens if you add a target in the optimization MACro to bring that down to, say, 4? Add this to your AANT file:
M 4 1 A SAT
and reoptimize. Then do the tolerance analysis again. Now the tolerances are indeed somewhat looser. Experiment with different targets for the sensitization parameters, optimize with them (one at a time, please) and see how loose the tolerances will get. There is no general rule, so you’ll have to explore. You’ll probably still want to use the fab adjust process, but looser is cheaper, so go for it.
And about those adjustments: It’s easier to adjust the centration of only one element, not two as in this example. What happens if you delete the adjustments on, say surface 3 and redo the whole procedure? If it works the assembly technician will thank you. Try it and find out!