Problem | Solution |
---|---|
Stage locked errors when trying to load/unload or move the stage | Unlock the stage using the command unlock . If that fails, try pg_restart |
Can’t calculate substrate error when starting an aligned write | Double-check that you’re putting your global alignment marks in the command line in the same order that they’re defined in CJOB. They need to be listed left to right. |
Too many/too few arguments in command line error when trying to start write | Make sure each coordinate in the command line is an XY pair separated by a comma and no spaces (e.g. 81212,12741 ). If running an aligned write, make sure global alignment marks are defined in the Exposure object in CJOB (they need to be defined here or the job won't be considered an aligned write). |
Random/nonsensical errors when trying to execute a job | Check for spaces and special characters (/, ~, &, *, etc) in your CJOB file, particularly in the object names. This can cause all kinds of seemingly-random weirdness. Also double-check that your command line arguments are all correct. |
Job finds global alignment marks successfully, but then crashes immediately after | The angular correction needed by the system exceeds its maximum of 0.2 degrees. Take the holder out and double-check the rotational adjustment in the alignment microscope. You should see less than 3.5 microns of translation in one axis per 1 mm of translation in the other. You may also have your alignment marks listed out of order; see “can’t calculate substrate” error above |
Can’t reopen a .cjob file with CJOB | There’s probably a space in one of your object names. Open the .cjob file as a text file by typing gedit <filename> , find the offending object name in the XML, and remove the space. It should work now. Alternately it may be easier to just recreate the job from scratch. |
CJOB won’t display a newly-defined alignment mark in the list of available marks | Close CJOB, run the command $pg save , and reopen it. You should be able to see the new mark definition now. |
Write is crashing due to height-measurement errors at the beginning (asterisks in the 9-point height map) | Make sure your starting coordinate(s) put you over your sample and that the pattern you're trying to write isn't larger than your sample area. If this is fine, previous patterning and/or roughness could be confusing the height meter. Open the job in CJOB, go into the Exposure object, and change the “Height” option from “check” to “none” to disable the initial height check (the height will still be checked in real-time during the write itself). If you're encountering this problem while writing on a transparent substrate, see the transparent substrate guide for solutions. |
Errors when trying to locate calibration mark using pg move mark or mvm |
Rerun the command a few times; sometimes it doesn’t work on the first try if the beam current has just been switched. If it still isn’t finding it, turn on the SEM and make sure you’re over the mark and it’s visible. If you aren’t, the wrong holder is probably selected. If you are, try switching to a lower beam current and running the command again. |
Random issues with CSEM, CSYS, or pg commands, particularly lock-ups when executing commands. | Restart the software. Open another terminal window (if necessary) and run the pg_restart script. Use the password “beamwriter” if prompted for one. |
CSEM keeps coming up in “read-only” mode (no SEM or stage movement controls) | Use the desktop icon or csem_restart command to kill all running CSEM processes and restart CSEM. |
Buttons in CSEM aren't responding; error messages displayed in the bottom of the window | Use the desktop icon or csem_restart command to kill all running CSEM processes and restart CSEM. |
%ECC_W_MONSCUR – STAGE motor control current
%ENG_E_SHMECA – Substrate mechanical handling error
ohno
to get his contact info) if it isn't the middle of the night. If it is the middle of the night, send him an email explaining as much about what led to the problem as you know, turn on the red light on the operator desk, and mark the system down in Badger.
Under no circumstances should you do any of the following:
pg_restart
, $pg cold
, or $pg hot
. Restarting the software will home the stage, which will burn out the stage motors if the stage is stuck. See above
%EHT_E_HBTRIP - HotBox? has tripped out
%EHT_E_HTOFF - High Voltage is switched off
ohno
command to get contact information) during normal hours or an email in the middle of the night. Mark the system down in Badger and turn on the red light by the operator desk, as the high-voltage supply needs to be reset and the gun needs to be run up and stabilized, a process that generally takes about 8 hours.
%ECC_E_BCC2ST – C2 setpoint differs from actual current
%ECC_E_BCFLST – FL setpoint differs from actual current
pg move mark
etc). Sometimes this can happen even when the mark is clearly visible in SEM view in CSEM.
%ECC_E_NOMARK – Marker is not present in the search area
%ENG_E_NOIRED – Available filters not sufficient for noise reduction
%ECC_E_VICOBA -- Move marker: video level contrast too bad
%ECC_E_MMLEOT -- Move marker: measured marker video level not within tolerance
%ECC_E_MBLEOT -- Move marker: measured background video level not within tolerance
ENG_E_NOIRED
(Available filters etc) error isn’t fatal; the system is still finding your mark if no other errors appear. The signal-to-noise ratio is lower than ideal though; consider changing the height or material of your marks to speed up detection and improve accuracy.pg move mark
to drive to the calibration mark (a 20x20um positive rectangle) and turn the SEM on.pg move position
(shortcuts are mvrl/mvab
) command and switching to SEM mode. Your alignment mark should be approximately in the center of the field. If it is not, move the stage by double-clicking on the mark until it is centered and read the new coordinates from the lower-right corner of the CSEM window. Be sure to turn on the crosshairs in CSEM (the crosshair button on the left of the window), as they will make this process much easier. findmark <markname>
, which will try to find the mark <markname>
at the current stage location. If it doesn’t return an error, jot down the stage coordinates as your new mark location. If you do get an error, go back to SEM mode and keep trying to center it. Crosses in particular are very sensitive to off-center starting positions, so some tweaking may be required.%ENG_E_NOIRED
errors are appearing during the mark-location procedure, try turning up the beam current. A current of at least 5-10 nA is usually reliable for mark location; lower currents can leave the locator algorithm with a signal-to-noise ratio that’s too low to work with (usually indicated by %ENG_E_NOIRED
errors). Once you’ve located the mark at the higher current, make sure you switch the current to whatever you’ll be using in your job and find it again!ENG_E_NOIRED
error codes while trying to find the mark, the mark contrast may be too low for the locator algorithm to work. Modifying the algorithm’s threshold settings may help you work around this.hicontrast <markname>
will set contra
to 99 and blvtol/mlvtol
to 170 for the given mark. This will often solve contrast-related problems without the need to play around with individual parametershicontrast
shortcut doesn't help, you can try manually modifying the mark-finder parameters. The table below describes the ones you care about and suggests possible changes: contra | Video contrast. change from 75 (default) to 99. Increase this if you get ECC_E_VICOBA errors. |
mlvtol | Marker-level tolerance. Change from 40 (default) up to 200. Increase this one if you're seeing ECC_E_MMLEOT errors. Note that increasing this will improve the likelihood of finding your mark, but also decrease alignment precision, so don’t bring it up any higher than you have to. |
blvtol | Black-level tolerance. Change from 40 (default) up to 200. Increase if you're getting ECC_E_MBLEOT error codes.The caveat for modifying mlvtol applies here too. |
eplmin | Edge-positive video level measurement minimum. Reduce from 300 (default) to 200. This will decrease precision but increase noise-immunity. |
eplmax | Edge-positive video level measurement maximum. Increase from 1000 (default) to 1020. See eplmin for details. |
israd | Marker search radius. Decrease if mark-finding is taking too long, increase if marks are consistently falling outside the search radius (ECC_E_NOMARK errors). Values for israd are in microns. |
pg marker set <markname> <parameter> <value>
, where <markname>
is the name of the mark definition you’re using, <parameter>
is the setting you’re modifying, and <value>
is the new value of that setting. pg info marker <markname> /test=par
or the shortcut marktable <markname>
, where <markname>
is the name of the mark definition. $pg save
command to save the values before searching for the mark again.<markname>
(or the shortcut resetcontrast <markname>
). If you modify the values for a mark you didn’t create yourself, please reset them when you’re done. JOY
(if the JOY
mark is missing, create it with any set of parameters you want, they don’t matter). When the system tries to find a JOY
mark, it will stop and prompt the user to continue instead of running the usual detection routine. When it stops, turn on the SEM and manually center the mark in the field by double-clicking. Once the mark is centered, go back to the terminal window and hit Enter to continue. The system will use the current stage position (which you centered on the mark with the SEM) as the mark location and continue. JOY
mark. Essentially, the center of the SEM-view window isn’t the true field center. You can correct this by doing a pg move mark
command to center the field on the calibration mark, switching to SEM mode in CSEM, clicking “calibrate center,” and dragging the crosshair so it’s centered on the calibration mark. Alternately, running the joyplus
command before starting your write will automatically apply the same correction. JOY
mark is substantially less accurate than the automated alignment. Depending on how good your eyes are, expect to get 100-500 nm overlay accuracy at best. Again, it’s a last-resort solution when the alternative is being unable to do the write at all. pg move marker 0,0 <markname> --rel
(shortcut: findmark <markname>
). If it finds the mark, it will return to the prompt without an error; otherwise you’ll see the usual error codes.