Manual: Difference between revisions

From Flooxs
Jump to navigation Jump to search
No edit summary
 
(150 intermediate revisions by 10 users not shown)
Line 1: Line 1:
<big>'''FLOOXS Main Page'''</big>
= Introduction: What is FLOODS/FLOOPS? =
FLOOXS is a Technology Computer Aided Design ([http://en.wikipedia.org/wiki/Technology_CAD TCAD]) tool used for [http://en.wikipedia.org/wiki/Semiconductor_process_simulation semiconductor process modeling] and [http://en.wikipedia.org/wiki/Semiconductor_device_modeling semiconductor device modeling] that will descretize and solve a set of [http://en.wikipedia.org/wiki/Partial_differential_equation partial] and [http://en.wikipedia.org/wiki/Ordinary_differential_equation ordinary differential equations] on a 1, 2 or 3D mesh using [http://en.wikipedia.org/wiki/Numerical_analysis numerical methods] such as the Finite Element Method ([http://en.wikipedia.org/wiki/Finite_element_method FEM]) and the Finite Volume Method ([http://en.wikipedia.org/wiki/Finite_volume_method FVM]). FLOOXS is built in [http://en.wikipedia.org/wiki/C%2B%2B c++], and uses several well-known math packages such as [http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms BLAS], [http://dietandlossweight.com/wiki/LAPACK LAPACK], and [http://en.wikipedia.org/wiki/Portable,_Extensible_Toolkit_for_Scientific_Computation PETSC] to handle the linear algebra. The user-interface is command-line [http://en.wikipedia.org/wiki/Tcl tcl] (tool control language), a scripting language, with additional FLOOXS-specific [[Alagator Language Description | Alagator]] commands added in.


= FLOODS/FLOOPS Introduction =
==Developers and History==
*[[Developers and Contributors]]
*[[History]]


This manual is broken into several sections describing the commands that make up the '''FL'''orida '''O'''bject '''O'''riented '''D'''evice and '''P'''rocess '''S'''imulator. FLOOXS uses the old unix wild card convention of x taking the place of either "P" or "D".  The codes are built as a single executable and are configured with different sets of default variables for each purpose.  New work in the [http://www.reliability.ece.ufl.edu Reliability MURI] is aimed at combining the codes to understand device operation driven failure modes.
==Code Description==
* [[What is Under the Hood - Detailed]] - A detailed description of how the c++ code is organized, how the finite element methods is implemented, what physics currently exist and how to add more.


Commands in the manual are documented individually.  It is best to start with examples that are similar to what you wish to do.  These are linked to individual command descriptions for more detailed followup.  The command list is also provided as a reference directly, if you are interested in more detail on the commands.
== Installation ==


All of FLOODS/FLOOPS is built using tcl. A familiarity with tcl commands is essential for understanding how to do anything complex in FLOOPS and FLOODS. You can find many great tcl reference books and [http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm tcl command documentation] is also available.
* [[Installation from Debian package]]
* [[Installation on Mac OSX Mojave to Big Sur]]
* [[Installation on Mac OSX not Lion yet]] - notes from v 4.1 ...
* [[Installation on Ubuntu 10.10]] - Notes from a 64-bit Ubuntu 10.10 (Maverick Meerkat) current version FLOOXS installation with both Intel and AMD processors on 11/05/2010.
* [[Installation on Ubuntu]] - Notes from a 64-bit Ubuntu 9.10 (Karmic Koala) current version FLOOXS installation with both Intel and AMD processors on 3/29/2010.
* [[Installation on RedHat]] - (this version is outdated). Installation help and notes created as I did a clean install on a RedHat linux system. Your mileage may vary.
* [[Installation on Windows Linux Subsystem]] - Notes from Ubuntu 18.04 Subsystem on Windows 64-bit.
* Ubuntu 18.04 - See [[Installation on Windows Linux Subsystem]], same instructions from "get flooxs" on
* [[Installation on CentOS 7]] - Includes instructions for build as well as a build script
* [[Build Triangle]] - optional alternative to gmsh


It is helpful to understand the [[Alagator Tutorial|alagator]] command language which is further described in the "Commands" section.
[[:Media:PortNotes.pdf|Porting Notes]] from a 2016 port of the 2008 version. Thanks to Rex Lowther for sharing!


Alagator is the scripting language that controls the physics of the simulation.  This is where the real power of floops and floods lies. These commands allow the user to control and set up alagator scripts for creating user models for diffusion. The scripting language has multiple components that are called during execution of a diffusion command. The basic element is a description of a differential equation. The diffusion calls several procedures for a solution that allow these equations to be constructed at run time.
= Running FLOOXS =


* [[Alagator Language Description]], A description of the recognized keywords and symbols in building an equation.
== Executing FLOOXS ==
* [[Callback Procedures]], A description of the procedures that are looked for and called by the diffusion code.
* [[Startup Script]] - set environment variables and alias paths (running FLOOXS for the first time)
* [[Alagator Tutorial]], Tutorial examples that help users get started.
* [[Complex Examples]], Complex Examples for device and process


Support Commands
==Overview and Basic Concepts==
* [[Tcl]] - Tool Control Language is the main scripting language used to control local variables (set), do simple calculations (expr), define procedures (functions or routines), and accomplish basic read/write file operations (file). It sits on top of c++.
* [[Conventions]] - how parameters work
* [[Alagator]] - Alagator is the scripting language created specifically for FLOOXS to describe the differential equations used in process and device simulation. It sits on top of tcl.
*[[Units in FLOOXS]]
* [[Support Scripts]] - Built in tcl procedures that support simulation.


* [[EquationCommand|equation]], The command that allows syntax checking and resolution checking of equation strings.
==Examples and Tutorials==
* [[SolutionCommand|solution]], Create and control generic solutions.
* [[TermCommand|term]], Create, control, and delete subexpressions used in the equation scripts.


= Installation =
* [[Workflow]]
* [[Process Tutorial]] - floops
* [[Device Tutorial]] - floods
* [[Coupled Device and Process Tutorial]]
If you've never used FLOOXS before, start here. Work through these examples and exercises to learn the basics of FLOOXS. The example decks here contain line-by-line explanations, and are organized in such a way as to introduce important concepts in increasing complexity. Full unannotated examples are in the [[Main_Page#Full_FLOOXS_Examples | full examples]] section.


* [[Installation Directions]] - Installation help and notes created as I did a clean install on a linux system. Your mileage may vary.
== Full FLOOXS Examples==
These are full working decks that can be used as templates. If you would like line-by-line explanation of these examples, see the [[Main_Page#Tutorial | tutorial]] section of this manual.


= Workflow: How to create and run a FLOOXS simulation =
* [[Device Examples]] - full floods decks
* [[Process Examples]] - Homework Problems
* [[Complex Examples]] - Complex Examples for device and process
* [[AlGaN/GaN HEMT]] - reliability simulation results


===1. Grid Generation===
== Troubleshooting ==
These are worked examples of grid generation concepts.  Build 1D, 2D, and 3D structures for simulation.
Convergence:
*[[One Dimension]]
Having problems with solution convergence? If so, refer to this [[Convergence|convergence FAQ page]].
*[[Two Dimensions]]
*[[Three Dimensions]]
 
===2. Choose Simulation Type===
 
*[[Device Models]] - FLOODS
*[[Process Models]] - FLOOPS
 
===3. Post Processing===
Although not as fancy as commercial tools, there are a wide range of ways to examine output results.  Examples of analysis can be found in this section.
* [[Selection Examples]]
* [[Printing Examples]]
* [[Plotting Examples - new short version]]
 
=== Troubleshooting ===
 
==== Convergence ====
Having problems with convergence? If so, refer to this [[Convergence|page]].
 
=== Full FLOOXS Examples===
 
[[Device Examples]]
 
* [[Resistor example (1D)]]
* [[PN diode example (2D)]]
* [[NMOS example (2D)]]
* [[Device Examples|More examples...]]
 
Contacts and advanced device physics models (mobility, high-field effects, recombination, etc.) are available in the following section.
 
[[Process Examples]]
Examples that use alagator and default scripts to simulate IC processing.
 
FLOOPS Homework Problems
These are good introductory problems for beginners.  Being able to work through these will introduce most simple concepts to users.
* [[Homework Problems]]


= Command Reference Library =
= Command Reference Library =
This contains a command reference, in Unix man page style for each command in the program.   
This contains a command reference, in Unix man page style for each command in the program.   
==Command Conventions==
Some basic ideas on how commands work and are used.
* [[Conventions]]
==Grid Commands==
Commands to control grid generation and refinement.
*[[fsCommand | fs]] creating and control of new fieldservers - expert use only!
*[[lineCommand | line]] - Controls placement of gridlines for rectilinear meshes
*[[regionCommand | region]] - Allows rectangular materials to be created
*[[initCommand | init]] - Initializes the grid structure from rectangular commands or a saved file
*[[structCommand | struct]] - Allows the grid and solution values to be saved or read from a file
*[[SmoothCommand | Smooth]] - smooths the grid and attempts to make equilaterial elements
*[[gridCommand | grid]] - access to many grid information / manipulation actions
==Post Processing Commands==
Commands to analyze data.
* [[Post Processing Commands]]
Most common post processing commands:
* [[SelectCommand|select]]
* [[Plot.1dCommand|plot.1d]]
* [[Plot.2dCommand|plot.2d]]
* [[ContourCommand|contour]]
==Application Specific Commands==
Commands to solve systems of equations, deposit materials, and more!
===Process Commands===
*[[DepositCommand | deposit]] The deposit command allows new material to be deposited on the wafer surface. This command is all new for the 2002 release.
*[[DiffuseCommand | diffuse]] Simulate all types of thermal steps, including anneals, oxidations, and silicidations.
*[[EtchCommand | etch]] This command is used with a specific etch to evolve the surface according to the type of etching specified.
*[[FurnaceCommand | furnace]] This is a simplified interface to the diffuse command for furnace anneals.
*[[ImplantCommand | implant]] Implant a dopant and add it to the existing distributions.
*[[MaskCommand | mask]] This command is used to create a mask. It can be used subsequently with an implant or etch command..
*[[RTACommand | rta]] This is a simplified interface to the diffuse command and temperature ramps for rta anneals.
*[[StripCommand | strip]] This command removes a specified surface material in its entirety.
===Device Commands===
*[[ContactCommand | contact]] This command allows contacts to be added to an existing structure. It can also be used to fetch contact information - like current.
*[[DeviceCommand | device]] This is the main simulation command and supports DC, AC, and noise analysis.
==Other Commands==
Miscellaneous commands that aren't really categorizable.  There are many useful commands here!
*[[profileCommand | profile]] This allows the reading in of a one-dimensional profile
*[[mathCommand | math]] Controls the numerical analysis options - not for the faint hearted
*[[pdbCommands | pdb]] These control the access and values in the parameter data base.
= Development =
* [[New Developments]] - A brief list of the new enhancements since the last release.
* [[Bugs]] - A list of current FLOOXS Bugs that need action
* [[ToDo|"To Do" List]] - Needed code enhancements for specific actions
= Copyright and Redistribution =
This software and manual is copyrighted by the Mark Law, University of Florida Electrical and Computer Engineering department. It is intended for internal educational and research and development purposes only. Any use of any part of this software in any commercial package needs to be negotiated separately. Several of the implant models are copyrighted by Al Tasch from The University of Texas at Austin.
The UMFPACK package is copyrighted by [http://www.cis.ufl.edu/~davis Tim Davis], University of Florida, Computer and Information Sciences Department. (davis@cis.ufl.edu). Please contact Tim directly about redistribution of the UMFPACK software.
The tcl/tk package is in the public domain, and was developed by John Ousterhout at the University of California Berkeley.
Various included linear algebra packages are also public domain.
= Contributors =
== Faculty ==
Mark Law, University of Florida
== Current Ph.D Students ==
* [[Daniel Cummings]] - 2010 - email
* [[David Horton]] - 2010 - email
* [[Nicole Rowsey]] - 2011 - email
* [[Ben Gilstad]] - 2012 - email
* [[Ashish Kumar]] - 2013 - email
== Current Post-Docs Students ==
* [[Michelle Griglione]]  - email
* [[Erin Patrick]]  - email
= Research Group Publications =
== Students and Post-Docs ==
* Deodatta (Kumar) Apte, M.S. 1991
* Lahir Adam, Ph.D. 2001
* Ibrahim Avci, Ph.D. 2002
* Renata Camillo-Castillo, Ph.D. 2006
* Ed Carstens, M.S. 1995
* Steve Cea, Ph.D. 1996
* Samir Chaudhry, Ph.D. 1996
* Ming-Yeh Chuang, Ph.D. 1997
* H. Omer Dokumaci, Ph.D. 1997
* Susan Earles, Ph.D. 2002
* Michelle Griglione, Post-Doc, 1999-2000, 2007-
* Mohsan Habibi, B.S., 2003
* Yaser Haddara, Post-Doc, 1997-1998
* Minchang Liang, Ph.D. 1994
* Aaron Lilak, Ph.D. 2001
* Chih-Chuan Lin, Ph.D. 1995
* Vikas Meka, B.S. 1999
* Misty Northridge, B.S. 2000
* Heemyong Park, Ph.D. 1993
* Ljubo Radic, Ph.D. 2005
* Hernan Reuda, Ph.D. 1998
* Russ Robison, Ph.D. 2006
== Intel Development Team ==
Martin Giles, Stephen Cea, Hal Kennel, Aaron Lilak, and Patrick Keys. Intel is feeding back bug fixes and enhancements. Steve Morris - we miss you!
== Collaborators ==
Rex Lowther, Harris
: Grid and diffusion discretizations, Cylindrical Coordinates
Mike Morris, Steve Morris, Al Tasch, University of Texas, Austin
: Dual pearson implant models for boron, bf2, and arsenic
Goodwin Chin, IBM
: Original ideas for hierarchical mesh
Tim Davis, University of Florida
: the UMF factorization code
= Archive Section (Old Manual) =
* [[BLTInterface | BltPlot Examples - old version]]
* [[Plot Examples | Old Style Command Interface Plot Examples]]


= Getting started with Wiki =
[[Command Reference Library]]
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]

Latest revision as of 19:50, 29 June 2023

Introduction: What is FLOODS/FLOOPS?

FLOOXS is a Technology Computer Aided Design (TCAD) tool used for semiconductor process modeling and semiconductor device modeling that will descretize and solve a set of partial and ordinary differential equations on a 1, 2 or 3D mesh using numerical methods such as the Finite Element Method (FEM) and the Finite Volume Method (FVM). FLOOXS is built in c++, and uses several well-known math packages such as BLAS, LAPACK, and PETSC to handle the linear algebra. The user-interface is command-line tcl (tool control language), a scripting language, with additional FLOOXS-specific Alagator commands added in.

Developers and History

Code Description

  • What is Under the Hood - Detailed - A detailed description of how the c++ code is organized, how the finite element methods is implemented, what physics currently exist and how to add more.

Installation

Porting Notes from a 2016 port of the 2008 version. Thanks to Rex Lowther for sharing!

Running FLOOXS

Executing FLOOXS

  • Startup Script - set environment variables and alias paths (running FLOOXS for the first time)

Overview and Basic Concepts

  • Tcl - Tool Control Language is the main scripting language used to control local variables (set), do simple calculations (expr), define procedures (functions or routines), and accomplish basic read/write file operations (file). It sits on top of c++.
  • Conventions - how parameters work
  • Alagator - Alagator is the scripting language created specifically for FLOOXS to describe the differential equations used in process and device simulation. It sits on top of tcl.
  • Units in FLOOXS
  • Support Scripts - Built in tcl procedures that support simulation.

Examples and Tutorials

If you've never used FLOOXS before, start here. Work through these examples and exercises to learn the basics of FLOOXS. The example decks here contain line-by-line explanations, and are organized in such a way as to introduce important concepts in increasing complexity. Full unannotated examples are in the full examples section.

Full FLOOXS Examples

These are full working decks that can be used as templates. If you would like line-by-line explanation of these examples, see the tutorial section of this manual.

Troubleshooting

Convergence: Having problems with solution convergence? If so, refer to this convergence FAQ page.

Command Reference Library

This contains a command reference, in Unix man page style for each command in the program.

Command Reference Library