Technical Issues - FilmStar News 2016

Other editions: 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017

February 11    Cary UMA Support

A new version of FilmStar MEASURE supports the UMA (Universal Measurement Accessory) for Agilent Cary 4000/5000/6000i. Note that the UMA is standard on the Cary 7000 UMS (Universal Measurement Spectrophotometer).

The UMA contains a rotating sample holder and rotating detector. It provides absolute %R and %T. FilmStar MEASURE simplifies and enhances operation via a spreadsheet workbook where each sample has its own worksheet: simple and effective, easy to deal with.

Some advantages, perhaps best appreciated by current UMA users:

  • Easy to set up scans, including collections with the UMA Solids Autosampler and similar devices. Automatic backup and just-in-case Crash Recovery!

  • A master baseline eliminates the need to repeat 0% and 100% scans when changing wavelength ranges. The previous baseline is automatically saved for reuse in a new scan sequence. Option to automatically refresh baselines between sample scans.

  • Scatterometer mode generates multiple detector angles for a given sample angle.

  • Discrete wavelength mode for measurements at laser or other specific wavelengths.

  • FilmStar's spreadsheet paradigm simplifies results. Instantly normalize, average S and P polarizations, and positive and negative angles. These built-in capabilities do not require macros.

  • Scan sequences and measured spectra saved as Excel XLS files. Excel is not required.

  • Plot single or multiple scans by selecting spreadsheet column(s) and pressing <F4>.

  • Simple scans (with or without UMA) are really simple and do not require a scan sequence.

  • Test Mode makes it possible to set up and verify complex scan procedures in minutes.

  • Powerful FilmStar graphics, reports, BASIC, etc. Integration with FilmStar DESIGN.

Scan sequences are developed via the dialogs shown below. It's easy to specify a multi-sample sequence using the same baseline (0%, 100%) settings. In the case of the PIKE and other multiple-sample holders, specifying Num samples > 1 automatically generates numbered worksheets. A FilmStar BASIC macro drives the autosampler utilizing sheet numbers to ensure proper placement.
Lacking optical-quality samples, we measured reflectance from a CD-ROM and a chrome plated business card case. Even at one angle, four measurements are required: P, S and positive, negative angles. Results can be downloaded here. A great number of measurements are required when utilizing an autosampler over a range of angles.

Check Scatterometer to enable Sample angle and change
Sample Angle Range to Detector Angle Range.

Clicking OK generates the confirmation screen shown below.

Incorrect? Press <Shift+Del> to clear and start over.

The final scan sequence can now be inspected. There is an option to scan a 0% baseline or just assume it's zero as shown here. While the scan sequence can be saved in Excel format, it is also saved automatically. Should the UMA Sequence Builder not meet requirements, users can create sequences in Excel.

When Autosampler is unchecked the technician is prompted to manually load samples.

The Collector is finally ready to scan and fill blank cells. Users are prompted to mount each sample. In Auto Sample mode automation, however, a BASIC macro automatically selects the next sample.

Scan completed! Green numbers indicate raw machine data. Clicking Setup..Normalize adjusts for baseline measurements, adding new columns in black. Optionally auto-delete raw data before saving.

Prefer a list starting at low wavelength? Click Spectra...Sort.

Finally, averaging P and S as well as positive and negative sample angles gives the following:

RR = Reflectance Random, no '+' or '-' signs indicates averaged angles.

The Collector is integrated with the FSPlot Module. Open FSPlot and select one or more columns and hit <F4> to create plots such as the one shown below.

The Spectra Collector can also be opened in DESIGN, providing seamless integration between multi-angle measurements and analysis. Agilent Technologies kindly provided a Cary 7000 for FTG development. While we no longer have access to the instrument, MEASURE Test Mode enables us to demonstrate features via our Glance facility.

Integration with the UMA Solids Autosampler (manufactured by PIKE) and similar devices is provided through new BASIC function ScanPart$() which transfers worksheet labels (sample names). When Num samples is greater than one, each sheet is automatically labeled with "01" to "99" appended to Description. In the code below we've assumed that position #0 is empty. This simplifies operation since the autosampler can be left in place during 100% baseline (reference) scans.

Sub Main          ' Same BASIC syntax as Cary ADL
    Select Case ScanPart$()
    Case "0%"     ' Required only if scanning blocked beam
    Case "100%"   ' Empty part position #0
        MoveTo 0
    Case Else     ' Extract sample part number
        MoveTo Val(Right$(ScanPart$(), 2)
    End Select
End Sub

Sub MoveTo(ByVal PartID%)
    ' Coordinates provided by PIKE (see below)
End Sub

In the unlikely event of a computer crash during an extended data collection, Auto Backup enables Crash Recovery whereby scanning resumes at the failure point. Contact us for an online demonstration.

May 24    PIKE Autosampler Support

The following MEASURE BASIC code was tested with a PIKE Technologies autosampler mounted in a PE Lambda 1050.  Interestingly, the instrument was 3500 miles from Princeton and accessed via FlexiHub. After installing PIKE USB drivers on our computer (OPTIPLEX390) and connecting to the remote USB port the autosampler acted as if attached locally.

PIKE autosamplers are available for FilmStar-supported PerkinElmer Lambda and Agilent Cary. In this case autosampler position is specified by radius (mm) and angle theta (deg). Other PIKE autosamplers are treated similarly via EXE files (in this case MoveToPoint.exe and Position.exe), easily tested in a Command window. Simple handshaking via position.txt ensures that the autosampler has arrived at the correct position.

Option Explicit
Const Path$ = "C:\PIKE Technologies\AutoPro6\"

Sub Main
    MoveTo 3 ' Test case
    ' Scan
    ' Save data in Excel or wherever
End Sub

Sub MoveTo(ByVal PartID%)
    Select Case PartID  ' Coordinates supplied by PIKE
    Case 1
        MoveIt 0, 0
    Case 2 
        MoveIt 40, 90
    Case 3
        MoveIt 40, 180
    ' ... ETC ...
    End Select
End Sub

Sub MoveIt(ByVal Radius!, ByVal Theta!)
    Dim c$, s$, k&, iTry%
    c$ = " " & CStr(Radius) & ", " & CStr(Theta)
    k = Shell(Path$ & "CommandLine\MOVETOPOINT " & Devc$ & c$)' Move
        Wait .5 ' Delay
        k = Shell(Path$ & "CommandLine\POSITION " & Devc$) ' Interrogate
        Open Path$ & "PositionOutput\position.txt" For Input As #1
        Line Input #1, s$ ' Coordinates
        Close #1
        iTry = iTry + 1
        If iTry > 20 Then ' Allowing 10 seconds for operation
            MsgBox "Uh oh...problem", vbCritical, "PIKE Accessory"
        End If
    Loop Until InStr(Replace(c$, " ",""), s$) > 0
    Debug.Print "Got there!"  ' Bravo
End Sub

Need help implementing automation procedures? Contact FTG Software for assistance. The code shown above will also work in Excel. European users should set "." as decimal point and "," as separator.

June 6    Design Value List in Spectra Database

Using the FileMaker Pro FilmStar Database? You need to include design information (typically FILM Archive file names) when saving spectra. How else can you compare spectra corresponding to the same designs? Typing descriptions is error-prone, so a drop-down list is required. While the list can be typed (also error-prone) in the Spectra database, it's much better to utilize values already in your Design database. This is implemented with a Design value list in Spectra.

In the Spectra database, enable layout mode, right click [Coating Type], clicking Select Field to activate the Inspector. In the Inspector Control Style frame (below left), click the Edit button and specify drop-down values from Design_12.fmp (original example provided in FilmStar Database).

Layout mode
Value List Control Style

Specifying Design Value List in the Spectra database

The Design database need not be open when using its value list(s). Editing value lists is simple, but not the best solution since value lists are somewhat inflexible and inconvenient. It's better to have the list in a database table, especially important when there are many designs.

Referring to the Design database, Use values from field  (rather than manually editing value lists) is the recommended method. Create a new table, e.g. Coating Types with at least one field, e.g. Description List as in DesA.fmp12. The table ultimately appears in the SpcA.fmp12 drop-down as shown at the right. The procedure may be confusing at first, so you might want to contact us for an online explanation via Glance. (Be sure to save DesA and SpcA in the same directory.)

The same methods apply to other lists: employees, PO numbers, customers, etc. Those values might be in another FileMaker Pro database (supported by FTG) or in a corporate enterprise database (via ODBC supported by your IT department).

Coating Types in DesA.fmp12

Coating Type drop-down
in SpcA.fmp12

August 1    Metal n,k with Reflectance Data?

A user contacted us hoping that n,k for a semiconductor film on a metal substrate could be determined solely from reflectance measurements. The first task is to compute n,k for the uncoated substrate, typically accomplished with ellipsometry. Can reliable results be obtained with reflectance measurements?

We briefly examined this issue using Gedankenspektrum methods (click here and here). Starting with known n,k we compute spectra and convert to optimization targets (DESIGN) for reverse-engineering by damped least squares. If successful we get back our original n,k.

A minor variation of IndexSolve.bas was utilized (setting Public Const IndexRow = 2 to vary substrate index and deleting or commenting-out SpecTargets False, "T"... since only %R is used). IndexSolve.bas does a wavelength-by-wavelength fitting at multiple angles. [Tutorial: Gedankenspektra for 30 nm Ag can be found here (..\Basic32, ..\Designs, ..\Spectra). Use FILM Archive Ag Solve.faw to solve for n,k and Ag Setup.faw to generate spectra sets.] Users who need help with IndexSolve.bas should contact FTG Software for an online run-through via our Glance facility.

In the work shown below we generated Gedankenspektra at 6 and 60 P/S pol. The method seemed very promising until noise (AddNoise.bas) was added to simulate measurement inaccuracies. This is shown in the INDEX graph below where a noise level of SD = 0.05% resulted in a Solution deviating from the original n,k curve. In the case of zero noise, the Solution overlaps actual n,k values.

How good is the blue (very bad) n,k Solution shown above? As can be seen below, quite good indeed!

Repeating for Ag over the same wavelength range was somewhat encouraging and left for you to try. In that case k values were somewhat impervious to noise, while n values scattered. The need for accurate data at high angles of incidence in problematic. A goniometer-based instrument like Cary UMA or PerkinElmer ARTA probably offers the best chance for success.

The Interactor helps us determine wavelength, angle and polarization settings which might be useful for n,k determination. Use Setup.. Adjust Indices <Ctrl A> to vary index coefficients.

The problem is illustrated below where multiple solutions can hardly be distinguished.

As shown below, hope is provided by P pol reflectance. Varying n,k to match spectra near 75 results in desirable mismatch at smaller angles. While ellipsometers are designed for accuracy at high incident angles, spectrophotometers are generally not. (It seems unlikely that Agilent or PE would guarantee accuracy at 75.) Another complication: in real materials n,k at high angles will differ from n,k at 0.

October 19    Spectra Collector DESIGN Upgrade (Modified 09 May 2017)

The Collector adds a Calculate button enabling DESIGN users to compare measured and calculated spectra over a wide angle range. The button is enabled only when calculating %R or %T.

The DESIGN Spectra Collector does not require measured data. This makes it useful for comparing designs. It is compatible with the Collector in all MEASURE versions.

The same functionality is possible with BASIC, but the Collector is simpler. A major benefit is that Collections are saved as Excel XLS files via File...Save Collection.

As discussed before, <F4> plots spectra in FSPlot as well as on the main screen or Interactor. Shift and Ctrl keys add multiple plot options in FSPlot.

Blue columns indicate calculated data (green columns: measured data; black columns: normalized spectra).

Users lacking FilmStar MEASURE support can import Excel files following the Collector format in which measured (raw) data is given in dark green (0, 128, 0).

November 2    Interactor Custom Plot

A user requested the ability to show averages in an Interactor plot. This is easily accomplished with BASIC macro GetAverage.bas listed below. Copy and save in c:\Winfilm\Basic32. The next step is to specify the macro in the Interactor Automation section.

Specifying automation
macro in the Interactor

0-60 deg x 15 P pol

' GetAverage.bas for FilmStar DESIGN
' Copyright 2016 FTG Software Associates
Option Base 1
Option Explicit
Sub Main
    Dim i%, k%, xDat!(), yDat!(), nDat%, yAve!, ySum!, s$
    If AxesYtype = "R" Then k = 1 Else k = 2
    xDat() = Spectrum_X: yDat() = Spectrum_Y
    nDat = UBound(yDat, 1)
    For i = 1 To nDat
        ySum = ySum + yDat(i, k)
    Next i
    yAve = ySum / nDat ' compute average
    'Display "Average = " & Format$(100* yAve, "0.00") & "%", _
    '  "Interactor", 5000, 3500, "Verdana", 11, False
    s$ = CStr(xDat(1)) & vbTab & CStr(yAve) & vbCrLf & _
      CStr(xDat(nDat)) & vbTab & CStr(yAve) & vbCrLf
    Clipboard s$: DataPaste
End Sub

Uncomment the line Display "Average = "... to display numerical values. Plot doesn't work? One possibility is that Spectra...Format Options is set to paste 0-100% values instead of 0 to 1.0. Just change the setting or set yAve = 100 * ySum / nDat in the compute average line.

November 30    Scan Command in FilmStar Database

A user wants QA technicians to click 'Scan' in the FileMaker FilmStar Database rather than in MEASURE. FileMaker accepts ActiveX commands from MEASURE but cannot send them. So how can we implement a Scan command in FileMaker?

FileMaker does, however, include a DDE Execute command. The required FileMaker Script Workspace setup is displayed here. Service Name is the EXE name; Topic is "Main".

DDE macro command BasRun triggers the same BASIC code typically run from a MEASURE button. This works well, but there is no easy way to disable FileMaker data entry while BASIC code is still running.

QA technicians cannot be permitted to modify the database while BASIC is running. Our 'pretty good' solution is to maximize MEASURE (thus hiding FileMaker) with BASIC MainWindow 2, later restoring with MainWindow 0 as shown below.


MEASURE maximized with BASIC
MainWindow 2 while scanning

Normal windows restored
with BASIC
MainWindow 0

In the above we mentioned a 'pretty good' solution. This can be increased to 'excellent' by eliminating the possibility of manually adjusting or closing the MEASURE window. That might be necessary, for example, if creative QA technicians decide to play games or watch videos while scanning. This feature can be added in a future release.

Why initiate scans in FileMaker? You might want to export scan settings from FileMaker to FilmStar BASIC before scanning. Examples: method file name (*.scw), range settings, graph title, etc. Data transfer can be accomplished with Export Records, saving to a text file that can be opened in BASIC. A FileMaker plug-in such as File Manipulator offers further functionality.

December 8    Organizing Projects in DESIGN

In order to separate coating projects (typically for different customers), DESIGN's Title Bar adds path information. New menu command File.. FILM Archive Path quickly sets Designs, Parameters and Spectra default directories. The n,k Tables path is never modified.

New style Title Bar and commands to quickly change directories

Default displays default FILM Archive path. Click Default to review and reset paths. Change displays the FILM Archive path for the last file opened but is disabled when the current path is also the default path. Click Change to assign default paths to a newly opened FILM Archive path. Click Browse to set a new directory as default path. As there is no New Folder browser option, use Windows Explorer to create directories. Procedures become clearer after a few minutes testing the options.

Users who don't need multiple design directories can check Remove 'Archive Path' in File.. Configuration.. Directories. This deletes the FILM Archive Path menu and restores the original DESIGN Title Bar. Note that Files opened by the Design Recorder are designated by "???" to indicate unknown origin and status of the recorded design. Take care not to overwrite a better design and remember that the Design Recorder is meant for temporary storage and is not intended to replace File.. Save As!!!

Need further options? Advanced users can customize directory operations as in ..Winfilm\Basic32 examples: SetPath.bas (files in single directory), SetPathMulti.bas (different subdirectories), DefPath.bas (default directories). If missing, click here to download a collection of .bas files. Customize the Title Bar with new BASIC Sub SetTitleBar. SetTitleBar without string restores the default Title Bar.
SetTitleBar "Edgerstoune Optics: FILM Archive " & FileName(8) & ".faw"
SetTitleBar ' Blank restores default Title Bar

Please contact FTG Software for suggestions and assistance with other possibilities, such as transferring path settings from the (FileMaker Pro) FilmStar Database.

Back to Technical Issues