Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
For a description of what the team at CMU is working on in Spring 2025, check out this document!
Goals of this page:
Not to try and cover theory or industry standard, but to break the problem into first principles just enough to give context to the quantifiable parameters
Also an opportunity to frame the problem wide enough to set the tone of thinking of these machines from the ground up (aligned with goal, don't think of industry as immutable)
Exhaustive list of industry methods and examples
Quantifiable end user parameters with descriptions + standardized tests
A photolithography stepper is a machine that exposes a pattern of light onto a layer of photoresist chemical on the wafer, then ‘steps’ over to the next pattern. Before each exposure, it must align with previous patterns on the wafer so that each layer of the device is in the correct position relative to the previous. The accuracy with which it can do this is called “alignment accuracy”. Alignment accuracy and optical resolution are the two most important metrics of a stepper’s performance.
There are 2 main components of our stepper: the light source and optics, and then the mechanical micropositioning stage that moves the chip itself. Alignment accuracy is a function of both the mechanical micropositioning stage and the reliability of the projector’s optomechanical components.
Commercial lithography machines use photomasks to create the image, typically made of chrome on glass. Instead, our Maskless Photolithography Stepper uses a DLP projector to create a pattern. This allows us to change patterns instantly, opening the option up for advanced techniques like tiling (making a circuit larger than one exposure field).
Patterning Machine Specifications:
The goal function of the Hacker Fab is to never debug the same thing twice.
We operate under different constraints from the semiconductor fab industry. This allows us to curb a lot of complexity.
Low cost
Create the simplest designs possible
Increase reliability
Reduce manufacturing complexity
Minimal danger
Small size
No cleanroom
Highly sourcable materials
High literacy in understanding working principles of tools and processes
End-to-end custom - from sand to NAND
Make the wafers
Design the tools
Design the processes
Design the IC
Package the chip
Reuse of existing fab equipment
Who we are looking for, how we grow, how to get support
Central to the Hacker Fab is fast turnaround hardware development - it’s in the name. This means extremely fast hardware prototyping, and with that comes the need for iteration. The careful design constraints placed on all projects and focus on documentation enables someone else to iterate on anything developed in the Hacker Fab. Improvement to a V1, V2, Vn of a design means
Directly improving upon a tool’s functionality
Precision
Reliability
Throughput
New features
Safety
But there are other equally important ways to improve a design. Every tool version should try to be:
Easier to manufacture than the last
Reduce number of tools required to manufacture
Reduce # of vendors, lead time, BOM length
Better documented than the last
Tool specs as close to first principles as possible
Every tool spec should have a standardized test for others to verify performance
Explain working principles to the detail of variables we can control (no more, no less). Referenced sources.
More “closed-loop” than the last
In-situ sensors
Calibration software should be more generalizable (“now you can use any camera…any piezo with draw distance in range X to Y…”)
TBD
The SW needed for this project can be broken down into the following subsections.
KLayout
OpenROAD
Computer-Aided Manufacturing software translates a 3D design into G-code instructions that a CNC machine (in this case laser burner) can understand, essentially "slicing" the design into smaller, machinable steps.
This SW takes a file with the desired mask (Pattern Capture Output) as an input and translates it into a set of machine instructions.
This software runs on the micro-controller that drives all the HW. It is responsible for taking sensor inputs and driving all output motors and lasers. This device also has an interface which can transmit all the data to/from the user.
This software is responsible for general control of the laser burner from the PC side.
This SW is responsible for the user facing interface which gives the user full control of the burner.
uniformity
deposition rate
deposition precision (between runs)
etch rate
selectivity
uniformity
anisotropy
effect on photoresist?
Semiconductor research has been around for decades, which means there are many people who can explain concepts better than we can. This is a collection of our favorite resources we've found.
Simple MOSFET intro video (5 min)
Sam’s Youtube video overview (5 min)
Nearly identical to what we do
What our work was based on
Device Physics Overview (30 min)
Electrons, bandgap, etc.
Before we had transistors, we had lightbulbs (18 min)
Then we moved to silicon
This stuff is regularly communicated as complex magic, and requires the permission of billionaires to work on it. We are starting from 1960’s level complexity and working our way up to modern complexity.
The creation of the blue LED (30 min)
Extremely well told story of the man who figured out how to manufacture blue LEDs
We are not the first people to claim that innovation in the semiconductor industry requires intimate knowledge of the fabrication tools
Fabublox (∞)
A fantastic tool being developed by friends at MIT. Overview of many processes, with each being a linear recipe
Make an account, and go to “fabubase” in menu
Check out our Hacker fab process, as well as others
Go through and try to recreate our process from scratch without cheating. See how far you get, and write down things that don’t make sense (1 hour)
How do these things even make computers?
Making logic gates from transistors (13 min)
Transistor → logic gates → basic logic circuitry (timers, counters, latches, shift registers, etc.) → architecture abstractions that people made up over decades → CPU
TinyTapeout Video Example: Making ASIC
Application Specific Integrated Circuits
Below: ideal transistor IV curve vs. our first curves.
These both exhibit transistor-like characteristics. Looking back at the Veritasium video about how the first computers were made with lightbulbs - a transistor really boils down to a repeatable switching action. When we look at our curve on the right, we see multiple issues:
The curves don’t go through the origin, they start with a voltage offset
This means that when we apply a voltage to the gate (open the valve to allow current through), current doesn’t run through the drain to the source until we apply ~3V to the drain/source connection.
The lines are all squiggly?
So we try to debug this by finding literature that debugged something similar, or often we simply design and run more experiments. Skim through pages 172-176 (bottom corner number, not pdf page number) of this document. Their transistors have very similar issues to ours. When you read this document, the answers are behind a huge layer of jargon and acronyms that make the barrier to entry for understanding extremely high.
In reality here is what it is saying:
Our source-drain is dominated by an aluminum metal-to-silicon Schottky junction instead of doping
Put simply, we just directly connected an electrical characteristic (IV curve) to a physical process parameter. We now have an exact experiment to try over the next week:
Less metal annealing
More Si02 etch before metal deposition (to ensure metal contacts Si instead of SiO2)
Right now it takes about 8 hours of work + waiting overnight to turn a blank wafer into one with NMOS transistors on it. Then we go to the probe station, test it, organize the data, look at the graphs, and think. That’s how long it takes to verify each new experiment. With each machine, script, or management tool we create, we push to significantly decrease this iteration cycle.
We've only made NMOS devices so far, but there are so many more things to be made. That means our process data corresponds to NMOS only, but most process steps can be generalized to any process if documented properly.
Each unique device can also use different materials entirely, which requires different machines.
What metal are we depositing?
What does the doping profile look like?
etc.
Last Updated April 2024
the first open-source semiconductor fab.
Our Goals:
Make integrated circuit prototyping as fast as 3D printing
Make DIY version of every nanofabrication tool
Get there with collaborative open source hardware
Right now we use factories and tools that are optimized to manufacture at scale to do our integrated circuit prototyping. There does not exist a set of machines that enable rapid tape-out of semiconductor devices on a budget, nor are there sufficient resources to make/modify fab tools from the ground up.
Nanofabrication is often communicated as complex magic, where every machine is immutable. We believe that innovation in the industry requires a thorough understanding of these machines from first principles, which will lead us to simpler solutions. Even on machines and processes of magnitudes less complexity than modern industry, there are designs worth sharing.
The use of low-cost, abundant, and fast-turn-around hardware serves a larger purpose than making the fab cheaper. These design constraints are what enable others to recreate, modify, and contribute to our work. The simpler the better.
You don't need prior nanofabrication experience to create meaningful contributions.
You do need to read the Required Reading.
You don't need to recreate the entire fab to contribute, although you can.
We communicate entirely over Discord.
This page is a home for all shared documentation. There are enough resources here to turn an empty room into one that fabricates simple IC's in a matter of months.
Many pages are works-in-progress. It is natural for individual contributors' work-in-progress notes to exist on google drive, notion, etc. Links to these exist at the top of each page, however these notes move to Gitbook as soon as possible.
Any contributor can submit change requests with a free Gitbook account. All of this is on Github, but formatted nicely here on Gitbook. You can contribute directly through Github as well.
For the most up-to-date status on everything, join the Discord.
Here is a list of all the tools built or bought necessary to make our devices.
Every build contains:
BOM
Links to Design Files
Links to Code
First Principles Understanding of Machine Design (WIP)
The Hacker Fab was inspired by Sam Zeloof.
The Hacker Fab was started by Elio Bourcart, Alexander Hakim, and Sam Zeloof.
The first Hacker Fab was opened at Carnegie Mellon University.
The Hacker Fab is run entirely by independent contributors.
Strategies for sourcing parts effectively, and a constantly updated list of part suppliers
To do, for now search our Purchase Tracker
This is the project page for a lithography system based on repurposing Blu-Ray drives. The initial goal is to reach a feature size of at least 500nm (2x the Blu-ray laser spot size). As a stretch goal, we would like to also use the sled and spindle motors as high speed nano-positioners and to spin coat and cure photo-resin.
Right now, the first project for this technology (Lithography Spinner V1) is in the research/idea stage. See work in progress page for details on upcoming tasks if you want to contribute.
Our design was based on Sam Zeloof and Huygens Optics’ versions of this tool. Sam repurposed a vertical microscope for structure and laid out optics experimentally with a 5x reduction objective, whereas Huygens built his own horizontal structure, and used more involved optics with a 20x reduction. We took the middle road by combining a scratch built structure with ThorLabs optical and optomechanical components to ensure alignment. We use a 10x objective for demagnification. We also opted for a different mechanical XYZ stage.
Cost
$5,820.10
Approximate Work Time
5 hours
Optical resolution
~10 µm
Alignment accuracy
5 µm
Litho Stepper Software
Water jet capable of cutting ¼” aluminum plate
Manual milling machine and small end mill
Drill
Screwdriver and metric allen key sets
Glass scribe (tungsten carbide or diamond)
3+ large C clamps or similar.
Link to spreadsheet - edit sheet then update or copy table here
Total Cost: $5,820.10
Name
QTY
Cost per unit - USD
Total cost - USD
Purchasing Link
ViewSonic PX-701 4k Projector
1
$909.99
$909.99
Multiple Optical Components
1
$3,796.97
$3,796.97
¼” x 12” x 12” 6061 Aluminum plate
1
$35.61
$35.61
¼” x 6” x 18” 6061 Aluminum plate
1
$40.54
$40.54
Amscope Camera MU2003-BI
1
$841.99
$841.99
Manual XYZR Stage
1
$195.00
$195.00
Screws: mostly M3, M4
$0
$0
The complete list of ThorLabs parts is in the second sheet in the Stepper BOM. To order all of these at once, download the third sheet as a CSV and upload it to ThorLabs Upload Cart.
File Name w/ link
Description
QTY
Tools Used
Water jet from ¼” x 6” x 18” aluminum plate. Serves as a flat surface on which everything is mounted.
1
Water jet
Water jet from ¼” x 12” x 12” aluminum plate. Holds the projector via vertically slotted holes. Connects to the base, triangle bracket, and support arm.
1
Water jet
Water jet from ¼” x 12” x 12” aluminum plate. Adds stiffness between base and back plate.
1
Water jet
Water jet from ¼” x 12” x 12” aluminum plate. Connects back plate to the optics.
1
Water jet
Water jet from ¼” x 12” x 12” aluminum plate. Connect the support arm to the optics.
1
Water jet
Machined from 1 ¼” aluminum angle iron.
1
Manual milling machine
Machined from 1 ¼” aluminum angle iron.
2
Manual milling machine
Machined from 1 ¼” aluminum angle iron.
Use an ⅛” end mill for the slot.
1
Manual milling machine
3D printed part for connecting the optics to the projector. Not load-bearing, mainly serves to dampen vibrations and aid alignment.
1
3D printer
1
1
Most of the water jet components can be cut from a single 12” square aluminum plate. Water jet layout.SLDASM provides the pattern for this. The base needs a separate 18”x6” plate.
The following steps do not need to be completed in order, except for the last three sections (assembling the structure, stepper, and alignment).
Export “Water jet layout.sldasm” and “base.sldprt” to the appropriate 2D vector format for your water jet (likely .DXF).
Water jet these two files, following the instructions for your specific machine. A CNC router may also work.
Be aware that the “base” part takes up the full 6”x18” plate, so no need to cut the outside edges. You may need to adjust the kerf settings so your water jet cuts on the inside of each hole.
Countersink all the holes on the bottom of the base plate.
3D print the projector coupler with default settings.
Cut the angle iron into three 80 mm long pieces and one 60 mm long piece using a saw.
Cut the slot in the adjustable bracket using a 4mm or slightly larger endmill (3/16” works). None of the dimensions of the slot need to be precise. The holes in all the brackets will be drilled during the assembly process.
Open “_optics_assem.sldasm” for reference during assembly. The cutaway view may be helpful.
Unscrew the set screw on the cage cube to remove the filter mount. Insert the beamsplitter into the mount so that the text on the beamsplitter reads forwards when viewed from the projector.
Bolt the two filter holders together using four M3x20 or similar screws and washers.
Use SM1 locking rings to mount the UV bandpass and red longpass filters in the two filter holders. Make sure the filters are inserted in the correct direction. Label the filter holders “red” and “UV”.
Screw together the rest of the optics, paying attention to the direction of the tube lenses.
Use calipers to adjust the length of the vertical SM2 tube so that the distance between the tube lens and the camera flange is exactly 134.3 mm. This value is calculated by subtracting the standard C-mount flange focal distance (17.526 mm) from the TTL-200A tube lens’ working distance (151.8 mm).
Unscrew all available philips screws in the projector.
Use a small flathead screwdriver to pry open and remove the top projector housing. This takes some rough handling.
Remove the front foot by removing the metal pin as shown below, then unscrewing the foot out while pushing the tabs in.
Unscrew the three screws that hold the stock lens assembly to the projector and remove the lens.
Remove the plastic half-lens cover and cut the top housing as shown above.
Unscrew and detach the lamp assembly (screw circled).
Cut the Thorlabs UV-pass hot mirror to the same width as the stock hot mirror.
Use a scribe to mark the correct width on both sides of the UV-pass hot mirror.
Use a straightedge to scribe a deep groove in the hot mirror. Use a lot of force and several passes.
Apply bending pressure to the hot mirror with the groove facing away from you until it breaks.
The following steps will benefit from having two or more helpers. In the images below, the red arrows indicate applied pressure for ensuring parts are correctly mated. Green arrows indicate clamps. Yellow dots indicate tightened fasteners. For all drilling steps use the largest drill bit available that freely fits inside the holes for the brackets.
Put the projector back plate and triangle bracket into their slots in the base. Apply pressure as shown so that both parts are flat against the base and in the corner of their grooves.
While maintaining pressure, place one 80mm bracket between the triangle and the back plate and clamp it to the triangle.
With the clamp still attached, drill through the bracket using the holes in the triangle for alignment. Use M5 nuts and bolts to fasten the two parts together. Put the nuts on the outside to avoid interference with the projector.
Return the parts to their previous position, apply pressure, and clamp the bracket to the back plate.
With the parts still clamped, drill two holes and fasten. Depending on the size of your drill, it may be necessary to unbolt the triangle first.
Clamp the other 80 mm bracket to the back plate. Clamp the 60 mm bracket to the triangle. Ensure the brackets lay flush on the base.
Drill into the brackets using the holes in the back plate and triangle for alignment. Fasten with any protruding screws on the outside to avoid interfering with the projector.
Place the assembly back into the grooves on the base, again pushing them into the corner. Clamp both brackets to the base.
Flip the base upside down and use the holes on the bottom to drill into the brackets.
Attach all three brackets and plates.
Use three M4 screws to attach the support arm. Use a straightedge to ensure that the top edges of the support arm and back plate are parallel.
Clamp and drill holes in the adjustable bracket. Make sure the top surface of the bracket is flush with the support arm.
Structure is complete and ready for further assembly.
Screw the manual XYZR stage into the base plate using countersunk screws.
Screw the 3D printed projector coupler into the projector with three M3x? screws.
Push the optics onto the projector coupler. You may need to temporarily detach the vertical parts of the optics assembly. This part was designed iteratively and may not fit perfectly because the true position of the DLP chip inside the projector is unknown. In that case, it can be modified or removed as needed.
Attach the cube adjuster to the cage cube with 4-40 screws. Attach the cube adjuster to the adjustable bracket with M3 screws and washers on both sides.
Screw the camera onto the C-mount threads at the top of the optics.
Go to this link and install the correct Amscope software for the camera MU2003-BI and your operating system.
Connect the camera to your computer with a USB 3.0 cable.
Connect the projector to your computing using an HDMI cable.
Put in the UV filter. Remove the red filter.
Turn on the projector.
Open AmScope. Select the camera in “camera list”. If everything is working an image should appear (might be black).
Place a flat mirror-like object on the stage. This can be a bare silicon chip.
Adjust the height of the microscope objective to approximately 16 mm.
Focus the image using the Z-axis on the stage. You should see your projected screen. Try projecting some patterns to test the focus.
Adjust the lens tube coupler so that the projected image is square inside the camera frame.
Default configuration Without objective
Unscrew and remove the microscope objective. You may still see an image. This is because if the two tube lenses are in the correct positions they will perfectly focus the collimated light between them. We will use this to our advantage by translating the entire optical assembly towards/away from the projector until the image is focused. When this step is complete, we know that the first tube lens is 151.8 mm from the DLP chip.
We can also use the no-objective configuration to check the stage’s orthogonality relative to the vertical axis of the optics. When aligned, the image will be centered in the camera frame. Any offset (shown below) can be fixed by adjusting the structure in the angles labeled A and B above. This correction fixes the planarity of the focal plane, visible in the images below. Rotation in A moves the image vertically and rotation in B moves the image horizontally in the camera frame.
To add: details about how to mechanically execute alignment, including shims.
No objective, before alignment
With objective, before alignment. Non-uniform focus is apparent in the top left corner.
No objective, after alignment. The projected image (purple) is centered in the camera frame.
With objective, after alignment. Focus is much more uniform.
Demonstrate the operation of the hardware and characterize its performance for a specific application.
Highlight a relevant use case.
If possible, characterize performance of the hardware over operational parameters.
Create a bulleted list describing the capabilities (and limitations) of the hardware. For example, load and operation time, spin speed, coefficient of variation, accuracy, precision, etc
Wear UV-blocking glasses whenever light leakage from the projector is possible.
The Lithography Spinner V1 plans to use the Blu-Ray disc assembly from a Play Station 5 (KEM-497AAA) to drive the whole system. They are readily available and can be found for $30-$70 in most places.
Typically a single IC is used to drive these modules but most vendors wont sell chips to individuals. So the plan is to design a discrete controller board to manage all the HW and write our own controller SW.
Want to work on something? Plan a task add your name next to it!
Download Klayout from their websites and follow the instructions to install the software
After it is successfully installed, open the Klayout editor
To create a new layout File>>New Layout
Set the initial layer(s) that you need. The current hacker fab process would require 5 layers which are substrate, poly, active, contact, and aluminum. This is just for getting started, you can always add new layers later if you need to do so.
The layers will be shown in the upper right corner.
Go to View>>Layer Toolbox to open the layer toolbox so that you can adjust the order of the layers and the texture of the layers based on your preference.
Double-click the layer to hide it. If you are drawing on a hidden layer, the following tip will show up.
To create a new layer, go to Edit>>Layer>>New Layer
Scroll your mouse to adjust the size of the grid
The grid can also be hidden through View>>Show Grid. When you need to export the masks as screenshots, the mask needs to be hidden.
Klayout has the following tools to draw the shapes. Press “shift” to draw straight lines.
Draw the rough shape of an object then adjust it to be the exact size by pressing “Q” to edit its property.
Mask Exporting (method 1):
Go to Display>>Zoom Fit to maximize the size of the mask on the screenshot
Rename and sort the order of the layers according to the order of the fabrication steps. In this case, the easiest way is to sort them by name (0:substrate, 1:poly gate, 2:active layer, 3:contact hole, 4:aluminum)
To make the masks compatible with the lithography stepper, adjust the size of the substrate layer (layer 0 in this case) to be proportional to its resolution (3840x2160). In this set of masks, the size of the substrate layer is set to be 384x216. Under this setting, the actual size of the pattern coming from the stepper is 2.5 times the designed size.
Adjust the color and texture of the mask to be blue/red/black accordingly to make them compatible with the red focusing and UV focusing.
Hide or show certain layers based on the property of the mask and take screenshots via File>>Screenshot and save the mask.
Corp the screenshots since the exported screenshot would normally have white sides.
Mask Exporting (method 2):
Set up steps are the same as Step 10 a. to c. steps.
Go to Macros>>Macro Development to write Maros in Klayout
Select “Python” and change the Macro Template to “Plain Python file”
Paste the following code into the Python file you just created. 1
Change the path to the folder where you want your images to be saved. Note that if the name of your folder or file starts with a number, it will give you the following error message.
The .png file of your mask will be saved in black and white. Be sure to adjust the color and texture of the mask to be blue/red/black accordingly to make them compatible with the red focusing and UV focusing.
Reference:
Appendix 1. Klayout user guides
Klayout user manual from their websites:
Shorter one for getting started with basic functions:
Appendix 2. Masks for an NMOS enhancement load inverter
Here is a of the most recent spin coater V1 build at CMU. More build info to come soon!
Collect all necessary measurements of the current spin-coater to create the new 3D model.
Finalize an updated 3D model that includes the servo mount and any necessary adjustments to the lid design.
Order required components, including a servo motor, necessary mounting brackets, and plastic material for a redesigned lid.
Cut and prepare the new lid, ensuring proper fit and clearance for rotation
Assemble all components and build the initial prototype.
Conduct preliminary functionality tests, focusing on servo movement and integration with the claw mechanism.
Optimize servo rotation angles and positioning to maximize clearance while minimizing occupied space.
Conduct final system tests to verify smooth automation and reliable lid operation.
Implement necessary refinements and finalize the design for long-term use.
List of improvements over
Only requires a 3D printer (no machining)
Only requires vacuum pump 1/5th the size
1/2 the height
Easier to assemble
More reliable excess liquid collection
Easier cleaning
Less motor stalling from dried residue
Less residue on window for better visibility
Better user interface
Replace touchscreen with potentiometers
Put power button on top so entire operation with 1 hand is possible
Top swinging window becomes flush with side wall and snaps into place
After purchasing and receiving all parts outlined in the , follow the step-by-step process to assemble the vacuum chamber.
(i) Wrap an O-ring around each plate to ensure the chamber has a tight vacuum seal.
(ii) Screw in each plate with 8 bolts into the frame as shown in the following image.
Note: Plan where you want each plate to be (i.e. top, bottom, side) depending on your setup
Each opening must be covered and sealed for the vacuum to exist. Therefore, each opening needs a feedthrough in it or a blank flange to cover it. Ensure that each part has the correct dimension to properly fit in its corresponding port.
(i) Pair up the feedthrough/flange with its matching O-ring and clamp.
(ii) Layer the parts in the following order. Starting from the bottom closest to the plate place the O-ring, flange/feedthrough, and clamp. Then attach all necessary screws tightly. Repeat this process for all openings.
(i) Screw in the hinge into two adjacent plates where you want the door to be.
(ii) Attach knobs on opposite side of hinge to open and close the door securely.
(iii) Attach feet to the bottom of the chamber to minimize vibration.
Connect the turbo pump (Hi-Cube 80) to the KF-40 plate using the corresponding KF-40 flange and O-ring. Since the turbo pump has a lip that makes it difficult to tighten the screws, we recommend using hex shaped 10-32 x 5/8" screws and tightening with a wrench.
The Pfeiffer MPT 200 Gauge has a KF-25 connection port. To optimize the 6 plates we chose, an adapter from KF-25 to KF-16 is needed to connect the pressure gauge to the vacuum chamber. Attach using a KF-16 flange to the plate and a KF-25 clamp to connect the adapter to the pressure gauge.
Heating the vacuum chamber is necessary for two reasons. First, high temperatures of approximately 1200˚C are needed to evaporate the aluminum and perform the thermal evaporation process. Second, heating the chamber allows it to bakeout, meaning that the water trapped inside evaporates allowing the vacuum to achieve a lower pressure.
Our setup consists of two parts: the crucible and the substrate heater.
The crucible is comprised of the following parts:
Next, connect a power supply to the external end of the power feedthroughs to heat up the crucible.
Finally, attach the thermal breakout board and arduino to the thermocouple to read the temperature values.
If you already have a stepper built and you're looking for information on how to operate the tool, check out our !
Our design was based on and ’ versions of this tool, which is essentially a projector connected to a microscope. We use a 10x objective for demagnification and a mechanical XYZ stage for positioning.
Stepper version 2 has greatly improved mechanical performance over V1 while using the same DLP chip from Texas Instruments. Several factors led to this improvement:
Instead of an off the shelf projector with a flimsy plastic housing, we switched to the . This allows for a more robust physical connection to the projector housing, thus eliminating vibrations. It also has much better documentation.
By swapping to a finite conjugate microscope objective, the optical path length is reduced from ~250 to 160 mm. This reduces the moment of inertia of the optics subassembly, therefore also reducing vibration.
Swapping to LEDs instead of the broad spectrum mercury lamp removes the need to constantly swap filters, which introduced random perturbations from touching the optics. We replaced the stock blue LED with a 410 nm LED mounted on a custom PCB. The PCB design files can be found .
Mounting the projector horizontally means less structure is needed.
M3 and M4 taps
3D printer
Pick-and-place machine
Reflow oven
Solder paste (preferably a syringe)
Calipers
Total Cost: $3,062.28 (doesn't include computer and peripherals)
*Upload this CSV file to Thorlabs for all the optomechanical parts + beamsplitter.
Note: the OnShape folder is organized poorly because it was our first time using it. Won't happen again, we promise!
Provide detailed, step-by-step construction instructions for the submitted hardware:
Include all necessary information for reproducing it.
Explain and (when possible) characterize design decisions. Include any design alternatives you created.
Use visual instructions such as schematics, images and videos.
Clearly reference design files and component parts described in the Design file summary and the Bill of materials summary
Highlight any potential safety concerns.
Tips and tricks to simplify the assembly process
Possible errors that might occur during assembly and how to rectify them
The Base Plate is 15" long, so double check that your water jet is large enough.
When downloading the Adapter Plate DXF for water jetting, go to Config > Water jet to get the hole sizes right for tapping. The 2.2mm holes are clearance for M2, and the 2.5mm holes are M3 tapped and countersunk.
Adapter plate: This should be manually machineable but we haven't tried.
We used 410 nm UV LEDs on this PCB. We found that two LEDs in series is sufficient to produce enough UV light for patterning. We also found connectors that are compatible with the cable in the TI DLP dev kit.
When assembling the UV LED PCB, it is easiest to use a solder syringe to carefully deposit the paste onto the LED pads and connector pads. If you try to use a stencil mask, it is very easy to smear the paste, so this is not recommended.
Once the paste is applied, you can use a pick and place machine to align the components with their pads. Keep in mind that you need to use a nozzle that is small enough to pick up the LEDs. Finally, you can put the PCB into a reflow oven to solder the components to the board.
You can test by applying 6V (limit to 1A) across the LED leads, but be sure to wear UV-protective glasses, as the LEDs will be bright! Once you are confident that the PCB works, you can now replace the blue LED PCB in the TI DLP dev kit with our new UV LED PCB. To see the UV light, simply look at the leds through your phone's camera, as the sensors see it as purple light.
Taking pictures after every step is key to ensuring you can put it back together properly.
Test the projector before we completely take it apart :)
Unplug all the connectors and remove the top PCB by unscrewing the standoffs.
Remove the side PCB.
Unscrew and remove the shroud by sliding it away from the rest of the optics.
Unscrew and remove the heatsink for the front-most LED, which should be the blue one.
Disconnect the LED PCB from the cable. Heat it slightly on a hot plate or with a hot air gun to soften the adhesive and remove the black plastic housing.
Glue the black plastic piece to the DIY UV LED PCB, connect it to the blue cable, and reattach it to the optics housing. Put the heatsink back as well.
Unscrew the projection lens. That one makes things bigger, but we're trying to make things smaller. It's got to go.
Screw on the adapter plate with four countersunk M2 screws.
Reassemble the rest of the projector, including the shroud and the PCBs.
Start with the beamsplitter cube. Unscrew the set screws, remove the holder, and clip in the beamsplitter. The text ("Thorlabs") should be facing the microscope objective and camera when the holder is reinserted. Keep track of this during assembly and fix it later if necessary.
Assemble the DLP tube. From left to right, the parts in the first picture are 0.3" lens tube (SM1L03), 0.5" lens tube coupler (SM1CPL05), 0.5" adjustable lens tube (SM1V05), and 0.5" lens tube (SM1L05). You may want to remove any internal lens rings. The adjustable lens tube allows axial length adjustment and the coupler allows rotation about the optical axis.
Screw the DLP tube into the beamsplitter cube. The correct orientation is shown above, and the arrow points to the side of the beamsplitter with the text (and optical coating).
Assemble the camera tube, which similarly constructed. The parts are 1" lens tube (SM1L10), 1" lens tube coupler (SM1CPL10), 1" adjustable lens tube (SM1V10), another 1" lens tube (SM1L10), and C-mount SM1 adapter (SM1A9) (last two shown below).
Make sure this camera tube is 82.3 mm long. We calculate this number by subtracting the various component lengths from the standard microscope objective back focal length of 160mm: 160 - 17.5 (c-mount camera) - 22.1 (objective tube) - 38.1 (beamsplitter cube).
Screw on the C-mount SM1 adapter (SM1A9) to the camera and the 1" lens tube. Adjust the lens tube coupler to align the camera with the beamsplitter cube.
Assemble the objective tube, which consists of a 0.5" lens tube (SM1L05), a 0.3" lens tube (SM1L03) an SM1 to RMS adapter (SM1A3), and the microscope objective.
Temporarily loosen the top lens tube coupler in order to finally screw the entire assembly into the projector.
Print all of the parts in the table below. Black PLA is fine. You may need to re-orient them so they print well. The stepper mounts will all need small supports in the motor flange. The X and Y axes need other supports as well.
Unscrew all the, micrometers, L-stops and stage locks from the micrometer stage. Separate the X, Y and Z axes. Throughout the assmebly process we will be replacing the stock screws with ~4mm longer ones as we reattach the various components to the stage. All 3d printed mounts are 4mm thick at the screw holes. Have your M2.5 screw kit handy!
Press fit the three sliding shaft couplers onto the three micrometer handles until the knurled surface is fully covered. They should fit with significant force and maybe gentle hammering. Be careful - the micrometer handles may have different diameters so you may need to modify the CAD and reprint to get a correct fit.
The shaft couplers should slide on the motor shafts with zero slop. Modify dimensions and re-print if this is not the case. Graphite lubricant may help decrese sliding friction, and the fit will get looser after repeated axial movement as the steel deforms and smooths the plastic.
Screw the motor, coupler, and micrometer into the X axis motor mount as shown. Doing this step before attaching to the rest of the stage takes advantage of the slop in the micrometer mounting screws and aids alignment.
Slide the Y axis motor mount onto the Y axis. You will need to remove some screws and push the stage to allow it to slide on.
Attach the motor. Don't screw down the micrometer mount yet.
While pushing the stage so the micrometer isn't touching the stop, fasten the micrometer mount. This avoids preloading the micrometer/motor assembly and improves shaft alignment.
Reattach the X axis micrometer stop as well. You may need to adjust the screw length to get it to fit.
Insert the Z axis motor mount to the Z axis. The easiest way to do this is to insert it upside down from the opposite side, then flip it while pushing the stage up, then slide it back so the holes line up. Basically it takes some fiddling.
As with the other stages, attach the motor first, then secure the mounts. Tighten the set screw at the green arrow. Make sure the micrometer is flush with the mount at the yellow arrow. Again pushing upwards at the red arrow eliminates prelaod from the spring inside the stage and helps alignment.
Tighten down the Z axis mount.
Attach the X axis motor mount to the stage with the screws at the red arrows.
Add additional screws on the X and Y axes to make sure the mounts are solidly attached. Ignore the spring in the above image.
Attach the right angle bracket to the theta stage and the top of the Z stage.
Screw the chip vacuum chuck onto the theta stage. The stage is finished.
Bolt the XYZ stage to the base plate using short screws so they don't protrude out the bottom. Ensure the stage is aligned with the tapped holes by pushing it forward while screwing it down.
Screw in the four alignment screws for the projector. They don't need to go in all the way.
Push the projector and optics against the four screws to ensure alignment.
Plug in everything: power for the projector, locking USB cable for the camera, USB cable for the stage, power for the stage, HDMI for the projector, power for the pump, and vacuum tube for the chuck. Do not power the stage arduino shield without the motors connected, or you will burn out the drivers.
To install and run the software, you will need a Windows system that has two USB ports. The rest of this section describes how to install the following dependencies:
Arduino GRBL firmware
Python version 3.10 and Python libraries
FLIR Blackfly S Camera Drivers & Viewer
After these are installed, you may clone and instantiate the stepper repository on your device. Optionally, you can develop your own driver for the Flir camera to allow a GUI-integrated live camera preview of the stage. Instructions for such are included below as well.
Install Arduino IDE.
To test that the installation was successful, open Arduino IDE and open the serial monitor. You should see text indicating that a version of GRBL is running on your Arduino.
At the time of development the latest Python version the Flir Spinnaker SDK supports is version 3.10. As such, you must install libraries and run the software for/from this version.
Import necessary libraries with pip
pip install pillow, serial, opencv-python
TKinter should be bundled with the 3.10 download, but if not found, it must be installed with local package manager: not pip
PIL / Pillow -> pip install pillow
Serial -> pip install serial
cv2 -> pip install opencv-python
Do not install camera
library with pip, as it will conflict with the Flir python library
(WIP)
Open git terminal to the location where you want the Stepper GUI software to be downloaded. Then, run the following commands:
git clone https://github.com/hacker-fab/stepper .
cd stepper
If you have access to the private Flir camera submodule repository, then also enter the following commands:
git submodule init
git submodule update
Otherwise, disable the camera in the software. To do this, go to the stepper/litho/scripts/config.py file and toggle the necessary flags at the top (i.e. RUN_WITH_CAMERA = False). (Or, if are using a different camera, update config.py to select your camera instead. The camera must implement the CameraModule interface.)
Run the software.
py -3.10 ./litho/scripts/Lithographer.py
Run lithographer.py with Python 3.10:
py -3.10 ./litho/scripts/Lithographer.py
The Stepper V2 build uses a Teledyne Flir camera and custom software written for it. The Stepper software uses the Flir Spinnaker SDK to integrate a live camera preview of the stepper's stage. Since the SDK and its derivative software are closed-source components, we currently do not possess the legal authority to grant access to our custom Flir camera driver to third parties. The following steps describe how to install the Flir Spinnaker SDK and how to develop your own driver. Please carefully review all terms, agreements, and licensing requirements. Follow the steps below.
Decompress your download if necessary. Open the README.txt file in the (decompressed) download and follow the installation instructions inside.
Test that the installation was successful by running an example program. To do this, first make sure your Flir camera is connected. Then, open git terminal in the "Examples" folder. Then, choose any example .py script and run it by entering py -3.10 NameOfYourScript.py
. Ensure that the program output reports connection and communication with your Flir camera.
def __init__(self)
def setStreamCaptureCallback(self, callback)
def streamImageReady(self); returns True if live image is available
def getStreamCaptureImage(self); returns a tuple of (numpy ND image array, shape of that array, and an image format string ("rgb888" or "mono8")), or False if the image is invalid
def isOpen(self); returns True if the camera is active
def open(self); returns True on success
def close(self); returns True on success
def startStreamCapture(self); returns True on success
def stopStreamCapture(self); returns True on success
a Flir image event handler
We also suggest optimizing live preview performance by selecting a low-overhead color processing scheme and by displaying only the most recently acquired image (i.e. newest first). The Flir SDK code examples show how you might do this.
In config.py, assign "camera" to an instance of your FlirCamera class. For instance:
Once the stepper is connected to a computer and the live camera feed is visible, proceed with final alignment. The goal is to adjust the tube length between the DLP housing and the beamsplitter cube such that both the projected image and the chip are in focus.
Place a chip with a visible pattern on it. Cracked glass or extremely dirty chips are good options.
Project a mostly red image with some fine marks for determining focus.
Using the Z axis (focus) of the stage, focus onto the chip surface. Disregard the projected pattern for now.
Loosen the clamp that connects the two parts of the DLP-beamsplitter tube so that they freely rotate. (update picture)
Loosen the locking ring on the adjustable lens tube.
Screw the adjustable lens tube in/out while periodically checking to see if the projected image gets more or less in focus. You may need to push the optics into the coupler to ensure planarity.
Once both images are in focus at the same time, tighten the locking ring on the adjustable lens tune as well as the coupler. (insert image)
This page documents the current work being done on patterning systems and the goals of that work. If you want to start a new project or research related to patterning, add it here so we can keep track of what's being done!
The current design for stepper v2 involves having the micrometer-motor couplers slide along the shaft of the motor. This leads to wear in the 3D print and prevents the use of a rigid connection, leading to the coupler eventually becoming loose. This can cause ~30º of backlash in the rotation, which corresponds to about 15 microns.
Mounting the motors on the stage that they move, rather than on a (relatively) fixed stage allows for using a rigid coupling without significant modification to other parts of the design. These fixes should be applicable to any fab with an existing v2 stage. This is a major enabler for .
This may require redesigning the stage to be mounted upright, or the stage to be turned sideways.
The WIP CAD files are available on and more information can be found .
In order to enable many features like automated or computer-assisted patterning, it must be possible to consistently refer to positions on a die. This requires being able to determine the absolute position of the stage.
There has been some experimentation with using inductive sensors for determining the stage position, though calibrating and mounting the sensors is difficult. The accuracy for a properly calibrated and mounted sensor may be sufficient, though. (TODO: Link inductive sensor notes once those get merged)
Currently, a design using simple limit switches is being developed (though blocked on ).
The current optics system is not physically capable of handling the projector's resolution, i.e. some amount of detail is wasted in the optics system. This means that we can use a lower resolution (read: cheaper) projector.
Lastly, there are other components in the optics system itself that we believe can be modified/replaced to further reduce the cost. The ThorLabs components cost at least $700, but many of those parts such as tubes and flanges could be replaced by 3D-printed parts. We will have to test to see if heat generated by the stepper becomes an issue, but this would provide a significant reduction in cost.
Altogether, we believe that we can bring the cost of the stepper below $2000 - perhaps even $1500.
HackerFab DIY Low-Cost Atomic Layer Deposition Tool - Progress as of Dec. 2024
For a description of what the team at CMU is working on in Spring 2025, check out !
A complete list of parts and components used in making the DIY ALD system can be found .
We are building a low cost Atomic Layer Deposition machine for the Hacker Fab to achieve improved gate dielectrics, which will help us achieve our goal of a 10 micron CMOS process as well as improve our capability in performing thin-film research. Our design work on it will be all open source, and we hope other labs can use our work to make their own ALDs at a fraction of the cost of commercial alternatives. We are building our ALD to fit 4" wafers so that it can be brought into the nanofab, which will help us lower the barrier to entry for researching thin film deposition and new materials. Although 4" is much larger than anything we are currently using in the Hacker Fab at CMU, this larger size will make it useful to a larger audience.
Our work thus far has been focused on machine design, largely drawing from two papers on “DIY” ALD machines; ” by Michael Lubitz, and “” by Pamburayi Mpofu. Each of these papers describes their machine design followed by some process development where they describe the settings (ie. temperatures and precursors deposition times) used in their initial depositions.
This document will present the current proposed machine design plan and the work completed to date for our vertically aligned, cold-walled reaction chamber ALD machine for the Hacker Fab.
Oxide of interest
For the current system we aim to deposit Indium-Tin Oxide. Indium Tin Oxide (ITO) is a versatile material widely recognized for its excellent electrical conductivity and optical transparency. These properties make ITO a promising candidate for advanced applications, particularly as a channel material in thin-film transistors (TFTs). Its high carrier mobility and tunable electrical characteristics offer significant potential for improving TFT performance in display technologies and flexible electronics. Additionally, ITO thin films are of great interest in materials and thin-film research due to their unique combination of metallic and semiconducting properties. This makes them an ideal system for exploring novel deposition techniques, optimizing film uniformity, and investigating structure-property relationships.
The precursors for the metals were chosen based on their feasibility to react with water vapor as the oxidizer. The precursors chosen are Trimethyl Indium (TMIn) for Indium and Tetrakis(dimethylamino) Tin (TDMASn) for Tin with Nitrogen carrier gas. They have been shown to be used for ALD and CVD processes with water as the oxidizer in literature. As a starting point our aim would be to reproduce the results achieved in [Zhang et al.]. The process parameters highlighted in the paper are as follows (substrate temperature: -225C):
Safety Considerations
Most precursors and specifically metal organic precursors used for CVD and ALD processes tend to be pyrophoric (i.e. thermally unstable and spontaneously ignite on exposure to air) thus necessitating safety measures.
Material Considerations
Compatibility with the precursors and byproducts produced during reaction are important to consider when selecting components for the delivery system. For our given precursors the chemical groups for which we checked compatibility are: 1) ability to handle pyrophoric materials, 2) ability to resist corrosion due to water vapor, 3) compatibility with methane (by product of TMIn reaction with water) and dimethylamine gas (by product of TDMASn reaction with water)
Specific choices:
Stainless Steel Tubing
Aflas O-rings - conventionally used Viton O-rings are incompatible with dimethylamine
Aluminum vacuum chamber
Stainless steel bellow hose
Vacuum pump - Although the vacuum pump manufacturer warns against using the pump with pyrophoric gases, this caution can be safely disregarded in our case. Since we will be working with extremely dilute concentrations of these gases, the risk of combustion or hazardous reactions is significantly minimized. The low concentration ensures that the gases remain well within safe limits, allowing for the pump's use without compromising safety or performance.
Sourcing Precursors
The goal of the DIY substrate heater is to develop a cost-effective, replicable ALD wafer heater to support thin-film deposition processes for materials research. Commercial solutions for wafer heating are often prohibitively expensive, making this tool an accessible alternative for Hacker Fab and other researchers. Existing solutions do not meet specific size, temperature, or vacuum compatibility requirements at an affordable price. By designing this tool, we contribute an open-source option tailored for ALD processes. This supports the open-source nature of Hacker Fab by enabling other researchers or users to replicate and build their own wafer heaters. It allows for a more cost-effective approach to ALD, contributing to the open-source knowledge base by providing detailed, replicable build instruction.
Heating Element Setup
Use 22-gauge nichrome wire to create a heating coil.
Arrange the wire in a zigzag pattern to cover the area of the heating plate (approximately 4.5-inch diameter).
Place the nichrome wire between two boron nitride plates (each 0.1-inch thick). Boron nitride provides electrical insulation while allowing efficient heat transfer.
Construction of Heating Plate
Mount the heating element (nichrome wire and boron nitride assembly) onto an aluminum disk (4.5-inch diameter, 0.1-inch thick). The aluminum disk acts as a heat spreader, ensuring uniform heat distribution to the wafer.
Secure the boron nitride plates with aluminum bolts to ensure tight contact and structural integrity.
Ensure that the wire ends extend outside the assembly for electrical connections.
Assembly and Connections
Position the aluminum plate so that it faces upward, serving as the surface for the wafer.
Connect the nichrome wire ends to a DC power supply. This power supply should allow adjustable voltage (up to 30V), which will control the current and regulate the temperature of the nichrome wire.
Attach a thermocouple to the aluminum plate for temperature monitoring. This will help ensure the wafer reaches and maintains the target temperature (300°C).
Operation
Gradually increase the voltage on the DC power supply to heat the nichrome wire. Use the thermocouple reading to fine-tune the voltage for achieving the desired temperature.
Specifications
Temperature Range: 300°C to 500°C
Material Compatibility: The heating element is designed to be compatible with a 4-inch wafer and is placed between aluminum and Boron Nitride plates.
Voltage: The heater operates with a maximum input voltage of 30V.
Power Requirements: The heater needs a stable DC power source capable of delivering sufficient current to reach the target temperature.
Thermal Uniformity: The temperature should be uniformly distributed across the wafer, verified using a laser thermometer to ensure consistent heat application during ALD processes.
Size: The heating element is sized to fit a 4-inch wafer, ensuring full coverage.
Voltage and temperature data
Select Vacuum-Compatible Feedthroughs
Feedthroughs are specialized components designed to pass electrical, thermal, or other signals through a vacuum boundary. For your heater, an electrical feedthrough is required.
Key Features:
Vacuum Compatibility: Ensure it is leak-tight, rated for the vacuum level (e.g., high vacuum or ultra-high vacuum).
Temperature Compatibility: The feedthrough must withstand high temperatures near the heater.
Electrical Capacity: Rated for the current and voltage requirements of the nichrome wire.
Common Materials:
Metal-to-ceramic seal feedthroughs: These use materials like stainless steel and alumina ceramics for high durability and vacuum compatibility.
Glass-to-metal seals: Suitable for lower voltage and current applications.
Vendors:
Feedthroughs are available from companies such as:
MDC Vacuum
Kurt J. Lesker
Conax Technologies
Allectra
Mounting the Feedthrough:
Install the feedthrough into a flange on the vacuum chamber (e.g., CF, KF, or ISO flange systems).
Use O-ring seals (Viton or Buna-N) for lower vacuum applications or indium gaskets for ultra-high vacuum.
Inside the Chamber:
Connect the nichrome wire to the internal terminals of the feedthrough using vacuum-compatible connectors (e.g., nickel or stainless steel).
Ensure insulation with high-temperature, vacuum-compatible materials such as ceramic or polyimide.
Outside the Chamber:
Connect the power supply to the external terminals of the feedthrough.
Use shielded cables if electromagnetic interference is a concern.
Materials Required
Nichrome wire (22-gauge)
Boron nitride plates (2, 4-inch diameter, 0.1-inch thick)
Aluminum disk (1, 4-inch diameter, 0.1-inch thick)
Thermocouple
Bolts and nuts (compatible with boron nitride and aluminum plates)
Insulating washers (if needed, for vacuum compatibility)
DC power supply
Wire connectors
Heat-resistant adhesive (optional for securing wires)
Assembly Steps
Step 1: Preparation
Cut the wire to the appropriate length (as per your design, typically around 14 inches).
Step 2: Setting up the Heating Element
Wire Arrangement:
Lay one boron nitride plate flat on a stable surface.
Arrange the nichrome wire in a zigzag pattern across the surface, ensuring even coverage. Leave wire ends long enough to extend outside the assembly for electrical connections.
Layering:
Place the second boron nitride plate on top of the first, sandwiching the nichrome wire between them. Ensure the plates align perfectly.
Step 3: Mounting onto Aluminum Plate
Place the boron nitride and nichrome assembly onto the aluminum disk.
Align the pre-drilled bolt holes in all three layers (aluminum, boron nitride plates).
Insert bolts through the assembly, using insulating washers if needed to maintain electrical isolation.
Secure the bolts with nuts, tightening evenly to ensure good thermal contact without over
Step 4: Electrical Connections
Attach the thermocouple to the aluminum plate using thermal paste or tape for accurate temperature monitoring.
Use a multimeter to check for electrical continuity and verify there are no short circuits.
Attach the nichrome wire ends to the wire connectors and connect them to the DC
Step 5: Final Assembly
Seal the feedthroughs to maintain vacuum integrity.
Route wires for the power supply and thermocouple through vacuum chamber feedthroughs.
Use vacuum-compatible connectors.
Position the entire assembly inside the vacuum chamber
Future Testing Tasks
Initial Power Testing:
Gradually increase the voltage while monitoring the temperature using the thermocouple.
Record the time required to reach target temperatures (e.g., 400°C, 500°C).
Thermal Uniformity Testing:
Use a thermocouples to verify uniform heat distribution across the aluminum plate.
Vacuum Compatibility:
Test the system under vacuum conditions to ensure no leaks in the feedthroughs and proper operation of the heater.
Optimization of Wire Length and Voltage:
Experiment with different lengths of nichrome wire to find the optimal balance between power efficiency and heating uniformity.
Long-Term Durability Testing:
Run the heater for extended periods to evaluate its stability and reliability.
Temperature Controller Integration:
Test the system with a PID temperature controller to automate heating and maintain stable temperatures during operation.
Documentation of Results:
Plot temperature vs. time, power vs. temperature, and voltage vs. temperature graphs based on experimental data.
Note any issues or observations to refine the design.
Challenges
Wire Placement: Achieving uniform heating is dependent on precise placement of the nichrome wire.
Vacuum Constraints: The vacuum environment imposes limitations on assembly and temperature uniformity
Optimization of Power and Heating Time: There is a need to balance the wire length for optimal performance. A longer wire enhances heating uniformity but consumes more power and increases the time required to reach the target temperature.
Future Improvements
Alternative Materials: Testing circular mica heaters or other heating elements for improved thermal response times.
Optimization Studies: Verifying whether the aluminum disk is essential. Direct placement of the wafer on boron nitride could simplify the design without compromising functionality.
Enhanced Efficiency: Refining nichrome wire routing to minimize heat loss and enhance system efficiency.
Parameter Tuning: Finding the sweet spot between nichrome wire length and power consumption to maximize performance while minimizing energy usage and heating time.
System Design
For the delivery system we chose VCR connections for the gas lines in our vacuum system to ensure a reliable, leak-tight seal, essential for maintaining system integrity. These metal-to-metal sealing connections are ideal for ultra-high vacuum (UHV) and high-purity gas applications, reducing the risk of leaks, outgassing, and contamination. Their robust design and reusability also made them a practical choice for our setup, where frequent assembly and disassembly are required. We use a two-stage regulator at the carrier gas cylinder as it ensures consistent and precise pressure control, reducing the high-pressure gas from the source to a stable, manageable level for downstream components. This stability is essential for maintaining uniform gas flow in the system. The gas at the correct pressure is then delivered through a mass flow controller that regulates the flow rate of gases entering the system, providing precise control to meet process requirements. It ensures accurate delivery of gases to the precursor manifold. We are receiving a precursor manifold having three Swagelok ALD3 valves donated by the Claire & John Bertucci Nanotechnology Laboratory at CMU. The precursor manifold serves as a distribution hub, directing gases to valves. It includes multiple inlets for the precursor bubblers and an outlet to lead to the chamber, enabling the mixing or isolation of various precursors before delivery to the reaction chamber. The ALD valves in the manifold are high-speed, precise valves that control the pulsed delivery of precursors into the vacuum chamber. These valves are critical for achieving the sequential gas flows required in ALD processes. The line finally leads to the vacuum chamber designed to be a cross-flow reactor.
Components requiring connection for delivery line:
Chamber precursor inlet: KF25 flange fitting
Precursor Manifold:
Inlet: ¼” female VCR
Outlet: ¼” male VCR connector
MFC inlet and outlet: ⅛” NPT female connectors
Dual stage regulator: reduces cylinder pressure (~2000 psi) to operating pressure for Mass Flow Controller (<70 psi)
Components/Hardware Requiring Control
Parts to be controlled:
Mass Flow Controller - Controls the amount of carrier gas flowing through the tubing per time. Requires an analog signal 0-10Vdc and power supply of 12-24 Vdc, 250mA
ALD valves - Controls the duration for which precursors are open to the carrier gas line. Works on a pneumatic valve that is actuated by solenoids. Requires N2 gas input for pneumatic actuation and square wave signal of 24 Vdc with wave width equal to valve open time.
Delivery line and substrate heaters - Controls the temperature of the gas lines and substrate holder surface. Requires control of voltage and current being delivered to the heating element to modulate based on reading from the thermocouple.
Throttle Valve - Controls the pressure of the vacuum chamber by modulating the evacuation rate of the pump based on current pressure.
Outline of controls
Control parts using LabVIEW and RaspberryPi (given the number of different signals and components we decided to use a Pi instead of using an Arduino)
RaspberryPi is great for handling low-level hardware tasks, such as controlling valves, relays, and sensors. It can read analog or digital signals, control actuators (e.g., motors or heating elements), and interact with sensors that LabVIEW can’t interface with directly.
Progress
The ALD valves are controlled based on their status in a truth table, where each row corresponds to a specific step of the ALD cycle. The truth table defines the ON/OFF state of each valve, with True indicating the valve is ON and False indicating it is OFF. The appropriate row of the table is accessed dynamically, depending on the current step of the cycle.
To implement this control, a relay board is used to interface the ALD valves with a 24V DC wall adapter. The relay board switches the power supply to the valves according to the truth table commands, ensuring precise timing and coordination for each step of the ALD process. For depositing Indium Tin Oxide (ITO), which requires two metal precursors, the ALD valve operation is determined by the desired ratio of the two precursors. To achieve this, a sequential block is used to calculate the current cycle number in the ALD process. Based on the cycle number and the specified precursor ratio, the sequential logic selects which metal precursor valve to open. This setup allows for reliable and automated control of the gas delivery system during operation.
To control the heating elements, temperature data is collected from thermocouples at a specified sampling rate and frequency using a DAQ (Data Acquisition) system. The measured temperature readings are averaged to calculate a mean temperature, which provides a stable input for feedback control. The mean measured temperature and the target temperature are then fed into a PID (Proportional-Integral-Derivative) controller. The PID computes the required voltage adjustment to maintain the target temperature by supplying the appropriate voltage to the resistive heating elements. This feedback loop ensures precise temperature control, critical for maintaining process stability and uniformity during operation.
We are still in the process of testing this and are currently figuring out how to use DAQ hats on Raspberry Pi to collect the data at a given frequency.
Challenges
Motivation
The vacuum chamber and the vacuum pump are the foundation of the ALD machine, providing the controlled environment necessary for thin-film deposition on the 4 inch diameter wafer. Initially, the idea of machining the vacuum chamber in-house was considered, but quickly decided against due to the precision needed to manufacture a reliable vacuum chamber, and given that the ALD machine project is on a quickly-moving timeline, This project addresses these gaps with a cost-effective and adaptable design, which was easily outsourced and purchased, for academic and research settings.
Technical Requirements
Vacuum Pump Range: The vacuum pump and chamber should be able to reach mTorr levels of vacuum to reach precursor baseline pressures.
Temperature Requirements: The vacuum chamber should be able to withstand temperatures up to 500°C, in order to align with precursor pressures and thermal evaporation benchmarks, and to keep the wafer at 300°C
Vacuum Chamber Material: Aluminum for affordability and compatibility with high vacuum and temperature conditions.
Port Configurations: Modular design to accommodate multiple gas inlets and precursor integration.
Design Process
With the technical requirements in mind and once the precursors were selected (and ITO was decided upon), the design process for the vacuum pump and vacuum chamber evolved quickly over the first half of the semester. Originally, the vacuum chamber had a technical requirement of being made of only stainless steel, avoiding aluminum due to concerns about compatibility with the gases. Eventually, aluminum was reconsidered to be a vacuum chamber material option, after double-checking its compatibility with the gases.
Vacuum Pump Selection + Design Choices
For the vacuum pump, extensive research was conducted to identify a pump capable of maintaining the desired vacuum range without overloading the budget. It was necessary to ensure compatibility with the fact that it would be used with gases as well. Despite initial hesitation due to the high cost of some components, we finalized the order for the Edwards nXDS6i Dry Scroll Vacuum Pump, as it has been used for other DIY ALD machines in the past and is known to be reliable for these purposes. This step was crucial to ensuring the entire vacuum system could function as intended without compromising the ALD process's precision.
Vacuum Chamber Selection + Design Choices
A major milestone was sourcing the 9x9x9 modular vacuum chamber from Ideal Vacuum, initially inspired by using the 6x6x6 Ideal Vacuum chamber that’s used for the thermal evaporator. We noticed that the inside temperatures of the thermal evaporator reach even higher temperatures than needed for ALD, even though on the Ideal Vacuum site, the specs say it isn’t rated for that high of a temperature. This milestone, though, was guided by its versatility, as the modular port placements allowed for customizable configurations. Additionally, this chamber offered a practical balance between cost and performance, addressing both budget constraints and functional needs. To further refine this selection, the 9x9x9 pre-selected component kits were compared with the individual necessary components (with itemized lists of those individual components), weighing the trade-offs between cost savings and assembly complexity. All individual components ordered are listed in the BOM shown in the Appendix.
As shown in the BOM for vacuum chamber components, the 6 sides to the modular vacuum chamber from Ideal Vacuum which were ordered, with reasoning as to why, were:
One (1) plate with a viewing window and door hinge, to easily place and remove the 4” diameter wafer.
One (1) plate with four (4) KF16 inlets in order to connect the pressure gauge, temperature probe, and electrical lead. Each of those three components connected to the ALD account for one KF16 inlet, leaving a single KF16 inlet covered by a blank flange, and reserved for if future leads are needed.
Two (2) plates with single, centered KF25 inlets, to be placed on the top and bottom of the cube, with the top inlet being the gas inlet, or the gas entering the vacuum chamber, and the bottom outlet being the vacuum chamber’s connection to the dry scroll vacuum pump and throttle, or where the gas will exit the chamber. This top-to-bottom placement is to prompt laminar flow of the gases and increase chances of even deposition throughout the wafer. The gas flow is depicted below.
Two (2) blank plates
Vacuum Chamber + Vacuum Pump Baseline Test
As of the end of the Fall 2024 semester, the vacuum chamber has been fully assembled, using only parts provided by Ideal Vacuum including Viton o-rings and o-ring fittings, and connected to the pressure gauge and vacuum pump. It’s important to note that this vacuum chamber assembly is only temporary, as Viton is not compatible with the gases used for the Hacker Fab ALD machine. A baseline vacuum test was conducted with the Viton o-rings overnight to see how much of a vacuum could be achieved with the standard assembly, and a rough vacuum of <100 mTorr was achieved. There are numerous reasons as to why the vacuum chamber wasn’t able to reach the single digits of the mTorr range during this baseline test, such as the fact that the pressure gauge we used was powered by a cord rated for half of the required voltage to power the pressure gauge.
Vacuum Chamber O-ring Material Compatibility
Since incompatible Viton o-rings were included with the hardware kit for assembling the Ideal Vacuum chamber, Aflas is currently being considered as a possible replacement option, due to its compatibility and temperature rating. Extreme Viton could also be considered, as it’s also compatible, but for o-ring replacement testing, only Aflas materials have been ordered. Since the extra large o-rings that are used to seal the vacuum chamber plates themselves (not the feedthrough ports) are so specific in dimension that they would need to be custom-made, which is a costly to schedule and budget, Aflas cording with similar thickness was ordered and can be cut to size. Aflas o-rings for KF16 and KF25 fittings were also ordered from McMaster to eventually replace in the vacuum chamber. The efficiency of replacing the Viton seals with Aflas cording and slightly smaller Aflas o-rings has yet to be determined and tested.
Next Steps
Replace incompatible Viton o-rings with Aflas o-rings to ensure compatibility and improve system reliability.
Conduct a new baseline vacuum test using Aflas o-rings for comparison with initial tests conducted with Viton o-rings.
Install a KF25 elbow-shaped connector to reduce the tubing bending radius and prevent stress on connections.
Future Improvements
Design some type of stand below the vacuum chamber to incorporate additional space beneath it, allowing better accommodation of stiff tubing leading to the vacuum pump, if KF25 elbow connector still leaves a tight fit.
Explore alternative compatible sealing solutions or materials to simplify the process of replacing the Viton o-rings, if the Aflas cording and current Aflas o-rings are insufficient in reaching vacuum specs.
Optimize the vacuum chamber setup to ensure sustained performance at rough vacuum levels (<100 mTorr).
Motivation
Safe and efficient storage and handling of ALD precursors are critical to ensuring consistent thin-film deposition. An existing precursor storage solution for the specific requirements of Hacker Fab’s ALD machine doesn’t exist on the market, at least not at any reasonable price point. While other DIY ALD machines don’t include any housing for the precursor ampoules at all, and are simply attached to only the ALD valves and tubing themselves, those same DIY ALD machines normally don’t handle pyrophoric precursors. Since the Hacker Fab ALD Machine is for ITO deposition purposes, and the precursors aren’t as inert, designing a precursor delivery storage, which the gases can travel through, and be directly connected to an exhaust, is a good preventative measure to take (to minimize risk with possible combustion/flames).
Technical Requirements
Storage Capacity: Holds the precursor manifold with three ALD valves and three gas ampoules. Potentially has room to store the mass flow controller at some point when incorporated:
Inlets and outlets: Contains holes to attach proper fittings for an exhaust connection, carrier gas inlet, and a gas outlet.
Materials: Made out of aluminum for precursor compatibility.
Miscellaneous: Ampoules should be easy to access in order to for simpler replacement when necessary.
Design Process
The precursor storage design process began by defining the requirements for safely and efficiently housing three precursors, each with dedicated gas lines and secure connections to the vacuum chamber. Aluminum was selected as a precursor delivery storage material for its corrosion resistance and ease of machining, ensuring compatibility with the chemicals and the system's operational conditions.
The initial design concepts, shown below, were sketched to visualize how the ampoules would be held and integrated into the vacuum chamber setup. These sketches evolved into more detailed CAD models (shown below), created in SolidWorks, with a focus on designing for sheet metal fabrication, since that would be the most cost effective. The flat pattern designs incorporated fold lines for easy assembly, allowing the components to be cut using waterjet or manual machining methods.
Initial conceptual design sketches of the precursor delivery storage system
Initial CAD screenshots of the precursor delivery storage system assembly (left), and an example of one of the components from the assembly folded and unfolded (right)
Since the TechSpark makerspace's water jet was out of order, we considered outsourcing the water jetting for the sheet metal. An initial quote from Atomatic for waterjet cutting parts at $130 per piece (ridiculously overpriced) prompted a pivot to sourcing 5052 Aluminum sheet metal with a thickness of 0.05”, from McMaster-Carr, since 5052 Aluminum is an easy-to-bend metal. I was able to begin the fabrication and assembly process and complete fabrication of 3 components, leaving the door and manifold shelf to be fabricated and assembled next semester. Using the CAD designs as a rough guide, and adding a few extra inches in every direction to ensure there was enough space, I cut the sheet metal to size using either the shearer or the bandsaw. I then bent right angles where necessary using the bending machine at Techspark, and then holes were drilled and parts were riveted together manually using aluminum rivets. While this reduced costs drastically while maintaining functionality, the fabrication and assembly process (mainly the manual riveting) was extremely time consuming and physically exhausting.
Images of the fabrication and assembly process of the first few components of the storage assembly
Due to time constraints, we weren't able to complete the entire assembly, but believe that this is for the best, as I’m sure many design improvements will be implemented next semester. One example of this is for redesigning the shelf which holds the manifold and ampoules. Next semester’s ALD team should consider whether or not the heating block is either usable (we don’t know if it’s programmable currently), or if heating tape would suffice. Due to the heating block’s heft (it’s made out of solid metal), it would be beneficial to consider removing it if possible. Shown below are a few quick sketches of possible shelf redesigns depending on if the manifold’s heater block is incorporated or not.
Conceptual sketches displaying the various options for shelving manifold, ALD valves, and precursor ampoules
Next Steps
Complete the remaining assembly for the precursor delivery storage system, addressing any precision or alignment issues from the manual fabrication process.
Evaluate the usability and efficiency of the manifold's heating block in the current setup to determine its suitability for sustained operation.
Investigate alternative heating solutions, such as heating tape, to replace the manifold's heating block if it proves impractical due to its weight or solid metal construction.
Future Improvements
Refine the design for easier replication and modularity, considering lessons learned during manual fabrication.
Reassess shelf configurations in the precursor storage system to accommodate potential design changes stemming from heating block decisions.
Incorporate design elements that improve manufacturing precision and reduce the labor-intensive nature of assembly.
Z. Zhang et al., "Atomically Thin Indium-Tin-Oxide Transistors Enabled by Atomic Layer Deposition," in IEEE Transactions on Electron Devices, vol. 69, no. 1, pp. 231-236, Jan. 2022, doi: 10.1109/TED.2021.3129707.
For a description of what the team at CMU is working on in Spring 2025, check out !
A step-by-step guide on working with the Probe Station
To learn more about the hardware and software involved, refer:
If not using the tester adapter, connect W2 to the Gate probe and W1 to the Drain probe.
The Source and Body probes must be connected to GND.
The +1 & -1 connections should be connected around the drain resistor.
+2 should be connected to the Drain terminal.
Add images with the connections, more specifics.
simple mechanical probe manipulator
needs 4 probes (show where each of them are used)
high level: we can relate all the process parameters to electrical characteristics
all the tests we can do
what they tell us, how many probes needed, etc.
example pictures, resulting curves
lots of great diagrams from Anirud, Icey, Ahmet, Joel working docs we can update with
Semiconductor Parameter Analyzer
Not all transistors are created equal. There is an immense amount of information within the electrical characteristics of the device that helps with optimizing the manufacturing process (Read Peter Van Zant Chapter 14). Below is an example of an ideal IV curve from a textbook, and the first IV curves taken in the Hacker Fab. While our curves aren’t perfect, they do exhibit transistor-like-characteristics 🙂.
IV curves are not the only tests that can be done with a parameter analyzer. With enough data, trends in these different curves can be directly associated with process parameters.
Probe stations are traditionally heavy desktop machines that hold probe manipulators. The purpose of the probe station itself is to precisely move the tungsten probe in order to make contact with the contacts of the device. This typically means moving 3 individual probes to the gate, source, and drain contacts, and another to contact bulk.
Probe Station + simple diagram of contact locations
These probes are attached to the back of the Semiconductor Parameter Analyzer - precision instruments consisting of multiple SMUs (Source Measure Units) and a built-in computer to control them and store readings. Source Measure Units are glorified power supplies with built-in voltmeters and ammeters - they are very precise instruments that are able to supply voltage or current through the probes, and simultaneously read voltage or current.
Assembly containing all projector parts, obtained from . Used for geometry of the 3D printed adapter.
Assembly of all ThorLabs components. Original part files from .
Remove the metal clip and the stock hot mirror from the lamp assembly. The stock hot mirror blocks ultraviolet light, so it needs to be replaced.
See step 11 for an alternative way of exporting the masks using Python scripts
1 GDS to image
STED Microscopy
Two-beam OBL utilizes a doughnut-shaped inhibition beam to inhibit the photopolymerization triggered by the writing beam at the doughnut ring leading to reduced feature size and improved resolution
Super-resolved critical dimensions in far-field I-line photolithography
After assembling these parts together, connect the copper power feedthroughs to either end of the tungsten filament using an .
can be used to safely insulate the metal and prevent electrical misconnections.
There are several options for fabricating these two parts: the Base Plate and Adapter Plate. If you have access to a water jet, you may cut these parts from 1/4" aluminum plate, available on . Otherwise you can order the parts from , or another online CNC shop.
shopping cart with the parts already uploaded and configured. This has not been tested yet.
Base Plate: for a drawing to have open while drilling all the holes. Start with a center drill then use an appropriately sized drill bit for M4 and M6 holes. You may also switch to 8-32 and 1/4-20 if you already have the taps for those, and no other parts will change if you do so.
The PCB Gerber files for our UV LED can be found . We provide a screenshot of the layout in Altium and a 3D render of the PCB below.
You can order it through your PCB manufacturer of choice (we used JLCPCB). However, note that the PCB is . This is because the LEDs draw several amps of current in operation. To ensure that the PCB doesn't melt, you should use copper core to facilitate better heat flow.
Below is a completed version of the PCB - note the polarity! This image shows the correct orientation of the LEDs (credit to University of Utah for the photo). If you have it flipped, then the projector will project an image briefly before shutting itself off:
t
See for interactive assembly help (select option 3)
Flash the Arduino with GRBL following the instructions in the below (it may display as "Not found", but we have found that the link works anyway). For more info about the CNC shield, see the original designer's page below.
We highly recommend using a Linux-based terminal on your Windows system for installation. One option is the . The following instructions assume you are using this terminal environment.
Open git terminal. Check if you have Python 3.10 already installed on your system by running py -3.10 -V
. If no installation is present, download and install Python 3.10 from the .
For instructions on how to use the Stepper GUI software (including troubleshooting), please see the .
Create an account on the Flir website (), or, if you already have one, sign in.
Download the Flir Spinnaker SDK () for Windows.
To write a Flir camera driver compatible with the rest of the software, you must conform to the stepper's . Within your custom "FlirCamera" class, which should be defined as a subclass of CameraModule and a Flir event handler, we recommend implementing at least the following functions:
Wear whenever light leakage from the projector is possible.
There are two main items that we are looking at replacing to reduce our cost. The first is the projector itself, as we are using an expensive 4K projector that does not appear to yield much benefit in patterning resolution. We are considering going from the ($999) to the ($299).
The second item that we are looking at is our camera. We are currently using a high-resolution ($700) which, again, is excessive for our application. We believe that we can find a similar C-mount camera for less than $200.
The compatibility of o-ring materials was checked on the following sources:
Given the safety considerations involved in handling the pyrophoric precursors, the sourcing of materials for ITO deposition is managed by the Claire & John Bertucci Nanotechnology Laboratory staff. They ensure that all necessary precautions are taken during the procurement, handling, and storage of the chemicals. The required precursors have been ordered from Strem Chemicals, a trusted supplier known for providing high-quality materials for advanced research and industrial applications. ,
is a graphical programming environment designed for system control, data acquisition, and automation. Easy to use for engineers and it provides the ability to quickly prototype control systems for complex setups.
RaspberryPi 5 does not come with Python 2; hence, getting LabVIEW to run on it is still something we are figuring out. ()
: This document explains the initial thought and design process for this delivery storage.
: This folder contains all SolidWorks CAD files and assemblies used to plan the storage design more accurately, get outsourced water jetting quotes, and to begin the in-house fabrication process.
: This folder contains screenshots of the outsourced waterjet quotes from Atomatic, which we decided not to go through with, but are reference points as to why we decided to attempt manufacturing in-house.
” by Michael Lubitz
“” by Pamburayi Mpofu
Photoresists + Developers
Dielectrics
Conductors
Etchants
Dopant Sources
TI DLP Evaluation Module
1
$999
Assorted Optics
1
$736.52
10X Din Plan Objective
1
$150
FLIR Blackfly S Camera w/ Sony IMX183
1
$699
USB Type A to Micro B locking cable
1
$24.6
19V 4.74A Projector Power Supply
1
$17.99
XYZ Stage 40mm
1
$125
Rotation Stage
1
$58.99
NEMA 28 Steppers
4
$71.96
Arduino Uno (Elegoo)
1
$16.99
CNC Shield for Arduino V3.0
1
$10.99
Stepper Motor Drivers
1
$22.99
Flexible Shaft 1/8"
1
$6.49
Shield Power Supply 12V
2
$23.98
2.5mm Barrel Connector
1
$8.99
Vacuum pump for chuck
1
$26.99
M2.5 Screw Assortment
1
$16.99
Collapsible Magnetic Tray for Vibration
1
$11.99
410nm Lumiled LED
4
$27.96
Pico-spox 10pos Vertical Connector
2
$1.86
Referance for assembling optical components
1
Driver kit
Connects the optics to the projector. Matches hole pattern on DLP housing and Thorlabs flange.
1
Water jet/ Online CNC shop/ 3D print
Structural base for aligning the micropositioning stage to the projector and optics.
1
Manual mill/ Online CNC shop/ Water jet
40mm Stepper Mount (link to SW)
Three parts that connect stepper motors to the micropositioning stage x , y and z axes.
1
3D printed
Press fits onto micrometer and slides on motor D-shaft.
3
3D printed
Tiny part for offsetting micrometer stop on Y axis
1
3D printed
Mounts the theta stage at a right angle to the rest of the stage.
1
3D printed
Connects to a vacuum hose to hold the chip. Corner jig aids alignment.
1
3D printed
Python script for controlling the projector. Check for recent version.
Laptop
Firmware for stage microcontroller.
Arduino Uno, IDE, Laptop
40mm Stepper Mount (link to SW)
Three parts that connect stepper motors to the micropositioning stage x , y and z axes.
1
Press fits onto micrometer and slides on motor D-shaft.
3
Tiny part for offsetting micrometer stop on Y axis
1
Mounts the theta stage at a right angle to the rest of the stage.
1
Connects to a vacuum hose to hold the chip. Corner jig aids alignment.
1
Oxide
Bubbler temperature
Pulse time
Co-reactant pulse time
Process pressure
Purge time
In2O3
60oC
0.625s
0.75s
100 mTorr
10s
SnO2
60oC
2s
1s
100 mTorr
30s
Parameter
Value
Wafer Diameter
4 inches
Temperature Range
300°C-500°C
Power Supply Voltage
30V (max)
Heater Material
Nichrome wire (22 gauge)
Heat Transfer Medium
Boron nitride
Structural Material
Aluminum disk
Wire Length(in)
Temperature(C)
Voltage(V)
Time to reach temp(s)
14
650
14
35
14
295
7
30
14
300
8.5
30
14
400
8.5
40
Approximate Build Time
6 hours
Optical Resolution
2 µm
Developed Resolution
2 µm
Tiling Alignment Accuracy
5 µm
Overlay Alignment Accuracy
5 µm
Exposure Size (Diagonal)
1.2 mm
Exposure Time
9 seconds
Mechanical Step Size
1.5 µm
Mechanical Repeatability
5 µm (to verify)
Maximum Wafer Size
2 cm by 2 cm
Tool Size
30 cm x 36 cm x 20 cm
Backlash Improvements
<2µm backlash
Before February
Carson Swoveland (@_salix)
Absolute Positioning
<5µm accuracy+precision
End of semester
Carson Swoveland (@_salix)
Cost Reductions
Stepper price <$2000
End of semester
Joel Gonzalez Sky Bailey
Automating our existing spin coater whilst integrating heating and liquid dispensing systems.
Footprint (cm³)
35 x 35 x 50
L x W x H
Reliability (%)
99%
Amount of chips sucessfully processed
Clearance (cm)
15
Room for users to access chips
Heating (°C)
100
Internal Temperature (°C)
+15
Temp. above Room Temp.
Dispense Time (sec)
2
Time per drop dispensed
Open/Close Time (sec)
10
Time taken to open/close lid
get pure aluminum
mixed with SI
need thermal evaporator
The Hacker Fab database was built on the Django framework using Python, with HTML and CSS serving as the front-end. The code in this Github repository. The purpose of the database is to store data related to chip fabrication in our labs and use the results to refine our process parameters. It is crucial that we maintain a comprehensive and functional data store in order to develop new processes and to help new Hacker Fabs begin fabrication.
The database was created in Spring 2024 with the ability to create new chips, add process parameters to each chip, and query back results from the database. The front-end had simple styling, although they were not reflected in the production website due to issues with certification. The motivation for our improvements in Fall 2024 was increasing the intuitive usability of the website, as well as adding more functionality for the user. hi
The website hosting options up for consideration were Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure. AWS was ultimately chosen because it had the longest free period and we had the most experience working with it. We use EC2 because it has the most flexible options and high availability in many geographic regions. The website is not very compute-heavy, so we chose a small instance to keep costs down.
The code has a model-view-controller (MVC) structure. Each fabrication process is described as a model (in models.py), with each field representing a process parameter or documentation artifact. This translates to each process being stored as a separate table within the database. This semester, the models were updated to constrain parameters to specific data types in order to maintain consistency and correctness in the database. For instance, temperature was stored as a decimal value, duration as a positive integer, and material type as a string. Some models and fields were renamed as well in order to clarify their meaning. We worked closely with the process development teams to understand which fields should be included or what new models should be added. Relevant Django documentation: Models
In order to allow the user to interface with the database, there are input and search forms based on the models (in forms.py). As of this semester, the input forms require certain parameters that are measurable and critical to the fabrication process, as well as prefilled default values for standardized parameters in our primary NMOS process. The search forms do not have any required fields, since we should be able to search process data for every chip and parameter value. This semester, the search forms were also updated with input fields that would provide users with the ability to perform searches given a specified range of values. The labels to these forms were also refined to be more readable and include units to aid in correct input. Relevant Django documentation: Forms based on models
We identified that a non-intuitive workflow and lack of visual cohesion were affecting the usability of our website. One major change was the inclusion of “chip pages” that show every process done to a chip and eventually will allow for edits to the data associated with it. Previously, the only way to see that data was to search the database by chip number. This process was not intuitive because users are usually working with a single chip at a time, so it made more sense to have a centralized location to view that relevant information.
A change for the search page was the use of horizontal tables to display data for a process. In other words, for a single entry, each column represents a certain field in that entry, and each row is a distinct entry (previously, the first column was the field name, the second column was the value, and additional fields for a given entry were displayed in their own row). The horizontal table display makes it much easier for users to distinguish between different entries for chip information and process parameters. Furthermore, we modified the search page to display all filter categories to the user under an umbrella “Advanced Search” dropdown. This allows the user to see all the search options at once instead of having to submit a process. Lastly, to make it easier for users to interpret the data that is presented to them in the search page, we added functionality that allows users to group the search results either by the process types they have selected, or by the chip number.
The chip creation page will also have the option to use a “chip profile” or “chip default” that prefills parameter values associated with an established process, such as the NMOS process we use for class labs.
An important addition to the Patterning process in particular is the ability to add multiple patterns in the same step and click on a gray rectangle to approximately note the location of that pattern. This way, it is easier to record the application of multiple patterns at the same time as well as locate a specific pattern when returning to the chip.
The different web pages in our website are served by their own controller functions which are located in views.py. We designed the backend architecture to have a separate function that serves each unique web page. This design allows us to modularize our backend logic and isolate functionality to those specific pages so that they can be as customizable as possible. If similar logic is used across different web pages, we put this logic in helper functions to avoid having duplicated code. The different controller functions for each page serve the main functionality of our website. Routes between the addresses to these pages and the functions that serve them are specified in urls.py. The controller links the different HTML pages together, performs the database operations, and interfaces with the backend. It determines what form to display based on what process the user selected, saves the form data and passes it to the database after cleaning, displays search queries by the user, and renders the web pages.
As our website serves to display database entries to our users, a crucial functionality is querying data (related to process parameters and chip information) and rendering it on the page. These are the different pages where data querying is critical:
Search Page
/search
search_page()
Central Chip Page
/central
central_action()
Chip Page (for a single chip)
/chipnum/<chip_id>
display_chip()
When a user performs a search for data, they can enter specific filters to narrow down their results. These filters are passed to our controller when the user fills out a search form filled with parameter values. In our controller, we use Django’s Q() objects from their database querying library to create and execute SQL queries. This simplifies the process of extracting data from our database since we just need to create a Q() object using the filters specified by the user then apply the filter on our models. This querying is done in the function filter_form(). Data querying is one of the most computationally intensive components of our database; hence, it can be considered as a bottleneck. Querying data for a single model (i.e. process type, user profile, etc.) has a worst case complexity of O(M), where M represents the number of rows that exist for a particular model in our database (the total number of unique entries of that model stored in our database). In the search page, the user is able to conduct a search to retrieve data from multiple process types. In this case, the worst case complexity for the search is O(P*M), where P represents the number of different processes the user has selected, and M represents the number of rows that exist for a particular model in our database.
The code in views.py is responsible for passing the data from the query result to the html files so that they can be displayed on the web page. There is an important detail that developers should take note of when implementing any functions that return queried results to users. We have implemented a specific data format to pass to the html page in order to standardize the design of the html pages and controller function outputs. When an html page is rendered, views.py provides it a context, which contains data (variables) that are required by or will be displayed in the html page. The html page expects the queried data provided in the context to be an array of arrays of dictionaries. Since Django’s querying library returns the queried data to us in the form of a QuerySet, we must convert the QuerySet into an array of dictionaries using Django’s model_to_dict() function found in their forms.models library. Each dictionary represents a single entry in the database. The keys correspond to the column names, which map to the corresponding value for that column. Each array of dictionaries within the outer array corresponds to a grouping of data. This enables us to group data based on the process types so that they can be displayed on the page with the correct column headers. This data structure is depicted below.
!!!!!!!!!!!!!!!!!!!!!!!!!! System architecture for interfacing with tools (the spincoater for now) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SEE this link for better formatting: https://docs.google.com/document/d/1SrD66bqmS1xxs2jt_WWSY7eLr6vyDJxIB4dbMdbxkws/edit?tab=t.0#heading=h.ai1m6262yla9
System Architecture
AWS Server Purpose: Centralized management of the job queue and storage of job-related data. Components: API Gateway: To handle incoming API requests from the Raspberry Pi and the primary web application. Lambda Functions (or EC2-based backend): Job Queue API: Handles enqueueing, dequeuing, and querying of jobs. Job Status API: Updates job status upon completion. DynamoDB (or RDS): Job Queue Table: Stores queued jobs with parameters, states (pending, in progress, completed), timestamps, and priority levels. Job Log Table: Stores historical job execution logs. S3: Optional for storing any job-related resources or output files.
Raspberry Pi Purpose: Acts as a client to fetch, run, and manage jobs locally. Major advantage of Raspberry PI: Runs full GUI linux distro that can directly connect to CMU WIFI or ethernet. Components: Job Fetching Service: Runs every 5 seconds (via a cron job or background service). Sends an API request to the AWS server to check for the next job. Receives and dequeues a job (if available). UI Module: Displays the job details on a connected screen. Allows the user to manually start the job or view progress. Supports initiating a new job via the UI. Job Execution Module: Sends job parameters to the microcontroller (spin coater controller for this semester) for execution. The Raspberry PI is physically connected to the spin coater microcontroller using jumper wires. This will replace the buttons that are currently used as input. Monitors job progress and completion. Job Completion Handler: Sends a POST request to the AWS server with job status and result details after execution.
Data Flow Job Creation: The primary way that jobs will be created is through the hacker fab website. The hacker fab website will call the appropriate API call to manage the jobs database. The implementation of this is out of the initial scope for my project. For testing purposes for this semester, I will use POSTMAN to send API calls to the AWS jobs database. Users can also create new jobs directly via the Raspberry Pi UI. This allows for redundancy in the case that the machine needs to be controlled without the database. There will be an option to run the job immediately or to send it to the database to be added to the queue. Job Queue Management: The AWS server maintains a centralized queue of jobs. The Raspberry Pi fetches and dequeues jobs by querying the API. Only jobs for the specific machine are dequeued. Job Execution: The Raspberry Pi receives the job and displays it on the connected UI. Upon user interaction (manual start) or automatically (if set), the job is run on the spin coater (or other device in the future) Job Completion: After execution, the Raspberry Pi sends the success/failure status to the AWS server, updating the job's record in the database.
Technical Details AWS Backend API Gateway Endpoints from AWS for raspberry PI: GET /jobs/next: Fetch the next job from the queue. POST /jobs/completion: Update job completion details. API Gateway Endpoints from AWS for web application: POST /jobs: Enqueue a new job. The request has the machine name, input parameters, priority. The response will have the job_id of the newly created job, or error. GET /jobs_by_id: The request includes the job_id(s) for which you will get details. All data for that row of the table will then be returned. NOTE: you can pass a list of job_ids to get multiple rows of data at the same time. GET /jobs_by_machine: The request includes the machine name. All jobs that are in the database (regardless of status) will be returned. Job Queue Table Schema: job_id (Primary Key) machine (the machine to run the job on. E.g. spin coater) status (Pending/In Progress/Completed/Failed) input_parameters (JSON for variable parameters) output_parameters (JSON for results from the machine) timestamp (Queued timestamp) priority (Optional for prioritized execution) Raspberry Pi Software Language: Python for compatibility with Pi and microcontroller communication. UI Framework: Tkinter. Lightweight GUI API Client: Fetches jobs and sends completion status using requests library. Microcontroller Interface This will vary significantly depending on the tool we are attempting to automate. This code will be modularized and will be one of the only things that will need to be modified when adding a new tool to the system. Job Execution Commands: Defined in a simple protocol (e.g., JSON commands). These commands are then parsed and used to control the microcontroller. For example, for the spin coater, the output from the I/O ports of the raspberry pi can be connected to where the buttons are on the spin coater microcontroller and simulate the button presses. There might also be an even simpler way to connect the raspberry pi to the spin coater microcontroller after talking to someone familiar with the spin coater.
Basic raspberry PI hardware setup:
Raspberry PI 5 with case and heatsink. Jumper wires connect GPIO pins to external device. See image attached.
To control the Raspberry PI 5 GPIO ports, use the gpiod python package (see screenshot below). It is critical to use gpiochip4.
AWS Configuration for jobs queue:
This is the jobs queue that the tools (right now only the spincoater) pull from. Jobs are enqueued from the primary web application.
The API gateway routes are configured as follows:
The dynamo DB is configured with default settings. job_id is the primary key.
The majority of the logic is in the lambda function. The python code is as follows (subject to change):
After fabrication, the chip must be tested to demonstrate the functionality of the design. Additionally, variations and errors in fabrication may result in differences in device characteristics which are useful to document when these variations cause the device to fail.
To enable precisely controlled experiments on microscopic chips, we currently use a probe station to contact the device using sharp probes which supply and measure voltages for calculation of various device characteristics such as I-V curves, which are explained in this SOP.
Probe station setup
Probe station - Karl Suss PM5
At least 4 probes, manipulators, and coaxial cables
Microscope setup
Camera - AmScope MU1000-HS and AmScope viewing software
Light – MI-150 Fiber Optic Illuminator
Keithley semiconductor analyzer system
Keithley 4200-SCS Semiconductor Parameter Analyzer
Keithley 2636a Sourcemeter
Keyboard and mouse
Devices under test – typically a finished chip with pads for probing
Flash drive for data transfer
Place the chip in the center of the stage and turn on the vacuum.
Turn on the microscope light, which appears as a spot of light on the stage.
Connect the microscope camera to your computer and select the camera MU-1000HS on the AmScope viewer software, which should summon the camera view. The Keithley semiconductor analyzer has only two USB ports, which are currently occupied by a keyboard and mouse. Without WiFi or a USB hub, the camera view and data transfer are handled by another computer.
Turn on the Keithley semiconductor parameter analyzer.
Open the KITE software and the experiment of interest (see below sections).
Using coaxial cables and connectors, connect each probe to the corresponding port on the Keithley semiconductor parameter analyzer.
Raise the stage using the lever. Focus the stage and center the pattern of interest under the light source using the knobs below the stage.
If the probe tips are not illuminated by the microscope light, carefully move the magnetically-attached manipulators such that the range of motion of the probe tips is within the spot of light.
Using the knobs on each probe’s manipulator, lower the probes so that the tips are focused yet not touching the chip, then position the probe tips above their corresponding probing pads.
Carefully lower the probe tips to touch the pads, which is generally indicated by resistance to movement when attempting to lower the tip further. The manual nature of this process means that the sharp probes can scratch the chip and damage the device beyond future usage, such as scratching the pads off.
Press the green triangle in the KITE software to run the experiment.
Once the experiment finishes, check the data for errors and repeat the experiment as necessary.
Scale the graph such as by right clicking the graph and clicking Autoscale
and save the data in a folder named chip###
where ###
is the chip number. To save the graph and data with a common name, type the name and click Populate
, Save All
, then Exit
.
Remove the probes from the chip and continue to the next device, either by lifting the probes or lowering the stage.
After all experiments are finished, transfer the data to a flash drive and upload the data (such as to Google Drive).
Raise the probes using the manipulator knobs.
Lower the stage by turning the lever.
Turn off the Keithley parameter analyzer.
Disconnect the microscope from your computer and turn off the microscope light.
Turn off the vacuum and remove the chip.
Upon opening the KITE software, choose the vds-id test
from under the section 4terminal-n-fet
.
Configure the probes and measurements using the following parameters. Make sure that the correct coaxial cable (SMU1, SMU2, GNDU) is connected to the correct probe.
The I-V curve of the MOSFET and the gate leakage current should be plotted. Note the magnitude of the voltage and current measurements. Very low current in the range of nano-amperes or below can indicate an open circuit, and linear behavior can indicate a short circuit, which can arise from a fault in the device or improper probe placement.
Upon opening the KITE software, chose the res2t
test froom under the section 2-wireresistor
.
Configure the probes and measurements using the following parameters. Make sure that the correct coaxial cable (SMU1, SMU2) is connected to the correct probe.
The I-V relationship between the two probes and resistance estimated from Ohm’s law should be plotted. An ideal resistor should have a linear relationship and constant resistance.
Version 2 of the probe station using analog discovery 3s
After fabrication, the chip must be tested to demonstrate the functionality of the design. Additionally, variations and errors in fabrication may result in differences in device characteristics which are useful to document when these variations cause the device to fail.
To enable precisely controlled experiments on microscopic chips, we currently use a probe station to contact the device using sharp probes which supply and measure voltages for calculation of various device characteristics such as I-V curves, which are explained in this SOP.
Probe station setup
Probe station - Karl Suss PM5
At least 4 probes, manipulators, and coaxial to split jumper wires with hooks at the end
Microscope setup
Camera - AmScope MU1000-HS and AmScope viewing software
Light – MI-150 Fiber Optic Illuminator
Semiconductor analyzer system
2 Analog Discovery 3s
Laptop with ability to connect to camera and analog discovery 3s as well as run a python program
Devices under test – typically a finished chip with pads for probing
Place the chip in the center of the stage and turn on the vacuum.
Turn on the microscope light, which appears as a spot of light on the stage.
Connect the microscope camera to your computer and select the camera MU-1000HS on the AmScope viewer software, which should summon the camera view.
Open the analyzing software on a laptop
Raise the stage using the lever. Focus the stage and center the pattern of interest under the light source using the knobs below the stage.
If the probe tips are not illuminated by the microscope light, carefully move the magnetically-attached manipulators such that the range of motion of the probe tips is within the spot of light.
Using the knobs on each probe’s manipulator, lower the probes so that the tips are focused yet not touching the chip, then position the probe tips above their corresponding probing pads.
Carefully lower the probe tips to touch the pads, which is generally indicated by resistance to movement when attempting to lower the tip further. The manual nature of this process means that the sharp probes can scratch the chip and damage the device beyond future usage, such as scratching the pads off.
Using coaxial cables connected to the jumper wires with hooks, connect each probe to the ground, source, and drain on the Keithley and connect the corresponding red hooks to the equivalent ground, source, and drain pins on the circuit board as well as all the black hooks to the drain pin on the circuit board like in the below picture
Run the command python3 smu.py in terminal to run the program
This will open up a new window with a plot of the IV Curve that looks something the below picture under MOSFET I-V Curve
In order to close this window and continue with the program, either hit the red exit button on the image window or go to terminal and type Ctrl-C
If the graph had errors, repeat the experiment as necessary
If the data looks good, enter the title for the current and image csv files
Remove the probes from the chip and continue to the next device, either by lifting the probes or lowering the stage.
Raise the probes using the manipulator knobs.
Lower the stage by turning the lever.
Disconnect the microscope from your computer and turn off the microscope light.
Turn off the vacuum and remove the chip.
The outputs currently look something like this:
The I-V relationship between the two probes and resistance estimated from Ohm’s law should be plotted. An ideal resistor should have a linear relationship and constant resistance.
3-Axis Piezo Nanopositioner
Build for $500
Electroless Plating
Build for $500
Optical Spectrometer
discord.
github.
x.
KEM-497AAA Pin Out Analysis
1968
20,000 nm
100 nm
20,000 nm
1971
10,000 nm
100 nm
10,000 nm
1974
6,000 nm
100 nm
6,000 nm
1977
3,000 nm
100 nm
3,000 nm
1981
1,500 nm
100 nm
1,500 nm
1984
1,000 nm
100 nm
1,000 nm
1987
800 nm
100 nm
800 nm
1990
600 nm
100 nm
600 nm
1993
350 nm
100 nm
350 nm
1996
250 nm
100 nm
250 nm
1999
180 nm
100 nm
180 nm
2001
130 nm
100 nm
130 nm
2003
90 nm
100 nm
90 nm
2005
65 nm
100 nm
65 nm
2007
45 nm
100 nm
45 nm
2009
32 nm
100 nm
32 nm
2010
28 nm
100 nm
28 nm
2012
22 nm
100 nm
22 nm
2014
14 nm
100 nm
14 nm
2016
10 nm
100 nm
10 nm
2018
7 nm
100 nm
7 nm
2020
5 nm
100 nm
5 nm
2022
3 nm
100 nm
3 nm
Capacitance-voltage (CV) profiling is a powerful technique for characterizing semiconductor materials and devices, especially the transistors that we build in our fab. The shape of the CV curve will provide information about the doping concentration in the silicon substrate. On this page, we will detail how to take CV measurements of your devices.
Probe station (see here for standard operating procedure)
Capacitance-voltage meter (i.e. Keithley 4200-SCS Semiconductor Parameter Analyzer)
Prepare the Transistor:
Ensure that the transistor surface is as clean as possible to minimize probe-to-pad contact issues. It is helpful to have another user with you to properly align and contact the pads without damaging other probes or the transistor surface.
Ensure that the transistor is properly connected and biased for C-V measurements (i.e. for an NMOS transistor, ground the bulk and source contacts, apply voltage from the gate or drain depending on the type of measurement).
Measurement Setup:
Set up the CV measurement equipment, we use a Keithley 4200-SCS Parameter Analyzer as our test equipment and Probe Station for circuit connections. Please follow the steps given in the Probe Station Manual to ensure proper probe-to-pad contact with the transistor.
Voltage Sweep:
If using an NMOS transistor with 3 terminals (i.e. no bulk contact), turn off the bulk probe on the KITE interface, ground the source pad, apply a small-signal AC voltage to the drain pad (constant frequency ideally above 100 Hz, low frequency measurements will be performed later), apply a large-signal DC voltage sweep to the gate pad (-8V to +8V for our case). Measure the total capacitance from the gate pad as well. If your NMOS transistor has a bulk pad as well, it is possible to modulate the bulk potential and model threshold voltage dependencies. For regular use, grounding the bulk and/or at least having it at the same potential as the source pad is ideal.
It is also possible to model the MOSFET as a MOS capacitor instead by connecting source and drain to the ground and only by sweeping the gate voltage. This “topology” may be deemed ideal to extract capacitive parasitics from the measured total gate capacitance:
When in accumulation (VGS < 0), mobile holes from the p-type substrate form a dielectric region due to being attracted under the gate. The total gate capacitance is the sum of the gate-source and gate-drain overlap capacitances, along with the gate-bulk capacitance.
When in depletion (VGS is a small but positive voltage), some number of mobile electrons are attracted under the gate but not enough to fully invert the net channel charge, therefore the region under the gate simply becomes devoid of mobile charges, but becomes more negative as the gate voltage is increased. Total capacitance is the sum of the overlap capacitances (which are often neglected due to their small magnitude) and the oxide capacitance (between the gate oxide and the induced weak negative channel) in series with the depletion region capacitance. This parallel topology decreases the total capacitance.
When in inversion (VGS >> 0, much larger than the threshold voltage required to “turn on” the MOS), a substantial number of electrons are attracted under the gate such that a strong conduction channel forms. The conduction channel forms the bottom plate of this virtual capacitance, and the distance between this bottom plate and the gate decreases as the channel inversion becomes stronger (with increasing gate-source voltage), increasing the total capacitance. Apply a DC voltage sweep to the transistor, typically from negative to positive bias (usual measurement range is from -8V to +8V). Measure the capacitance at each bias voltage.
Plotting CV Curves: Plot the measured capacitance as a function of the bias voltage. Below is an example of a measured capacitance versus applied voltage (C-V) curve. Note the decrease in the total capacitance as the mode of operation changes from accumulation in the deep negative voltages to depletion as the capacitance decreases significantly. There is no bulk contact in this measured NMOS transistor, and therefore the inherent and uncontrollable modulation in the bulk potential may be preventing the change of the mode of operation from depletion to inversion (note the lack of increase in the capacitance as the gate potential approaches +8V).
Analyzing C-V Curves: The shape of the CV curve will provide information about the doping concentration in the silicon substrate.
Dopant Concentration (ND): To measure the concentration of the deposited donor atoms, either the source or the drain terminal of the NMOS is used with respect to the bulk. If the drain and the gate are grounded, the subsequent capacitance measurements will be done between the bulk and the source terminals. Since the source and the bulk regions are oppositely doped, they form a p-n junction with a depletion region in between. This structure presents inherent diode and capacitive properties, which is ideal for doping concentration and profile measurements. The average doping should be extracted to later calculate the Debye length (in plasma physics, the distance at which a charge (among a sea of other charges) is shielded against electrostatic forces of a charged plane, such as that of a capacitor), flat band capacitance and bulk potential.
Flatband Voltage: Flat band voltage is the voltage that must be applied to the gate terminal at which the metal-oxide-semiconductor interface potential becomes equal in magnitude to the built-in potential, making the surface potential zero. Since the presence of a flat band condition affects the accumulation of charges for accumulation or inversion channel formation, it is an important parameter to extract for the modeling of the threshold voltage. VFB is usually interpolated from the C-VGS curves, if and only if the doping profile is assumed to be uniform over the region and interface trap state density is large. Otherwise, measuring the flat band voltage is finicky at best and extremely difficult at worst due to our fabrication methods.
Metal-Semiconductor Work Function Difference: The work function difference is a key parameter in determining the threshold voltage of the MOS transistor since the WMS forms a potential barrier against the inversion of the channel. The bulk potential, which is extracted using the doping profile, is an input to WMS.
Model Fitting: As a general rule of thumb, for long-channel devices such as ours, 1 MHz is the frequency at which high-frequency measurements are performed, while low-frequency measurements are generally performed at and below 100 kHz, down to 1-10 Hz.
Use semiconductor device simulation software or a theoretical model to fit the experimental CV curve to theoretical curves, which depend on the doping concentration. This can provide a more accurate estimation of the doping concentration. See the ideal CV curve below:
Extract Parameters: From the fitting or analysis, extract parameters such as doping concentration, and threshold voltage using known parameters such as oxide thickness. See page 10 of this document for a detailed explanation of the relevant equations. This file has an implementation of those equations in MATLAB.
As of June 2024, we are currently working on our own custom probe station and source-measurement unit, as described here. Once this is complete, we will be able to use our new setup to take CV measurements. We will update this page accordingly once this is done.
A guide on Analog Discoveries and Waveforms Software
A portable USB-powered test and measurement device, also known as the AD3, is a digital oscilloscope, logic analyzer, waveform generator, pattern generator, and much more. Digilent WaveForms software makes it easy to acquire, visualize, store, analyze, produce and reuse analog and digital signals.
Analog Discovery 3
$379
3
Jumper Cables set
$6.98
1
Micropositioners
TBD
4
Total Cost:
Setup Time:
Output Voltage Range: ±5 V
Accuracy:
±10 mV ± 0.5% (│Vout│ ≤ 1.25 V)
±25 mV ± 0.5% (│Vout│ > 1.25 V)
Number of channels: 2 (custom channels feature available)
DC Current Drive: 30 mA maximum
Download the Waveforms software: https://digilent.com/shop/software/digilent-waveforms/
Run the .exe installer
Plug the Analog Discovery 3s into the laptop and open up the Waveforms software.
Set up the circuit that connects the Analog Discovery 3 like this circuit diagram:
The actual circuit will look something like this:
For our purposes, click on Tracer (for IV Characterization).
Click on drop down to select transistor type.
Select “No Adapter”
Select “Measure Id/Vgs” and set the ranges for the Vgs and Vds.
Select step-size/no. of steps for both voltages.
Click play (in the top right corner) and watch the magic!
I-V Curve for ZVN3310A Transistor on Curve Tracer (replace this image with our chip curves).
Can adjust current compliance for Gate if needed. (below the main toolbar, right above the graph).
Get the code from github by typing in terminal
Cd into this directory then run the below Python script in any environment where Python is installed by typing in terminal
If this is the first time being run in this environment, make sure all dependencies are installed by typing the following command in terminal:
Based on Original Paper Found Here: https://www.sciencedirect.com/science/article/pii/S2468067222000621
In this Document
At its fundamental level, a piezo inertia actuator might seem quite simple: two contacting surfaces one of which alternates between moving slowly and quickly in alternating directions which, in turn, causes displacement on the other surface. However, there are many variables at play, all of which have significant effects on the efficacy of a piezo inertia actuator.
There is no single optimal solution to each individual variable, rather different combinations of variables function well together given specific piezo inertia actuator assemblies. Understanding the most impactful variables and their effects can simplify this process.
This document includes a list of specific variables broken down as closely to first principles as possible + a specific configuration that resulted in a working piezo inertia actuator.
Background
Piezo actuators are tiny stacks crystals that respond to voltage by physically expanding in a very repeatable way. The simplest of these crystal stacks simply expands and contracts in one direction. The magnitude of this expansion can range from single nanometers to multiple microns.
Actuator assemblies have been made utilizing this crystal stack by amplifying it's small expansion. This can be taken a step futher - by applying a sawtooth wave function to the piezo crystal, it can be made to expand slowly, but contract quickly. This, in tandem with some clever friction interfaces and dynamics, can be utilized to make a separate stage move much more than just the short range of the piezo draw (expansion) distance. It can effectively be used to move an infinite range.
The friction force between A and B is determined by the material choice, cleanliness, as well as the preload force Fa.
Having too much friction makes it harder for the slip phase of the stick-slip cycle to work. When the friction force is too strong, the inertia of A is no longer enough to overcome the higher friction force and the and surfaces do not slip; the assembly simply vibrates back and forth.
However, when the friction force is too weak the contact between both surfaces becomes inconsistent. This can also result in the stick phase being only a fraction of the draw distance of the piezo. Similarly to when there is too much friction, the assembly mostly just vibrates. This makes this hard to diagnose the issue.
It is also desirable for the surfaces of A and B to be hard.
As the piezo expands a very small amount (microns) any imperfections or change in angle between the A and B surfaces can cause the stick-slip cycle to fail and the actuator to get stuck. Therefore, having smooth surface finishes is desirable and increases reliability. Keeping the surfaces clean from debris has the same effect and also prolongs the lifetime of the surfaces.
Having a preload force between the and surfaces is paramount. If there were none, we would be relying on perfect alignment between the A and B surfaces throughout its range of motion.
Having a preload ensures that even if both surfaces are not perfectly aligned they maintain contact with each other. This preload force also and gives us control on the friction between A and B.
If the piezo element is mounted on the chassis, and not the stage itself, then any slop in the stage mounting will propagate as the stage moves throughout its range of motion. This can increase or decrease the force between the magnet and the stage, as well as wedge the magnet's corner against the stage.
This is very unpredictable for the stage dynamics. Making more precise mounting for the stage is also desirable for other reasons, such as wanting a very linear range of motion (assuming that the magnet interface is operating properly to begin with). This can be expensive however, as the tolerances are on the order of microns.
A poorly mounted stage can be calibrated out when using a 3-axis system, curbing the finicky precise mounting and tolerancing.
The entire concept of a piezo inertia actuator relies on the fact that the momentum of the stage during the stick phase will continue and overcome the friction force between A and B during the slip phase. In other words, the piezo pushes the mass A some amount then quickly pulls back. Without sufficient A mass, the slipping phase becomes very difficult to achieve.
Piezos can exert very high forces when expanding (stick phase), so increasing mass does not put significant strain on the piezo actuator itself. During the slip phase, we only require enough force to overcome the friction force between and B.
The rate at which the piezo can slip is just as important as the momentum of the stage. This is dictated by the capacitance of the piezo stack itself, but we have found that the more impactful variable at play is the slew rate of the driver. A proper driver that can pump or deplete voltage from the piezo in a matter of microseconds is critical to get consistent slipping action.
This can also dictate the frequency at which you can drive the stage, defining the maximum speed the actuator can move.
Though a linear saw-tooth waveform is able to produce movement of the piezo inertia actuator, it is far from optimal. Using a linearly increasing or decreasing waveform is not ideal for the sticking phase, as the sharp changes in direction can make the stage slip before sticking action occurs.
Using a gradually increasing waveform like the ones seen below is a more optimal solution.
The velocity of the waveform starts off slowly and gradually increases speed, which allows it to reach higher driving frequencies without slipping and even a greater velocity at the end of the sticking phase – which increases the momentum of the surface A.
Let Fcr be the maximum driving frequency at which there still is sticking: it is desirable that the rapidly changing portions of the signal (slipping phase) be 4 times faster than Fcr and that the slowly changing portions of the signal be 4 times slower than Fcr.
Vibrations are naturally created by the piezo element. They are undesired and indicate lead to inefficiencies.
Manufacturing the chassis assembly out of a stiffer and heavier material and fixturing the assembly to a stable base reduces said vibrations and greatly increases the efficiency and reliability of the machine.
This is especially critical for stages with more than one axis stacked on top of one another. This is yet to be tested.
PDu150 with a regular STM32 ADC was used for the testing below
PCB files above are the 2nd iteration on a custom board, with higher resolution ADC
OLD DRIVER BUT A BUNCH OF WEIGHT
Friction between and
We have a 3 mm square nickel-coated neodymium magnet and a precision ground stainless steel linear rail as the two surfaces causing friction.
Preload
We are using a 3mm square nickel-coated neodymium magnet that has 0.28kg pull and the magnetic attraction between the stainless steel linear rail and the magnet acts as the preload force.
Finish & consistency of and surfaces
We are using a 3mm square nickel-coated neodymium magnet as the surface and a stainless steel linear rail as the surface. The linear rail was chosen as the surface because it is precision ground and has an excellent surface finish and for the surface we are using the smoothest looking face of the magnet. Furthermore, both surfaces are handled with care to avoid scratches and burrs, kept clean, and cleaned with isopropyl alcohol.
Mass of A
The design starts performing the best when there is over 50g of mass on top of the carriage. If you are prototyping and just put something heavy on top of the carriage to test, certify the weight is properly fixed to the carriage and can’t move freely – which would just cause vibrations and a poor performance.
Waveform driving the piezo
The piezo element is driven with an 8 bit DAC and a PDu150 piezo driver. The waveform used is the same shown in the images in section “5. Waveform driving the piezo”, it has a peak voltage of 120V and a driving frequency of 1,400 Hz.
Previously, we used the BD150 driver, however, its slew rate was extremely low and the upgrade to the PDu150 driver showed very significant improvements.
BD150 slew rate = 12 V/us
PDu150 slew rate = 38 V/us
Stiffness / stability of the entire assembly
The most significant way this was handled was by attaching the piezo directly onto the linear slide and the magnet touching the rail. This ensures that all movement is directly transferred onto movement of the slide and less is lost due to compliance on other parts of the assembly.
Machining the main body of the actuator out of aluminum works well, however it is also working with a 3d-printed chassis out of PLA. Taping – or even just pressing down with your fingers – the assembly to a stiff plate or table solves vibration related problems.
VIDEO OF 3D PRINTED VERSION – SIDE MOUNTED MAGNET
VIDEO OF 3D PRINTED VERSIon – TOP MOUNTED MAGNET
Piezo element
We used this 4.6um draw distance piezo stack.
Linear rail and carriage
HMDS Prebake Temperature
100°C
Resist Bake Temperature
100°C
HMDS Prebake Time
60s
Resist Bake Time
90s
HMDS Amount (Drops)
2
Exposure Pattern
link
HMDS Spin Speed
4000 rpm
Exposure Source
Stepper V2
HMDS Spin Time
20s
Exposure Time
8s
HMDS Bake Temperature
100°C
Exposure Dose
HMDS Bake Time
60s
Developer Type
AZ-400K
Resist Amount
2 drops
Develop Time
60s
Resist Spin Speed
4000 rpm
Developer Temperature
20°C
Resist Spin Time
30s
Patterning is the core of any micro/nanofabrication process, as it is used to mask etch and deposit steps. First we spin coat photoresist to deposit a thin layer. Then we use our maskless lithography stepper to expose our pattern in the resist with light. Finally we wash away the exposed region with developer. This leaves behind a resist pattern that is resistant to many types of acid and plasma etches. It can also be hard baked and used as a dielectric, or metal can be deposited on top of it for a lift off process. The procedure described here uses a positive resist, AZ-P4210, but negative resists also exist where unexposed areas become soluble.
See the appendix for useful resources about spin coating, our resist, and developer.
Harm to your eyes/eyesight is possible if you do not wear the right protective equipment. To shield your eyes from harmful UV-rays, everyone working with or near the stepper should wear UV-blocking goggles/glasses.
HMDS is a toxic, volatile chemical that should only be used in the fume hood.
Photoresist, while not as bad as HMDS, contains some nasty solvents and should be cleaned with acetone if it gets on anything other than chips and the spin coater.
AZ-400K developer is a strong base containing KOH. Use the appropriate precautions for working with bases. Only agitate the developer inside the fume hood to reduce the chance of droplets.
Flashlight Jig or Maskless Lithography Stepper
AZ-4210 positive photoresist (specsheet)
AZ-400K Developer
Acetone
Isopropanol
Deionized water
Evaporating dish
If you have already claimed a chip number, and opened its specific chip view data sheet, record your patterning data into that sheet. If you have NOT claimed a chip number, and have NOT begun recording data in a chip specific sheet, open this central chip count sheet, claim the next available chip number, open the blank chip view sheet for that specific chip number and record all subsequent process data into it.
Cleave the Si wafer into a ~1 cm x 1 cm square.
Dust off the wafer with the nitrogen gun
In the fume hood, hold the wafer with tweezers over the sink.
Rinse the polished side of the wafer thoroughly with acetone, then isopropyl alcohol.
The acetone leaves a residue that must be removed by the isopropyl alcohol rinse.
Blow the wafer dry with the nitrogen gun.
Even when the wafer appears dry, there may still be moisture on the edges, so dry liberally.
Inspect with the naked eye and note any marks on the wafer.
Marks present after cleaning are likely scratches that need to be documented so we observe their effect on the process.
See the Vacuum Spin Coater SOP. Remember to pipette an appropriate amount, close the lid, and turn on the vacuum.
If previous steps required cleaning with solvents, pre-bake the wafer to dehydrate the surface.
If patterning on silicon or glass, spin coat 2-3 drops of HMDS. Otherwise skip to 7.
Choose Time and RPM from patterning data sheet
HMDS bake on the hot plate at 100°C for 60 seconds.
Spin coat as much photoresist as needed to mostly cover the chip, normally 3-4 drops.
Choose Time and RPM from patterning data sheet
If chip is having trouble sticking on o-ring either: try pressing top of chip while vacuum is on with some pressure to make a better seal (use plastic tweezers)
Or, take o-ring off and clean then re-install.
Soft bake on the hot plate at 100°C for 90 seconds.
Power: Check that the projector, stage, and vacuum pump are all plugged in.
Plug the HDMI cable for the projector, the USB camera cable, and the Arduino + CNC Shield USB into your computer.
Set up the projector as an extended screen on your computer’s display settings (Win+P on Windows).
Prepare your exposure, red align, and UV focus patterns.
Your exposure pattern should be pure blue in the areas you want exposed, and black elsewhere. Include alignment marks for the next layer.
Your red align image should be completely pure red except for alignment marks that match the previous layer.
Your UV focus pattern should be completely black except for blue focus marks. Ideally these should be in a region that gets fully exposed. You may also use grayscale to avoid unintentional exposure.
Note: If your pattern images have extraneous color components, the GUI has options to enable/disable different color channels for the red focus, UV focus, and exposure pattern. Use these at your convenience.
Set up the patterning GUI util script
In the source or scripts folder, find and open config.py in your text editor of choice. If your GUI has an integrated camera implemented, set RUN_WITH_CAMERA to True. If your GUI uses a motorized stage, set RUN_WITH_STAGE to True.
Run the python script called Lithographer.py. You can do this by opening a terminal and running the command "py -3.10 Lithographer.py". Make sure you have all dependencies installed as described in Lithography Stepper V2 Build. If the program does not run, see #troubleshooting.
Move the black full-screen window to the projector (on windows, this is shift + win + L/R arrow)
Use the three import thumbnails to select the desired images, these can be changed whenever. Make sure they are correct using the small previews.
For more information about the software and its usage, click the "help" button at the bottom right of the GUI.
If you do not have an integrated GUI camera implemented and you are using the Flir Camera, open SpinView, select BlackFly S, and press the green play button. If you see horizontal bands across the live camera preview, follow the corresponding steps in Troubleshooting.
The GUI should appear similarly to below. If you do not see content on the camera preview yet, this is fine for now.
If you're doing this for the first time, it is recommended to read through the full instructions before starting. You will need to move somewhat quickly because the stepper will begin to expose photoresist in about 1 minute.
Make sure the correct pattern is loaded in the Lithographer GUI. See step 4.4 in #stepper-setup
LYFT and move the projector to the left, out of the way of the small hole in the chip holding jig.
Turn on the vacuum pump. Ensure vibrations are isolated from the rest of the stepper.
Orient the chip over the hole with its squarest corner in the corner of the alignment jig. The vacuum will suck it against the jig. Push the chip into the corner. Doing this repeatably eliminates the need to adjust theta.
LYFT and move the projector back into place. Ensure it is touching all four bolts. Be careful about not scratching the chip.
Turn the Z knob on the stage or modify the GUI stage coordinates until the objective lens is ~2mm from the chip and the image on SpinView or the GUI is in focus.
Move the X and Y axes manually, or by using the GUI. One arbitrary "step" is approximately equal to 1 micron. To avoid straining the motors/stage, test small step sizes (i.e. 1) before trying larger ones (i.e. 10 or more). The minimum reliable step size is about 8-12 microns.
If this is your first layer, find an area with minimal contaminants, plan how many exposures you will do, and in which direction you will move. Otherwise, align to your previous layer using your pattern's alignment marks.
Once you're ready to expose, move the Z axis by -54 steps (fine-tune if necessary). This will switch from focusing in red to focusing in UV.
Set your exposure time to 8000 ms.
Press show UV focus. You are now exposing the photoresist, so try to do this quickly. If necessary, make fine adjustments to the Z axis if any marks seem less in focus than others. The image above is well focused (all crosses look in focus).
Press the big red "Begin Patterning" button. Avoid bumping the table while you wait for the exposure to finish.
Press "Show Red Focus" and move in Z by +54 steps to switch back to red.
Move on to your next pattern and repeat. A good spacing between patterns is 580 steps in Y and 1080 steps in X (assuming one step per micron). This will allow you to easily find your next pattern. Take note of where you started, which direction you're moving, and how many exposures you've done so that you don't miss any patterns.
Once you're finished, press "Clear". Push the projector to the left again, and carefully hold your chip with tweezers while you turn off the vacuum.
Refresh the developer if it has been out for more than 6 hours. Otherwise skip to step 2.
Pour the used developer into the bottle labeled "developer waste"
Rinse the evaporating dish with DI water.
Pour about 30 mL of pre-diluted 3:1 AZ-400K developer solution into the evaporating dish labeled “AZ-400K 3:1”. For a sense of scale: in the dish above this should only be about 3mm tall of liquid (just enough to cover the surface of the chip)
Fill another evaporating dish halfway with DI water.
Start the timer at the same time as you drop the wafer into the developer, photoresist side up.
Agitate the chip in the developer solution with quick, small circular motions. Watch this video for proper technique.
5 seconds before the end of the timer, pick up the chip and prepare to drop it into the water. The chip should hit the water exactly at 0 seconds. Rinse well for 10 seconds.
Note that development time includes all the time that developer is touching the chip, not just during agitation
Dry off the chip with compressed air.
Look at the chip with your bare eyes to help build an intuition for the process.
Put the chip under the microscope. Connect to the camera with your laptop and take pictures of each developed pattern at 5x. If there are smaller interesting features or defects, you may take pictures at higher magnification or under dark field. Be aware that it's easy to get carried away with the microscope.
If you want to measure the length of pitch in microns (μm) then you must use only the calibrated objective.
This calibration converts pixels of the camera to microns using a calibration slide from the manufacturer. If you use a different objective, the measurement will be inaccurate.
After this is selected, measure the pitch or any other length using the line tool
In order to measure the developed pattern resolution, expose this resolution test pattern. The resolution is equal to the line pitch that is resolved in both light and dark field. Use AmScope to measure. The pitch is the distance between the center of two lines.
For each chip, batch save with the chip number as the first three characters in the file prefix. Do not change the folder. A script will upload to drive every 5 min.
Paste a link to the folder in the last column of the chip sheet.
Put the chip away in a plastic box and label it with a serial number.
See below for examples of underexposure/development, overexposure/development, non-uniformity, and optical blurring.
Right side: thicker lines and blurry edges. Left side: thin lines and sharp edges.
See this webpage for in depth spin coating theory: https://www.ossila.com/en-us/pages/spin-coating
Put on UV protection glasses.
Before placing the chip under the exposure area, turn on the flashlight and adjust the position of the UV meter’s sensor head to maximize the reading.
Depending on the battery level, this should be around 10 mW/cm2.
Turn off the flashlight, being careful not to move it out of position.
Place the chip on the plastic cap photoresist side up.
Place the mask on the wafer. Gently press down to sandwich the two together.
If the ThorLabs logo is correctly oriented then the chrome is facing you. Put that side face down towards the chip.
Try not to slide the mask on the wafer because you’ll damage the photoresist.
Place the cap with the wafer and mask on top of the UV sensor.
Turn on the flashlight for the desired exposure time.
Record the measured exposure time in the spreadsheet
Dose should be automatically calculated in the sheet based on exposure option used
If horizontal bands appear in Flir-based camera preview:
Open the Flir camera viewer.
Select the connected Flir camera model (Blackfly S) and select the green triangle. You should see a preview of the camera's output (it may appear black or grainy; this is okay).
Update the camera settings so that Acquisition Frame Rate Enable, Acquisition Frame Rate, Exposure Auto, and Exposure Time have the same values shown below:
Verify that the horizontal bands are no longer present across the camera preview. This may be easier when viewing the stage or a chip while illuminated with the projector.
Links to work in progress notes from individual contributors - add your link here with a pull request
Shared, more concise notes live here on Gitbook. See home page for info
Automating the Lab Process
Lab Auto's goal is to automate the steps of the NMOS process for Hacker Fab. This will take the form of a lab robot with integrated machines for each step of the process. Currently, we're focusing on an automated spin coater that will receive a blank chip and spin on HMDS and photoresist, with liquid dispensing and baking capabilities.
Total Time
15-35 minutes
Spin Speed
4000 rpm
Spin Time
20s
Anneal Temperature Profile [temp 1, time 1, temp 2, time 2...] [°C, min]
700B: [400, 20-30], P504: [200, 10-15], B154 [200, 10-15]
Three types of "spin on glass" are currently used in the Hacker Fab. 700B, P504, and B154, all three sourced from Filmtronics. Each of these begin as liquids, which are spun onto the surface of the chip, then annealed to form solid thin films. This is known as a sol-gel process.
700B becomes an undoped thin film of SiO2, but with lower density than a thermally grown SiO2. After high temperature exposure (~1100C) this thin film densifies to the density of a thermally grown oxide.
P504 becomes a thin film of SiO2, with a small amount of Phosphorous in it, also with lower density than a thermally grown SiO2. This is also referred to as a "spin on diffusant." After high temperature diffusion (~1100C) this thin film densifies to the density of a thermally grown oxide.
B154 does not have SiO2 precursors like 700B and P504, but becomes a solid thin film with a small amount of Boron in it. The composition of this solid film after relatively low temperature exposure (~200) is not clear, since the formula is proprietary, but it is believed to be some sort of polymer. Upon diffusion (exposure around ~1100C) the B154 thin film becomes SiO2 of thermally grown density.
These spin on glass films are often etched with a dilute HF solution, or BOE (HF + NH4F) due to the high selectivity with Si. However, the etch rate of spin on glass annealed around 400C is much faster than that of spin on glass that has been densified at around 1100C. Additionally, the B154 film that has been annealed at 200C is not effectively etched with HF, but is effectively etched with HF after diffusion at 1100C.
As indicated above, the purpose of the P504 and B154 deposition is to create a dopant source at the surface of the silicon, which can be diffused into the silicon substrate. 700B is used as a diffusion barrier, or a dielectric layer to fabricate metal interconnects on top of.
The main concern with spin on glass, is its tendency to crack (extent of cracking varies, but full shatter can occur leading to flake off), have variation in uniformity, and have pinholes. Cracks and pinholes can lead to uneven doping across the surface, failure of 700B to act as a diffusion barrier, or metal interconnects shorting to the Si below. Factors like humidity, annealing temperature profile, particulate contamination, and shelf life of the spin on glass solution.
However, the CMU Hacker Fab has found particulate contamination to be the number one cause of defects, and this issue has been mitigated greatly by using filtered syringe tips during deposition, as seen below in the procedure.
Filmtronics 700B, P504, or B154.
Acetone
Isopropanol
Check that the working volume of spin on glass is labeled with the date it was poured. For 700B and P504, ensure that the solution has not been out for more than a month (main bottle is stored at 5C).
If you are pouring a new working volume of P504 or 700B, let it come to room temperature before using it (ideally, wait 24 hours).
Preheat the Hot Plate to 100°C
In the fume hood, hold the wafer with tweezers over the sink.
Rinse the polished side of the wafer thoroughly with acetone, then isopropyl alcohol.
The acetone leaves a residue that must be removed by the isopropyl alcohol rinse.
Blow the wafer dry with the nitrogen gun by pressing the wafer against a cleanroom wipe on the table to ensure it does not fly away. Get a good grip on it with your tweezers.
Even when the wafer appears dry, there may still be moisture on the edges, so dry both sides liberally for ~20 seconds
if there is visible acetone residue after drying, repeat steps 2-3
Place the wafer in the center of the hotplate for 20 seconds
Be sure to handle the wafer with tweezers that can handle high temperatures (metal tweezers)
No need to turn the hotplate off since annealing will require 100°C initially as well
Place wafer onto the chuck of the vacuum spin coater
Open the SOG container while keeping the bottom resting on the table
Never open containers up in the air or outside of the fume hood
Pipette 1-2 drop of SOG using Luer Lock filtered syringe:
Take a clean syringe and draw it up ~½ to create an air pocket in the tube
Suck up SOG about halfway up the syringe. This is a lot more than you need for 1 drop, because the filter needs to be wetted by the excess solution before drops are released.
Twist on a syringe filter
Release 2 drops back into the SOG container
Apply 1 or 2 drops to your chip, make sure the chip is completely coated in solution but do not use more than 2 drops
Dump any remaining SOG in the syringe back into the SOG container
Dispose of the syringe and the filter in the waste bucket
Spin coat the wafer (Remember to switch on the vacuum!)
After spin coating, the SOG application should appear even. (See pictures below)
Immediately move onto annealing
The hot plate should already be at 100C
Place wafer onto the center of the Hot Plate
Be sure to handle the wafer with tweezers that can handle high temperatures
Set the hotplate to the desired annealing temperature (200C for P504 or B154, 400C for 700B)
After the desired anneal time has passed (10-15 minutes for P504 and B154, 20-30 minutes for 700B), use metal tweezers to remove the chip. Be careful not to burn yourself.
If the next step requires higher temperatures, see the Tube Furnace SOP for details.
See Inspecting SOG wafers document for a more detailed overview of failure conditions and possible causes.
Be sure to work under fume hood when working with SOG. The SOG can give off toxic vapors (especially during annealing)
DO NOT touch the hot plate during operation. A 400 C hot plate will cause severe burns. (Reminder: 400 C = 752 F). The same is true of the glass cover, which is why it is important to ramp down before touching.
Particulate/dust contaminating liquid SOG.
Explanation: If disruptions to the surface tension of the liquid SOG are seen before spinning, then some type of particulate is in the SOG and this warrants restarting the test. There are three possible causes of this…
Dust landed onto the wafer after the SOG was applied
Dust already existed on the wafer from improper cleaning
Some SOG has hardened inside the bottle creating fine flakes of SiO2. These flakes then get sucked up by the pipette and deposited onto the wafer with the liquid SOG (Example picture above). This warrants preparing a new bottle of SOG based on this document.
Particulate/dust contaminating wafer surface.
Often, after spin coating disruptions to the SOG evenness/thickness can be seen in localized spots on the wafer. There are possible causes of this…
Some SOG has hardened inside the bottle creating fine flakes of SiO2. These flakes then get sucked up by the pipette and deposited onto the wafer with the liquid SOG. These flakes are clear and sometimes not visible pre spinning, and are then only visible after spinning.
Particulate Landed on the wafer during spinning. Sometimes the spin coater can create turbulent air and kick up dust from inside the spin coater which then lands onto the wafer.
The wafer had a preexisting scratch or mark big enough to cause surface tension issues which result in the liquid SOG “un-wetting” in that spot and exposing the substrate. These scratches are often caused by scratches that occur during cleaving, slipping across the wafer when using hard tip tweezers, or dropping the wafer.
Radial variation in thickness/diffraction color
Sometimes after spin coating, there may be a radial pattern of changing color on the wafer. The varying colors indicate variation in thickness since SiO2 is translucent so thin films diffract and appear different colors based on thickness. These variations are usually on the order of a few hundred Angstroms (A) (film thickness ~2000 A) and may not warrant restarting.
Wafer flies off the chuck while spinning
Sometimes either due to bad two sided tape adhesion (regular spin coater) or improper sealing onto the vacuum chuck (vacuum spin coater). The chip may fly off the chuck due to inertial forces. This usually warrants restarting since when the chip flies off it hits the side causing uneven spreading of the SOG or lands onto the SOG.
Pinholes
Possible Causes
Scratches or dust particles on the wafer Cause the liquid SOG to “un-wett” in some spots. This essentially creates a dip in the SOG layer that extends to the wafer surface below the SOG.
Particulate resting on top of the SOG
Possible Causes:
Dust coming into the fume hood and landing onto the wafer after the SOG layer has solidified.
Soft baking photoresist and annealing spin on glass.
Plug in the hot plate, it should beep, light up the screen, then go dark.
Switch the hot plate on, it should light up and display both current temperature, and a pending set temperature.
Turn the knob until the desired set temperature is present, hold the knob down until it beeps to set the desired temperature.
A small green circle should appear at the set temperature
The screen should alternate between set temperature and current temperature, ensuring that the current temperature is increasing.
Hold the knob down until the set temperature is canceled.
The small green circle should turn off.
Turn the knob to your new desired temperature, hold the knob down until it beeps to set the desired temperature.
A small green circle should appear at the set temperature
The screen should alternate between set temperature and current temperature, ensuring that the current temperature is increasing.
Hold the knob down until the set temperature is canceled.
The small green circle should turn off.
Switch the hot plate off.
Unplug the hotplate.
This SOP is specifically for etching 300nm of polysilicon in the NMOS process
Total Time
15 min
SF6 flow rate
10 sccm
Etch time
60s
RF Power
100W
This first etch step creates the transistor’s gate by etching away almost all of the polysilicon and gate oxide, except for the islands covered by patterned photoresist. We use plasma etching (AKA dry etching) for two reasons:
Plasma is capable of etching silicon, whereas HF is not.
The anisotropic (vertical) etch profile is capable of transferring smaller patterns than isotropic etches.
The plasma etcher breaks down the normally inert SF6, creating a fluorine ion containing plasma on the surface of the chip. A combination of physical bombardment and chemical reaction removes material from the surface. Physical bombardment occurs when the pressure is low (<~.1 Torr) and results in an anisotropic (vertical) etch. This allows for precise transfer of a photoresist pattern onto the underlying material. Chemical etching dominates at higher pressures and results in an isotropic etch. Fluorine reacts more quickly with Si than SiO2, resulting in high selectivity.
PE-25 Plasma Etcher
Chip with patterned resist on Si
Acetone
Isopropanol
If you have already claimed a chip number, and opened its specific chip view data sheet, record your patterning data into that sheet. If you have NOT claimed a chip number, and have NOT begun recording data in a chip specific sheet, open this central chip count sheet, claim the next available chip number, open the blank chip view sheet for that specific chip number and record all subsequent process data into it.
Turn on the etcher via the switch on the back panel.
Turn on the laptop and open the Plasma Etch app.
Turn on the RF power supply on top of the etcher.
Open the chamber and place your chip in the middle of the rack. Close the chamber.
Set O2 flow, SF6 flow, power, time, vacuum setpoint in Sequence screen. Save your sequence.
At the top menu bar, go to power and turn on RF and vacuum. The pump will start.
Wait until the pressure (the number next to "vacuum") is below .1 Torr.
Go to commands > cycle off. This will purge the chamber for three seconds with nitrogen in order to remove H2O. If any water is in the chamber during the plasma it will react with fluorine to make HF. Very bad.
Commands > standby. This will start the pump again.
Repeat steps 2-4 to purge again. This makes sure no water is in the chamber.
Open the valve on the cylinders of gas that you are using. Lefty loosey.
When you are ready to start etching, select commands > plasma.
During the etch, monitor the pressure on the screen (should be at your setpoint) and the outlet pressure on the regulator (should be around 5-15 psig). Look in the window for pretty plasma!
SHUT THE GAS CYLINDER. RIGHTY TIGHTY
At the end of the cycle, the etcher will purge itself once, pump down, then purge again. To be safe we’ll purge a third time:
Commands > standby. This will start the pump again.
Wait until the pressure is below .1 Torr.
Commands > cycle off. Lets gas in for 3 seconds
Commands > standby.
Wait until the pressure is below .1 Torr.
Commands > shutdown. The chamber will come to atmosphere in 30 seconds, at which point you can open it.
The procedure is the same as for silicon etching, but you may skip a purge before and after the plasma. This is because
Total Time
6 min
O2 flow rate
10 sccm
Etch time
120s
RF Power
100W
SF6 is not toxic, but fluorine is. By purging before and after the plasma, we’re trying to prevent two things:
Purging before removes all water from the chamber. This prevents any HF from being formed, which would otherwise corrode the pump and exhaust. If the exhaust hose connected to the pump turns green, this is an indication that HF is being formed.
Purging after removes all reaction products from the chamber. This includes SiF4 and various other sulfur oxides.
Total Time
1 minute
Acetone Spray Time
20 seconds
Isopropyl Alcohol Rinse Time
10 seconds
Nitrogen Blow Dry Time
10 seconds
Stripping removes all photoresist from a chip. This is typically done after an etch step is completed, though it can also be used to remove resist before etching if you need to redo patterning.
Fume Hood with Sink
N2 gun
Chip with photoresist
Acetone
Isopropanol
Spray the entire chip with acetone
Rinse with IPA
IPA must always be used after acetone to remove any acetone residue
Dry with nitrogen gun until the surface is entirely dry
This requires you to blow dry the back of the chip as well. Surface tension tends to pull the liquid towards the back
Be sure to spray the chip over a sink. Do not use near source of high heat.
*This only works with SoG on pure silicon and NOT polysilicon. Should work for both 700B/P5O4
The main purpose of this SOP is to describe a method that we can use to approximate the thickness of SoG. This is especially important in certain plasma etching processes, where removal of SiO2 is needed.
Spectrometer
Spectrogryph opened on computer connected to microscope view
Calibration Graphs (should end with .sgd, can only be opened in the Spectrogryph app)
Picture of Spectrometer Below:
Silicon Chip with 700B/P5O4 SOG
First, ensure that the spectrometer is connected to the computer.
In addition, place SoG on silicon chip sample on the slide under the microscope.
Open Spectrogryph software on Computer
Under Plot/Views, select “New Acquisition View”
After which, you should see something that looks like:
In the upper left corner, select “Device Type” and select ASEQ. Then press connect.
Change exposure to 5000 ms (or more, if you want less noisy data)
Select single shot or continuous
Use Single Shot if you want to get one graph that is taken after 5 seconds of exposure
Use Continuous if you want a graph that is constantly being recorded (hence changing)
Pressing “Acquire” would start the readings. Before pressing “Acquire”, ensure that the probe is connected to the microscope (will need to press the probe against the microscope to get good readings, as shown in picture below).
7. Once a graph of Count against Wavelength is obtained, we need to normalise the counts. This is done by clicking on "Process" and "Normalise (Peak)".
Once normalized, we can now save this spectral plot in file (save it in the .sgd format, so that you can re-open it in spectrogryph later)
Determining Thickness of SoG
Create another New Acquisition View
Drag the Calibration graphs file (should end with .sgd) into the New Acquisition View
You should see this:
The color of the graphs correspond to the actual observed colors of the glass. This can serve as a good benchmark as to what the thickness of your glass might be.
As seen, the SoG with the lowest thickness (190 nm) had the maximum peak at a wavelength of ~590nm. As the glass thickness increases from 190 nm to 255 nm, the wavelength at maximum peak increased accordingly. Following that, from 255 nm to 276 nm, it can be seen that a second peak is starting to form (at a wavelength of around 480 nm). Finally, from 276 nm to 314 nm, the peak at 590 nm disappears, and now the peak at 480 nm becomes more distinct.
Lastly, drag the .sgd file that you previously saved in Step 7 into the plot above.
Determine which shape your graph most closely resembles to determine SoG thickness.
Also note that the color of your glass is a pretty good indicator of what thickness it will be. So for instance, if your chip looks pink, just by looking at the calibration graphs, we can determine that thickness is around 270 nm.
Spectrogryph Manual Website: https://www.effemm2.de/spectragryph/about_help_manual.html
To apply a thin layer of wet chemicals to the surface of the chip, with sub-micron control.
Plug in the Spin coater and the vacuum pump (if either is not able to power on try hitting “reset” on the outlet)
Use the arrows on the touch screen to set the spin time and rpm
Use tweezers to place wafer onto the o-ring so that the chip completely covers the o-ring and will seal onto it
Also attempt to center the chip on the o-ring as best you can. This will minimize the chances of it flying off.
Use a pipette to apply liquid on top of the wafer while it is seated in the spin coater. You only need a couple drops in the pipette, don't suck up extra.
Close the HMDS/photoresist/SOG lid.
Close the spin coater lid
SWITCH ON THE VACUUM PUMP!
Press “begin”
This will begin a pre spin at 600 rpm
Press “coat”
When the spin time has been reached, the coater will automatically ramp down to rest
Open the lid and remove the wafer with tweezers
If you hear the spin coater constantly beeping, this is normal. It does this because we are using a drone motor ESC, so it is programmed to make a noise after being at rest for a few minutes. It’s trying to help you find it 🙂
Feel free to turn it off using the switch in the front so the noise goes away.
THIS IS NOT A COMPREHENSIVE GUIDE FOR HF ETCHING. THIS IS A RESOURCE TO COMPLIMENT IN PERSON TRAINING
Same process for Doped SOG:
You must complete Hydrofluoric Acid training before using Hf for etching.
The HF/BOE etch is used to do one of the following.
To etch holes through a layer of glass to open up areas for electrical contact to to doped Silicon.
To etch holes through a layer of glass being used as a diffusion barrier to open up regions for doping.
To etch way specific areas of doped glass to control where dopant diffusion will occur.
To strip a chip of leftover doped glass that needs to be removed for subsequent processing.
To strip native oxides, thermally grown oxides that may have formed during drive in diffusion.
To etch gate oxide layer left over after plasma etching of polySi with a plasma etcher in the original NMOS process.
Each of these conditions may require different etch times, and require different amounts of temporal precision for when to stop the etch. Regardless, you need to have an understanding of the density and thickness of layers you're etching, and the device you're processing to understand what etching parameters to use.
Spin on glass/diffusant should be patterned with HMDS to enhance adhesion between the photoresist and SOG layer during etching. Otherwise the photoresist is prone to peeling.
Relevant reaction:
SiO2 + HF → H2SiF6 + H20
Fume hood
Appropriate container for acid (polypropylene)
Nitrile Gloves (under)
Neoprene Gloves (over)
Nitrile Splash Apron
Face shield
Hydrofluoric Acid or Buffered Oxide Etch
DI water
Put on PPE, including splash apron and face shield, where the over neoprene gloves when handling items in the fume hood
Never remove tweezers from the fume hood. Once a tweezer has been used in the fume hood, it must remain there.
Place your chip on the cleanroom wipe taped to the inside of the acid hood.
Open the three small jars, labeled BOE, R1 (rinse 1), and R2 (rinse 2). Keep them in the orientation pictured below to minimize the chances of spilling, have them in the correct sequential order, and ensure that if a spill occurs it stays within the fume hood.
Keep them in the black 3D printed tweezer guide.
R2 should be filled higher than R1, and R1 should be filled higher than the BOE.
Use the modified tweezers to pick up and hold your chip.
These are self-locking tweezers, once it has a good grip you can hold the tweezers by the metal wire handle on top
Start the timer and place your chip in the BOE, letting the tweezer dongle rest on the 3D printed etching stand
When the timer is up, move the chip to R1, and jiggle it in R1 for 30 seconds
Move the chip to R2, and jiggle it in R1 for 30 seconds
Hold the chip over a beaker and spray it with DI water thoroughly.
Place the chip back on a new cleanroom wipe outside the fume hood.
Place the modified tweezers back in the fume hood where you found them
Remove your gloves first, keeping them in the fume hood where you found them
Remove the rest of your PPE
Now take a pair of tweezers from outside the fume hood and pick up your chip
Rinse the chip using a DI water squirt gun over the sink for 20 seconds, or hold it under the DI water tank.
Dry your chip off with a nitrogen gun.
Incomplete oxide etch looks like rainbow patterns at the bottom of holes.
Complete etch looks like flat white reflective Silicon
Inspect before stripping the photoresist
This document is an operating procedure for our specific lab, and is a reference for students to know how to consistently complete a successful etch.
Deposit thin films of Aluminum onto the chip so that we can make electrical contact with doped Si and make interconnects between those contacts.
Put on nitrile gloves.
If the Pfeiffer turbo pump is on, power it off by pressing the button pictured below.
Use the arrows to scroll to parameter 309, which show pump speed.
wait until the pump speed is at 0Hz
Slowly vent the chamber by unscrewing the vent screw located on the turbo pump (behind the chamber)
Try to increase 1 order of magnitude every 10 seconds
Wait until the pressure is at 1E3 hPa or greater (pressure is given by parameter 340).
Unskrew the two black knobs pictured below (B), then lift the chamber lid.
Turn the two black knobs on the top of the blue box as shown in Figure 1, and open the lid.
Make sure youre wearing nitrile goves.
The tungsten filament is secured with two barrel connectors piuctured below (B). The filament can be removed by slightly loosening the screws closest to the filamnet.
Tightly wrap aluminum around the Tungsten coil. The filament becomes brittle after evaporation, so be careful not to break it. if you do break it, use a new filament
Place the tungsten filament back and screw it in. Make sure it is straight.
Place ~ 1 inch of poly ide tape on the substrate holder shown below (A), then peel off the clear layer on top of the tape. Since aluminum often covers the square box, when you put the tape on, aluminum might stick to it and flake off. Just continue attempting to apply tape until it stick without flaking off.
Place your chip on the yellow tape, and use tweezers to gently press down on the corners of the chip.
Double check that the metal sheet at the back is not bent and still covering the vacuum.
Double check that the wire and barrel connectors are suspended and not touching anything conductive as to short them.
Use a multimeter to ensure no continuity between the power and ground wire going into the chamber.
Close the blue lid and screw the black knobs all the way.
Close the vent all the way (hand tight)
Turn on the pump.
Screw the black knobs more since they tend to loosen after the pump turns on.
Wait for the pressure to reach at least 6E-5 hPa. This will take 10+ minutes depending on how clean the inside of the chamber is, and how well it is sealed.
Turn on the power source as shown below (A)
Press start on the STM software
Slowly turn up the current on the power source until ~30 Angstrom/s is reached (do not exceed 45 amps). Keep adjusting the current to keep the rate between around 30 Angstrom/second until the thickness hits 5 kÅ, or you can no longer sustain the rate.
If you click the dial, you can change the digit.
The voltage and power will automatically change as you adjust the current, so you do not need to worry about it.
The pressure might increase during evaporation.
After the thickness hits 5 kÅ, TURN THE CURRENT BACK TO 0 AMPS BEFORE TURNING OFF THE POWER SUPPLY.
Press stop on the STM software.
Turn off the vacuum pump. WAIT until parameter 309 shows 0 Hz.
Slowly vent the chamber by unscrewing the vent screw located on the turbo pump (behind the chamber)
Try to increase 1 order of magnitude every 10 seconds
Open the chamber, and peel the tape off with your chip.
Use polymer tipped tweezers to grip the sides of teh chip, then use separate pair of tweezers to peel the tape off the chip.
Figure from Microchip Fabrication (Van Zant, 2004)
MTI Thermal Evaporator with Inficon Film Thickness Monitor
Kapton tape
99.999% Aluminum wire
Recommended: piranha solution
Place the chip on a hot plate at 180°C for 90 minutes. Cover it to avoid surface contamination.
Wear gloves while handling parts exposed to vacuum because oil from your hands will outgas.
Use double sided kapton tape to attach the chip(s) to the center of the substrate holder.
Put 20 cm of aluminum wire into the crucible.
Carefully close the chamber.
Check that the vent knob on the turbopump is fully closed by turning clockwise.
Start the vacuum by pressing the on/off button on the pump.
Wait for the pressure to get below 5E-5 hPa. You can also program the bakeout to have a long 0°C segment at the beginning.
Make sure that the current knob on the side of the evaporator is in the “Auto” position.
Press “Set” and “◀” to return to the standby state, then press and hold “▼” for 2 seconds to start the program. Press the green run button to enable current flow.
Ensure the pressure reads less than 5E-6 hPa.
Program the evaporator to ramp to 1125°C over 2000 seconds, hold for 500 seconds, and ramp down over 2000 seconds.
Start the program. Set a timer for 28 minutes so that you open the shutter at the right time.
Set up the film thickness monitor by plugging its USB cable into the laptop and starting the STM-2 software.
When the evaporator reaches the target temperature, open the shutter using the knob at the top of the chamber and press “zero” on the STM-2 software.
Monitor and record the pressure (should be below 5E-6 hPa) and deposition rate (should be greater than 5 Å/s) during the evaporation.
When the temperature starts to drop, close the shutter.
Wait for the temperature to drop below 350°C before proceeding
Turn off the pump by pressing the same on/off button.
Wait 10 minutes for the turbopump blades to slow down.
Slowly turn the knob on the turbopump until the pressure starts to increase (<¼ turn). Don’t open it all the way or the rapid pressure increase will destroy the pump, which is still spinning really fast.
Wait another 10 minutes.
Once the pressure has increased to 1 hPa, open the valve a bit more. Wait until the chamber is at 1000 hPa (1 bar).
Open the chamber and place the substrate holder face up.
Use a utility knife blade to separate the chip(s) from the substrate holder.
Peel/scrape off any tape residue left on the chip.
400-500C
As previously mentioned, don’t vent the chamber too quickly. Turbopumps supposedly have the kinetic energy of a car on a highway and can “grenade”... we don’t want to find out what that means.
The sample holder may be hot. Be careful.
Use this as a backup technique when the crucible/thermocouple are out of commission. No temperature control is used, instead we manually control the current running through a tungsten filament with aluminum wire wrapped around it. This is a quicker, less accurate technique. The deposition monitor can still be used to determine when the metal is depositing on the chip, though it may be less accurate due to the rate of deposition.
Use a 3-wire tungsten filament instead of a crucible. Wrap 20 cm of aluminum wire around it, keeping away from either end.
Screw it into the terminal posts in the evaporator.
Scrape/wipe off some deposited aluminum from the glass jar so that you can see into the chamber.
Follow all other steps for pump down, except anything that mentions programming temperatures.
Turn the switch on the right of the machine clockwise so it's set to manual mode.
Use the knob above it to set current to 12A. The current is displayed on the front panel.
Monitor the filament for ~5 minutes until it starts to glow. The aluminum will also melt and wet onto the filament.
Increase the current to ~20A. It should start to glow white hot. If the deposition monitor is on, it should start to record some deposition. The walls of the chamber will also turn opaque from the aluminum. Hold for a couple minutes.
Decrease the current to 10A, then 5A, then 0A to slowly cool the filament. Wait 10 minutes.
Follow the vent procedure listed above.
Misc. notes that need to be organized:
Manually switch to evaporation procedure (based on evaporation data spreadsheet, using thickness monitor to determine when to stop)
Sam only evaporated for 1 minute, we are doing ~15?
Let it evaporate at 1100 for 3 min before moving guard to expose chip
This is because there is scum in the crucible and might be oxygen in the chamber at the beginning of evaporation that causes aluminum oxide to build on chip
Evaporation is faster than sputtering (supposedly, it might be equivalent because evaporation operates at a much lower pressure than sputtering so pump down and bakeout take a whi
SOP for dry oxide growth of 10nm SiO2
The oxidation growth of the silicon layer creates a layer of insulation to prevent direct flow from the conducting MOSFET layer to the metal gate.
Fused silica rod
Fused silica microscope slide
Fused silica rod
Fused silica microscope slide
Pure silicon chip (not pre-deposited)
Turn on the furnace.
Press and hold “set/ent” for three seconds until “mode res” is showing. Press the up arrow twice until mode “LCL” is selected. Press “enter” once. Now the furnace will hold the temperature shown. Use the arrow keys to adjust and press “enter” once to set the setpoint.
Wait ~15 min for the furnace to come to temperature.
Put the fused silica microscope slide in the entrance of the tube. Do not use a regular borosilicate microscope slide, or it will melt inside the tube. The edge of a fused silica slide is pure white, while borosilicate is a little bit green.
Place your chips on the slide.
Use the glass rod to push the slide into the center of the tube, being careful to not scratch the inside of the tube too much. Start the timer.
Place the rod on top of the tube furnace (it will be hot).
Use the glass rod to push the slide to the other end of the tube.
Push the slide all the way to the end until it is reachable.
Put the rod on top of the tube furnace (it will be hot).
Wait a few minutes for the slide to cool down.
Use metal tweezers to take the slide out. Don't use the orange ones because they don't close all the way.
Put the slide on a heat resistant surface and wait 5 minutes before handling the chip.
The furnace is obviously very hot. Keep away from any hot parts of the furnace. The rod will heat up in the few seconds that it is inside the tube, so when removing it, only hold it by the end.
The rod and tube also channel heat out of their ends via internal reflection of radiation.
We pre-dice wafers in order to:
Limit the size of our DIY machines
Decreases the necessary movement range of nanpositioners
Other machines can be sized down
Increase experimental throughput
Decrease cost of each raw materials
Decrease risk of breaking chip
Ease chip handling
See for reference
Open this sheet, claim the next available chip number, open the blank chip view sheet for that specific chip number and record all subsequent process data into it.
Use a
Lay the wafer on a hard, steady surface
If the surface has some give, it will act as a spring when pressure is applied from the scribe
At an oblique angle, place the scribe tip at the edge of the flat side of the wafer
Flat edge marks crystal orientation, cleaving should be easier along certain crystallographic directions.
Push down, don't think too hard, cleave.
It may also help to press down and drag the scribe tip 1 mm outwards to the edge of the wafer.
Don’t move chip around with the diamond scribe to avoid scratches
Use to move once a cut is made
SOP for using the profilometer
The purpose of the profilometer is to measure the roughness of a surface. Specifically, it is able to measure height differences across a region of interest (in one dimension) in the nano scale. This is useful especially after etching processes, where we can measure how much etching was performed on the chip.
The precision of this instrument is ~20-30 nm.
Profilometer
Your chip
If you are learning how to use the profilometer and do not have any patterns yet, you can use Chip 365 (there is a pattern on it, and it is also used in this tutorial)
The profilometer (right) is connected to a very old computer (left). The profilometer contains a metal needle tip that is used to measure the roughness of a surface.
Place chip on stage
Ensure that you don't place the chip in the ridges, and this can lead to a runtime warning
Switch on the light on the stage, ensure that chip is under the light
On computer, go to Display > Video to visibly see the chip. Also, select Sample Positioning in order to see where the stylus will start measuring.
Move chip until you are able to see the cross hair being in line with the edge of your patterns.
Chip can be moved using the knobs as seen in Figure 2.
Ensure that you don't touch/bump into the metal tip as it is very sensitive and delicate
Go to Stylus > Stylus Down. This will move the stylus down to the chip and it should be aligned with the cross hair.
If the stylus is not aligned with the cross hair, double click on the new location where you want the cross hair to be. You will be prompted to update the cross hair location.
Go to Run > Run Single Scan to start an experiment. The stylus will start moving.
If it runs into the AD conversion error, keep retrying (the error tends to go away after 5-6 times, see bottom of this document for photo)
After the run is completed, this should be seen:
As seen in the Figure above, we can see two "bumps", which are where we want to collect our data. However, we can also see that the graph is slanted, which means we first need to level our data.
Levelling plot: Move the red and green vertical lines such that in between those lines, we have a relatively flat region (as seen in Figure 6). Go to Plot> Level. We should now see this:
In order to measure the step height, drag the red and green vertical lines such that in between these lines we have the region of height difference (shown in Figure 7). The height difference is captured as Vert_D. In this case, we an see that it is 2425 Angstroms, which translates to around 243 nm.
As seen in Figure 7 above, some regions are "bumpy". In order to get the average of these "bumps", one can go the Bands > Create Band and set a specific distance. For instance, in Figure 8 below, we have taken the average of 50 nm to the left and 50 nm to the right of the region of interest.
1) Timeout Waiting for AD Conversion
This error happens very often. In order to fix this, perform multiple runs (usually around 5-6 times) until the timeout notice is no longer shown.
After thin films of Aluminum are deposited (whether it be Thermal Evaporation, sputtering, etc) onto the chip, we want to define isolated contacts to certain pats of the device, and define interconnects between those contact. To do this, the contacts and interconnects are patterned on top of the Aluminum surface with photoresist, and then wet etched. The contact pads that are left allow us to probe the device, or package it.
Alumina etchant contains Phosphoric Acid, Nitric Acid, and Acetic Acid (all in one solution). The Nitric Acid Oxidizes the Aluminum, then the Phosphoric Acid etches the Aluminum Oxide, and the acetic acid lowers surface tension to help the etchant wet the surface.
Phosphoric and Nitric Acid are extremely Hazardous, be sure to review the SDS for the Al etchant, and wear the proper PPE (Lab Coat, Splash Apron, Nitrile gloves (under), Neoprene gloves (over), Face shield)
If under etching occurs, then all contacts will be shorted to each other. Over etching could result in less feature resolution, or Aluminum peeling off the chip.
Aluminum etch has proven difficult to keep consistent. There are many problems with peeling and bad adhesion of both photoresist on top and aluminum to the layers below.
Best practice is to calculate how long you should etch for, then etch for 30 seconds greater than that amount of time, then inspect, then etch longer if the etch looks incomplete.
Fume hood
Hot plate with magnetic spinner
Magnetic stirrer
Glass beaker
Appropriate container for acid (polypropylene)
Nitrile Gloves (under)
Neoprene Gloves (over)
Nitrile Splash Apron
Face shield
Aluminum etchant (16:1:1:2 phosphoric, nitric, acetic, DI water)
DI water
Put on nitrile gloves
Place your chip on the cleanroom wipe taped to the inside of the acid hood. Do not leave the tweezers inside the fume hood.
Put on a splash gown.
Put on a face shield.
Put on the neoprene gloves. Avoid touching the outside of the gloves.
Pre-heat the hot plate.
Fill the beaker to about 1 cm with Aluminum etchant
Once the hot plate has reached the desired temperature, place the evaporating dish on the hot plate slightly off center so that the magnetic stirrer is on one side. turn on the stirrer.
After the acid has had 5 minutes to come to temperature, use DI water to rinse the black plastic tweezers and pick up the chip, then put it in the dish on the opposite side from the stirrer, then start the timer.
Rinse tweezers with DI water after.
Prepare to take the chip out 30 seconds before the timer is up. It can be tricky to grab the chip, so start early and drop it into the DI water when the timer expires.
Swish the chip around a couple of times and then take it and rinse further with the DI squirt bottle out and let it dry on the wipe.
Turn off the hot plate.
Take off the Neoprene gloves, Splash apron, and face shield.
Use your outside tweezers to pick up the chip and dry it off with the nitrogen gun.
Incomplete aluminum etch looks black and rough.
Complete etch should look like the layer you were trying to etch down to
Peeling is very obvious as well.
While the acids involved in this step are not as aggressive as hydrofluoric acid, there are still many overlapping safety protocols to be followed. This document is NOT qualified to teach you all the required safety protocols and correct operating procedures - please refer to an SOP and more disposal and safety resources.
This document is an operating procedure for our specific lab, and is a reference for students to know how to consistently complete a successful etch.
Diagram representing the data structure of the query results passed as a context to be rendered in the html
Computer running
Computer running and Python program
A is used instead of pure HF to control the etch rate.
Spill kit and
Put on the neoprene gloves. Avoid touching the outside of the gloves.
Refer to for proper nitrogen gun usage if needed
This is by far the most dangerous process step. This document is NOT qualified to teach you all the required safety protocols and correct operating procedures - please refer to an and more disposal and safety documents. Every student at CMU must go through a 1 hour safety training specifically for the handling of HF before they are even allowed to be in the same room as somebody handling it.
Thermal evaporation is a layer deposition technique wherein the vapor pressure of a material is increased via resistive heating while the surrounding air is evacuated below that vapor pressure. The of gas in the chamber, which is determined by the pressure, must also be larger than the source to substrate distance. Under these conditions, the material evaporates into the vacuum and then coats any exposed surfaces. This is how we create deposit layers of metal, which are later etched into wires, and contact pads.
The Hacker Fab currently uses aluminum for wiring because it’s relatively conductive, fast to evaporate, and cheap. However, it can be tricky to evaporate because it alloys readily with many refractory metals. This is described in depth . We currently use an alumina crucible which seems to work for a handful of evaporations, though other setups may be more effective and should be tested.
Open the sheet and plan your experiment.
(Recommended) Use piranha solution or to clean the chip.
Use double sided kapton tape to attach the chip(s) to the center of the substrate holder.
Program the bakeout sequence to ramp to 700°C over 2000 s, then hold for 3600 s, then ramp down over 2000 s. Refer to page 15 of the for detailed programming instructions.
Take inspection pictures and upload them in a new folder, then link that folder in the spreadsheet.
Tube Furnace () with fused silica tube
Tube Furnace () with fused silica tube
If the furnace stops and holds at a lower temperature than your setpoint, the high temperature alarm may be too low. Read the instructions on to fix this.
A chip permanently fused to the tube furnace walls when improper slide was used
Before reading further, please see the section for more information.
SDS:
Spill kit and
CMU Fab
Time (if glass annealed at 200-400C)
~10 Seconds with 6:1 BOE
Time (if glass annealed at 1100C)
5-10 Minutes with 6:1 BOE
Temperature
Room Temp.
Bakeout Time
Pressure Before Beggining Evaporation (hPa)
Temp Time Sequence [c1, t1, c2, t2, c3, t3, ...]
Vds range
0-10V
Vds step size
.1V
Vgs range
0-5V
Vgs step size
1V
Vb range
0
Vb step size
n/a
V range
+-5V
V step size
<=1V
Vgs range
0-5V
Etch Rate
~ .1 um/min
Etch Temp
40C
Stir RPM
350
Dope the channel, and source/drain regions for CMOS chips, via solid source surface diffusion, starting with 5-10 ohm p-type substrate.
NMOS Source/Drain
1E19 - 1E20 /cm^3 (Boron)
Uniform over 2 nm Junction depth shallower than channel
NMOS Channel
1E14 - 1E15 /cm^3 (Boron)
Will be uniform by default (p type wafers)
PMOS Source/Drain
1E20 - 1E21 /cm^3 (Boron) with 1E15 - 1E16 /cm^3 (Phosphorous) background
Uniform over 2 nm Junction depth shallower than channel
PMOS Channel
1E15 - 1E16 /cm^3 (Phosphorous) with 1E14 - 1E15 /cm^3 (Boron) background
Uniform over 10 nm Junction depth deeper than source/drain
Working Folder in Google Drive: https://drive.google.com/drive/folders/1bnJyeBcbssFuE7fQBo4J-6Roz3mHzRwJ
As part of CMU's Hacker Fab Course 18469/18669, students will give updates on their project work every Sunday night.
Details on the assignment can be found here: https://docs.google.com/document/d/1VIL6_VEkJ3WJWSxd1Ij3GuT30xgoiurXHgvJoFRKE7c/edit?tab=t.0
Develop metal contact formation process (pre, during, and post deposition development) to reduce the contact resistance and Schottky behavior of of metal contacts on Source/Drain regions of PMOS and NMOS devices. Metal type in metal - Si contact is part of optimization.
Specific contact resistance
1E-5 ohm/cm^2
Schottky barrier height
.7 eV
Working folder in google drive: https://drive.google.com/drive/folders/1qafBxH8luKwNSnPRmJxCRI_14apNio72
A metal oxide semiconductor field effect transistor (MOSFET) is essentially made up of two opposing PN junctions and a metal oxide semiconductor capacitor (MOSCap). The current Hacker Fab NMOS process begins with a wafer which already has 20 nm of SiO2 on the surface of the Si, and 500 nm of polysilicon deposited on top of the SiO2. In the final MOSFet device, the SiO2 acts as the oxide and the polySi acts as the “metal” in the MOSCap present within the NMOSFET. This process flow prevents the simultaneous fabrication of PMOSFETs, which is necessary to make CMOS devices. To make CMOS devices, we need to begin with a bare Si wafer, and make the MOSFets “oxide”/dielectric layer ourselves Due to this, and other concerns with the NMOS process flow, Hacker Fab needs to develop the capability to grow or deposit dielectric thin films to act as the oxide. However, the oxide is the thinnest film in the device, and the film most sensitive to impurities. For this reason, the process to deposit gate oxides is the most likely to have quality issues.
Based on this need, and surveying our options for making our own gate oxide, we began building an RF sputtering chamber in the F24 semester (@ CMU). RF sputtering has the capability to deposit thin films of dielectric and conducting materials.
Deposit 40-50nm thick Al2O3 layers to use a gate dielectric in CMOS process
Deposit 100 nm thick Al2O3 layers to make electrical contact to the gate dielectric, and protect the sensitive gate dielectric. This is to be done in the same process step as the Al2O3 deposition.
Dielectric constant
>8
Resistivity
10^-12 ohm-cm
Surface Roughness
5 nm
The metrics defined above are dependent on other metrics, such as stoichiometry, which is effected by processing parameters like sputtering power and O2 flow rate etc.
Resistivity
3E-6 ohm-cm
Surface Roughness
15 nm
Working Folder in Google Drive: https://drive.google.com/drive/folders/1_SNzkVnHybTjfvlqHM6ZcEksfZroROLm
Fabrication and Testing of Enhancement Load NMOS Inverter Based on HackFab’s Standard Process Flow
Introduction
NOT gate or inverter outputs the opposite of its input as shown in Table 1 is a basic but crucial part of the digital logic circuit. An NMOS logic inverter normally consists of two parts, a resistive load connected between the supply voltage (VDD) and the output as the “pull up” part and a switching transistor as the “pull down” part. To save device area and fabrication cost, instead of using resistors for the load, an active load such as an enhancement load transistor is used in the design as shown in Figure 1 (left). Enhancement load means a transistor’s gate and the drain are both connected to the supply voltage and make the transistor always in the saturation region. However, this causes there will be a constant current going through the transistors even if it is not performing which makes NMOS logic technology have higher power consumption and eventually be replaced by CMOS technology.
Input
Output
0
1
1
0
Table 1. Inverter Truthtable
Weekly Update Page :)
Since
Created this semester's Project Proposal and plan for improving the process database. Summary of the key deliverables by week:
Database schema and data model documentation
Revised and approved design documentation
UI/UX design documents and wireframes
Working frontend prototype
Working backend prototype
Integrated system with core features
Advanced features implementation
Complete documentation package
Test reports and security audit results
Deployed system with trained users
My name is Joshna and I will be working on the SMU and Database this semester
Weekly Update #1
I did some preliminary research, you can find the task for this in github project tracker here: xxx I drew some schematics for the Database, which can be found in the master doc here: xxx. I am facing the challenge of IV curves appearing to be limited by power so I am reaching out on the Diligent forum. My plans for next week are to do these GitHub project tracker tasks:
Weekly Update #2
I was able to complete all the Github project tracker tasks I set out to do last week as well as talk to the lab automation team to figure out what they need from us on the database.
My name is Gongwei and I will be working on the EDA device modeling this semester
Weekly Update #0
Created GitBook page.
Weekly Update #1
What was accomplished:
Did preliminary research into Skywater SKY130 PDK, OpenLane, SPICE modeling software.
Collected and read documentation on Open-source tools available for EDA and PDKs
SPICE parameter list: https://www.seas.upenn.edu/~jan/spice/spice.MOSparamlist.html
Roadblocks:
No roadblocks at the moment.
Plans for the week:
Extracting various preliminary MOSFET parameters for SPICE simulation (such as g_m, lambda, Vth) from some I-V, C-V graphs plotted in the previous semester from Icey.
Weekly Update #2
What was accomplished:
Communicated with Wentao for his NMOS and SRAM I-V data from the previous semester.
Plotted and analyzed preliminary MOSFET parameters for Vth.
Confirmed that we need to collect more data due to the limitations of the existing I-V data points.
Wrote up a plan of equations and different methods of extracting Vth, and lambda.
Roadblocks:
No roadblocks at the moment.
Plans for the week:
Collaborate with Ying to: classify accuracy levels for device parameter extraction and attempt extraction on existing chip 613
Collect more data on Chip 613, most likely using the probe station under a larger range of Vds and Vgs
Continue writeup on the parameter extraction doc of equations and different methods of extracting gm, lambda (Vth is ok).
Weekly Update #3
What was accomplished:
Learned during Tuesday's extra training session details on how to use the probe station and parametric analyzer equipment to prepare for later work measuring and extracting parameters from our fabricated NMOS chips.
Added details to parameter extraction document to have plan of analysis for our necessary SPICE Level 1 MOSFET parameters for simulation.
Designed and hand-drafted a mask for our 16 I/O pad chip that we have planned, with 5 MOSFETs and 1 PSUB body connection. https://drive.google.com/file/d/163fGV8PKwP8sKIzO7hwD44xELJJviuWa/view?usp=sharing
Roadblocks:
A significant unexpected roadblock was that Chip 613 which we had high hopes of using for performing parameter extraction and further testing with higher V_GS values was nowhere to be found in the lab.
Unfortunately, Chip 516 and 588/587 from Wentao last semester are also missing, which is a major setback where we must now take a step back and perform re-fabrication to have a functional chip to work with.
Plans for next week:
Collaborate with Sandra and Gina to finalize the mask I drew for our test chip with 16 I/O pads, make appropriate adjustments to the Length and Width parameters, and settle on a final mask/layout.
Finalize on testing plans and work with Ying and Felicia to decide on some reasonable DRC estimates for the spacing distances between the MOSFETs on the test chip and the minimum gate extension.
Exaggerated View of Large Particulate and Improper Dehydration Bake
Radial Variation
Example 1
Example 2
Example 3
Temperature
1100°C
Total Time
30 min (subject to change)
Weekly Updates for Alex Echols (ALD Project)
Updated substrate heater testing plans
I continued to test the substrate heater this week, with an updated testing plan following the ALD project meeting on Monday, 2/10. Instead of focusing on generating a heatmap of the entire heater surface, the new testing methodology aims to profile the time it will take the substrate heater to reach steady state given a desired temperature.
Tape 2 of the thermocouples to the substrate heater, using the rough placement of the heating element as a guide. One thermocouple should be approximately over the heating wire, while another should be approximately centered in the largest gap in the heating element. The 0.5" grid as marked in the previous procedure provides a good way to record where the measurements were taken.
Run datalogging for the two surface thermocouples and the center (reference) thermocouple for a given voltage. I started at 5V, aiming to prevent the cracking issues that happened last week. Gradually ramp up the voltage over the course of the run (I incremented in 1.5V increments every 20 minutes)
Note difference between the reference point and each of the test points, as well as the difference between the two test points. A K-Type thermocouple only has an accuracy of ±2.2 C, and they are highly sensitive to the quality of contact with the surface.
Based on my testing, I feel that the Boron Nitride disks which we are using are not suitable for our purposes, partly due to cracking concerns, and partly due to low thermal conductivity. Jay suggested the use of Aluminum Nitride instead, which seems to fit our criteria a bit better. I reached out to a few vendors regarding custom AlN disks, but have not heard back yet.
Updated CAD for QCM mount
Though it was agreed both in our team meeting on 2/10, and when speaking to Matt on 2/11 that the QCM is not necessary for the initial deposition, I still feel that it is necessary to properly design the chamber such that it can be easily retrofitted.
The only change which effects the current design revision is the movement of the substrate heater mount from the back face of the chamber to the left face of the chamber (when looking from the front). This should not change the chamber mechanics at all, and is mainly necessary to allow the precursor delivery system to sit close to the chamber, without needing to move if the QCM is added in the future.
The QCM mount itself uses a CF 2.75" to KF40 adapter as mentioned in my previous update, and simply mounts to a replacement backplate which accepts a KF40 flange. The KF40 fitting is the smallest KF style flange which can adequately accommodate the QCM mount when building the device. The CAD model shows a collision between the substrate heater mount and the QCM mount, but this will not be an issue in reality, as we can bend the QCM mount to line up with the surface of the substrate heater. It may also be worthwhile to consider redesigning the substrate heater to mount directly to the QCM mount, simply so that the QCM will be known to be at the same temperature as the heater.
ALD stand is designed**
** Waiting for final approval from James regarding the precursor delivery
There isn't a ton to say on this front, as the design is relatively simple: an Al extrusion frame with some custom sheet metal brackets to mount to the chamber itself. We should be able to cut the mounting brackets in techspark, but will need to order the extrusion and corner brackets. Once the precursor delivery design is sorted out, we can do a final design review and place part orders. Construction itself should not take more than a couple of hours at most.
Not exactly a roadblock, but reconsidering the Boron Nitride this late into development is certainly far from ideal. I am working on some code to simulate the thermal performance of the device which can hopefully be used to inform design decisions, including whether or not to change the insulator material.
Awaiting approval from James regarding stand dimensions
Analyze trial data for substrate heater uniformity
Research alternative substrate heater designs, including part lead time and sourcing
Finalize stand dimensions and order parts
Constructed** substrate heater and began uniformity characterization
** The hardware used (i.e. screws, nuts, washers) is not the same as those that will be used for the final assembly, but it should not make a significant difference for the tests that we are doing
I was able to cut the top and bottom sheets for the substrate heater on the Techspark waterjet, and complete all of the required post-processing steps. By Thursday (2/6) I was able to begin testing on the fully assembled substrate heater.
As detailed in my project proposal, temperature readings are being taken on 0.5" intervals across the heater surface. I am also measuring the temperature at the "main" thermocouple (the one which will be in the final assembly) as a point of comparison. Due to the length of the testing, I was not able to do more than one run, but this week I will continue this testing and hopefully finish by Friday. Due to long test times, I have slightly revised my testing procedure from that in the project proposal:
Draw a 0.5" grid on the heater surface, using the center of the disk as the origin. Ideally this grid lines up with the direction of the heating wire "zig-zags".
Ensure that the datalogger is working for all four probes. My initial test plan involved an arduino being used for datalogging, but my tests are being conducted using a THE-373 thermometer for simplicity.
Tape 3 of the thermocouples to points on the grid and record their positions (#4 is the center of the grid). Kapton tape or a similarly rated adhesive should be used. Electrical tape is pictured above and is not suitable.
Turn on datalogging and power supply (7V, constant voltage mode) for 20 minutes. The heater will reach approximately 100C by this time, which is lower than our operating temperatures, but should be suitable to notice any differences in the heating curves over time.
Turn off the power supply and allow the heater to cool down to room temperature. This will take approximately 50 minutes.
Move thermocouples to a new location and test again. Due to the long duration of each test trial (~70 minutes), it is likely not advisable to probe at every single point on the surface of the heater. 1-2 trails per quadrant should be sufficient to notice any problem areas, assuming that the thermocouples are evenly spaced.
This is still WIP, but my current notes are:
Temperatures at each probe point should be compared to the center thermocouple. This is a better choice than comparing to mean temperature or similar because we will eventually be using the thermocouple at the center of the heater as the sole point of measurement, so the uniformity matters relative to that point.
It is important to remember that K-type thermocouples (used here) have an accuracy of ±2.2 C, so any deviations within that range are not reason for concern. At the maximum operating temperature of our heater (600 C), this goes up to ±4.5 C
Researched passthroughs for QCM and substrate heater
The substrate heater requires lines for power and the center thermocouple. We have two primary options for these needs, either use two seperate feedthroughs for power and the thermocouples or use a single power + thermocouple feedthrough. Upon examining prices, it is apparent that it is much more economical to purchase a single power + thermocouple feedthrough, and many vendors sell feedthroughs which are rated for our power needs.
IdealVac
$465.26
Ships Now
Kurt J. Lesker
$315.00
KJLC will contact you
MDC Precision
$321.00
6 weeks
Allectra
$301.37
On Request (I emailed but have not received a response)
My recommendation for our project is to order from IdealVac, simply due to lead times. The other products on this list should be equivalent and could be ordered by another fab looking to replicate our device. Since we are concerned with getting the chamber working by spring break, purchasing the only option which we know can ship now makes the most sense to me.
I am in the process of speaking to Matt about options for this sensor. Options for mounts/passthroughs are summarized here.
While talking to Matt, we discussed the idea of either directly connecting a CF 2.75" flange to the chamber, or using a KF40 to CF 2.75" adapter to allow the sensor mounts to connect to the chamber. I did some quick cost analysis and it seems that both options are roughly price equivalent.
CF on Chamber (No Adapter) | Total Cost (Est.): $1,329.47
IdealVac 9x9 Plate (CF 2.75)
1
$258.15
Aflas Sheet
1
$39.03
Gasket Cutter
1
$32.29
Sensor/Passthrough Assembly
1
$1,000.00
INFICON
KF on Chamber (Adapter) | Total Cost (Est.): $1,396.90
IdealVac 9x9 Plate (KF40)
1
$210.70
KF40 Centering Ring
1
$10.05
KF40 Bulkead Clamp
1
$36.10
KF40 to CF 2.75 Adapter
1
$105.65
Copper Gasket
1
$34.40
Sensor/Passthrough Assembly
1
$1,000.00
INFICON
Not exactly a roadblock, but the Boron Nitride disks cracked during the initial testing of the heater. I will be looking into potential causes for this and potentially thinking of other options
The heater testing takes much longer than I expected per trial, but I have planned around this as mentioned above. I will take measurements on a limited subset of points rather than all (49) points on the grid
Finish substrate heater uniformity testing and gather/analyze data
Finalize feedthrough plans and order them ASAP. Matt is currently not responding to my email, but I will follow up with him on Tuesday if he has not responded by then
Look into the Boron Nitride cracking
Created CAD of the ALD chamber and the chamber to pump line
Sourced parts for the chamber to pump line from IdealVac
KF-25 Hinge Clamp
2
$23.98
KF-25 Centering Ring
3
$29.79
KF-25 90 Degree Elbow
1
$71.92
-------
-------
-------
Total
-------
$395.69
Updated CAD of substrate heater
Designed substrate heater mount
The substrate heater (pictured below) is very similar to the one which was designed during the F-2024 semester. The primary differences in the heater itself are:
Countersink the holes in the upper plate to accommodate a #6-32 flat head screw. The plate thickness of 0.1" will just allow the bolts with a head height of 0.097" to fit without interfering with any wafers that may be placed on the surface
Modify the bottom plate to add 3 slots, spaced 60 degrees radially apart, which are used from alignment.
In addition to the substrate heater modifications, a mounting bracket was designed, which will hold the substrate heater into the chamber. In order to minimize thermal conduction paths between the heater and the chamber walls, 3 silicon nitride balls will be used for alignment. This material should be compatible with our precursors, and has a thermal conductivity of approximately 20% of the aluminum plates. The mounting bracket has 3 holes which locate the balls, which then line up with the slots in the heater plate. Taking inspiration from the concept of exact constraint design, the balls contact the heater at exactly 6 points, constraining the heater in 6 DOF, and making removal easy in the event that the heater needs to be serviced. Additionally, the very low contact area of the lower heater plate with the balls, and the balls with the mounting bracket should further limit heat transfer by conduction, which is the primary vector that we are worried about.
Sourced parts for substrate heater and mounting assembly
#6-32 Flat Head Screw
4
McMaster (90585A215)
$5.23
Secures heater assembly**
#6-32 Hex Nut
4
McMaster (91841A007)
$4.04
Secures heater assembly**
#6 Lock Washer
4
McMaster (92146A540)
$1.78
Secures heater assembly**
Heater Top Plate
1
SendCutSend
$7.51
Could make in Techspark (if waterjet is working)
Heater Bottom Plate
1
SendCutSend
$10.30
Could make in Techspark (if waterjet is working)
#8-32 Standoff
1
McMaster (91115A843)
$5.53
Mounting Bracket Stability
#8-32 Socket Head Screw
2
McMaster (92196A192)
$9.95
Mounting Bracket Stability**
SiN Balls
3
McMaster (9576K46)
$42.81
Alignment
Mounting Plate
1
SendCutSend
$31.59
I would recommend getting this made externally, as SendCutSend can bend the part for us
1/4-20 Socket Head Screw
4
McMaster (92196A537)
$20.71
Mounting Bracket Mounting**
-------
-------
-------
-------
-------
Total
-------
-------
$139.45
-------
** This item can almost definitely be sourced cheaper individually (i.e. from BoltDepot or similar), but it comes down to a question of lead times at some point
This is currently in beginning stages, but some basic cad of a simple chamber stand has been made
This needs to be modified slightly from the simple box design to avoid some collisions with the line to the vacuum chamber
No major roadblocks to report
Review substrate heater design with project leads
If approved, finalize sourcing and order parts
Finalize design for chamber stand and source parts
Time permitting, review the design and order parts
Once design work is finished on the substrate heater and parts are being ordered, begin research on creating Aflas O-Rings from the cording
Some preliminary googling indicates that a solvent weld with acetone might be possible, but I feel somewhat skeptical of the sealing quality of these O-Rings and feel that it's important to figure out how possible this sealing method is ASAP
Created experimental design for profiling substrate heater
Began updating 3D CAD of the substrate heater and ALD chamber
Reviewed literature on material compatibility with precursor materials (for heater parts)
Drafted and submitted semester project proposal
No major roadblocks to report
Continue to work on CAD of the chamber assembly
Preliminary designs for the entire heater stack, including chamber mounting by EOW
Begin research on compatible tubing and passthroughs
Create plan for making Aflas O-Rings from cording
Reviewed documentation from the Fall 2024 semester
Had initial group meeting with ALD team to delegate roles and discuss next steps
Began planning for ALD chamber passthroughs and substrate heater thermal characterization
No major roadblocks to report
Review literature on material compatibility with precursor chemicals and vacuum design
Detail experimental procedure for substrate heater characterization
Understand the relationship between input voltage/current and output temperature/temperature rate
Ensure heater uniformity
Draft project proposal
Hey! I'm Gina, and I will be working on EDA/PDK this semester.
Sandra and I patterned again and remeasured the mask design from last week to get the scale factor and graphed with best line of fit.
Completed the mask design for the resistor lab pattern for the metrology team (code).
Sandra and I fabricated a trial to test alignment between two masks, but the alignment was not very successful. Further trials or a method to precisely locate and overlap previous alignment marks with the next mask's alignment are needed.
Started outlining the demo and preparing slides, aiming to complete them early next week.
Roadblocks:
Will bring up alignment issues during the demo—currently uncertain about the necessary overlap between masks or whether a patch should be used to connect two diffused areas. Exploring different approaches to solve this issue.
Plans for Next Week:
Finalize and present demo slides on demo day.
Incorporate feedback from demo day and collaborate with the Metrology and Stepper team to determine next steps.
Select one tool from the explored options (gdsCAD, KLayout, etc.) to focus on and deepen understanding.
What was accomplished:
Patterned chip following the Patterning SOP with mask created from Update #2 on Thursday work session.
Spinner got fixed, so Sandra and I were able to fully work on end-to-end of this mini project. We got to project our mask onto the chip and observe it under the microscope.
However, we were not able to calibrate the microscope to take accurate measurements of sizing because calibration slider wasn't available. Therefore, we've just took measurements using a ruler tool under the 10x microscope as shown below. Given the estimated aspect ratio, we see that it is pretty close.
Learned functions/scripts for creating layers with phidl & created dictionary framework for organizing diff. layers (multi-layer for metal, poly, oxide, etc.)
Progress of examples is in Colab Notebook in Section "Layers - Learning"
Section "Layers - Organization" contains a structured layer set
Creates notes on Magic VLSI Tool; Found promising information for possible integration with Hacker Fab processes
Roadblocks
Because we couldn't find the calibrating slider to use to get measurements on our masks on the chip, we weren't able to execute our plan of using it to get the scale factor. We will wait until the new order comes in and confirm the scale factor. For now, we will use the scale factor estimation from Kent and the measurements we've taken.
I wasn't able to actually walk through the tutorials for Magic VLSI because I don't have a Linux/Windows. A work around may be to run this on ECE computers only, which is fine for the exploration phase.
Plans for Next Week:
Sandra and I will focus on working with the Metrology/Packaging team to deliver Resistor lab pattern but with pads added on at the peripheral
Look more into Magic VLSI and discuss with Icey to see if this is a promising path to go down.
Work with Sandra to talk about how we plan on creating an initial Python framework for NMOS masks that adhere to design guidelines.
What was accomplished:
Researched design constraints and rules for layout (e.g., spacing, layers). Created notes for future reference.
Figured out aspect ratio that reflects Stepper GUI (16:9)
Sandra and I recreated the current code as well as the new implementation of critical functions using phidl package tutorial.
Sandra and I created masks on Google Colab with rectangles of various sizes to test the scale factor of phidl grid units to micrometers.
Went to lab for scale factor on Sunday 1/3, followed SOP for patterning with Kent and learned how to use the stepper.
Discussed to the stepper team and Icey, decided to use cross with 1 elongated side as the marker shape of choice for now.
This is because team only cares about rotating 90 degrees.
Successfully generated script that turns gds files into a png files.
Roadblocks:
Sandra and I were not able to complete patterning to find the scale factor because the spin coater didn't work (the vacuum was too weak so the chip kept falling off during spin).
But, we understood the process of SOP so we believe we can do it once the spin coater is fixed!
Plans for next week:
Attempt to pattern a chip with the mask above; take measurements of different rectangles to decide the scale factor.
Research Magic VLSI tool.
Learn more about the phidl package section: Layers, and how to implement them for more complex masks.
This week, Icey, Sandra, and I finalized our sub-project for the EDA team to be on mask automation and integrated DRC rules.
a. Sandra and I met on Wednesday, January 22nd to break down our objectives and goals for the project this semester. We established a semester-long plan outlining actionable tasks for each week. We also delved deeper into the background research on mask design and discussed the importance of building DRC rules to better understand the project’s purpose within the scope of HackerFab. We also set up weekly syncs to touch-base on each other's progress.
b. On Thursday, January 23rd, Icey helped refine our project timeline in-class to align with the objectives and deadlines of other teams, ensuring our work can support theirs as well. We planned ahead to allow for buffer time in case we encounter friction with more complicated tasks, which made me feel more comfortable with the final project timeline we decided on.
Phase 1 (Week 2-6): Allow users to create “instances” of different components with automated mask generation.
Phase 2 (Week 7-11): Allow instances to have tailorable dimensions and parameters, and start developing a set of DRC rules
Phase 3 (Week 12-14): Allow users to check masks with DRC rules, and raise warnings when rules are violated.
c. Then, I reviewed the existing codebase and documentation for mask generation in the HackerFab Git repository. I also followed the tutorial to learn the PHIDL package, which the HackerFab Mask Design Program is built on to familiarize myself of what PHIDL can do. I also explored the possibility of building GUIs on PHIDL backends to create a drag-and-drop interface using Tkinter, focusing on how users can dynamically position and parameterize shapes in the layout.
Roadblocks:
a. Sandra and I need to learn how to fabricate single layers to analyze the aspect ratios used in the current mask generation code. Since we haven't started our labs, it holds us back from kickstarting this portion of our project. However, we anticipate learning the required fabrication knowledge starting with Lab 1 this upcoming Thursday.
Plans for next week:
Continue familiarizing with Python package (PHIDL), current progress, and layer sizing for different devices in the current process. -> Create a Playbook to keep note of important features that will come to use in near future.
Research design constraints and rules for layout (e.g., spacing, layers) and how to applies to DRC. Look at examples of DRC rules to develop robust checks (especially parameters required).
Experiment and export GDSII files with Sandra.
Look forward to resistor fabrication lab to form better idea of how to fabricate single layers on our own.
Temperature
generally 1100°C
Diffusion time
generally 30 min for defining source/drain regions
The primary use of the tube furnace is for diffusion of dopant atoms into silicon. The incorpoation of dopant atoms into the Si lattice creates defects in the electronic structure, which are charge carriers, increasing the conductivity of the diffused region and making it either N or P type. Diffusion of a solid into another solid is quite slow, so high temperatures and long times are needed, hence the high-temperature tube furnace.
Our process uses spin on glass containing phosphorus for N doping and boron for P doping.
Tube Furnace (ThermoFisher Manual) with Quartz tube
Quartz rod
Quartz microscope slide, or Fused silica boat
Chip with glass containing phosphorus or boron.
Turn on the furnace.
Press and hold “set/ent” for three seconds until “mode res” is showing. Press the up arrow twice until mode “LCL” is selected. Press “enter” once. Now the furnace will hold the temperature shown. Use the arrow keys to adjust and press “enter” once to set the setpoint.
If the furnace stops and holds at a lower temperature than your setpoint, the high temperature alarm may be too low. Read the instructions on page 6-7 to fix this.
Put the Quartz microscope slide in the entrance of the tube. Do not use a regular borosilicate microscope slide, or it will melt inside the tube. The edge of a fused silica slide is pure white, while borosilicate is a little bit green.
Place your chips on the slide.
Put on the heat resistant gloves.
Use the glass rod to push the slide into the center tube, being careful to not scratch the inside of the tube too much
Measure out how far the glass rod needs to be pushed in to place the chips atthe center of the tube furnace.
The rod is extremely hot, and will auto ignite what it touches, or burn through flesh. carefully place it a top the tube furnace
Use the glass rod to push the slide to the other end of the tube.
Wait a few minutes for the slide to cool down.
Use metal tweezers to take the slide out. place it on the upside down beaker to allow it to cool further
Wait 3 minutes before handling the chip.
The furnace is obviously very hot. Keep away from any hot parts of the furnace. The rod will heat up in the few seconds that it is inside the tube, so when removing it, only hold it by the colder end.
The rod and tube also channel heat out of their ends via internal reflection of radiation.
A chip permanently fused to the tube furnace walls when improper slide was used
DIY SMU
Buy for $800
Probe Station V1
Hot Plate
Plasma Etcher
Plasma Etch PE-25
for $15,800
for $125
for $200
for $17,400
for $3,708
for $200
for $15,000