Manual: Difference between revisions

From Flooxs
Jump to navigation Jump to search
 
(45 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This is the main page for the FLOOXS (FLOOPS and FLOODS) wiki manual. FLOOXS stands for the '''FL'''orida '''O'''bject '''O'''riented '''D'''evice and '''P'''rocess '''S'''imulator, using the old unix wild card convention of x taking the place of either "P" or "D". The codes are built as a single executable (FLOOXS) and are configured with different sets of default variables for each purpose (FLOOPS/FLOODS).  New work in the [http://www.reliability.ece.ufl.edu Reliability MURI] is aimed at using the codes in combination to understand device operation driven failure modes.
= Organization of this Manual =
The goal of this wiki is to instruct new FLOOXS users how to install FLOOXS and run simulations using the FLOOXS TCAD package; serve as a repository for working FLOOXS models; and provide a convenient place for user discussion regarding both TCAD models in general as well as the FLOOXS implementation.
This manual is broken into several sections describing the commands that make up the FLOOXS simulator, common physics models used in semiconductor process and device simulation, and working examples implementing these models in FLOOXS. <span class="plainlinks">[http://ibsdietplan.org <span style="color:black;font-weight:normal;text-decoration:none!important;background:none!important; text-decoration:none;">ibs</span>]</span> in the manual are documented individually in unix man-style pages for users who may already be experienced TCAD scripters. In general, it is best to start with [[Main Page#Full FLOOXS Examples | examples]] that are similar to what you wish to do. The examples are explained in detail in the [[Main_Page#Tutorial | tutorial section]]. The tutorials are intended to introduce new concepts from simple to advanced, and contain line-by-line explanations of all the example decks, as well as links to the command descriptions for more detailed follow up.
= Introduction: What is FLOODS/FLOOPS? =
= 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.
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.


==== Scripting Languages and Command-Line Use ====
==Developers and History==
* [[C++]] - some discussion of what is under the hood, and how to use the gdb debugger.
*[[Developers and Contributors]]
* [[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++.
*[[History]]
* [[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.


==== General Overview of Device Simulation ====
==Code Description==
This section includes a general discussion of the governing differential equations commonly used in semiconductor device simulation (e.g. the Poisson and continuity equations) and how they are depicted in the FLOOXS Alagator script, as well as common methods for declaring boundary and initial conditions.
* [[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.
*[[Device Simulation Overview]]
*[[High Level Example: p/n Diode]]


= Installation =
== Installation ==


* [[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 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 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 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 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
[[:Media:PortNotes.pdf|Porting Notes]] from a 2016 port of the 2008 version. Thanks to Rex Lowther for sharing!


= Running FLOOXS =
= Running FLOOXS =
== Executing FLOOXS ==
* [[Startup Script]] - set environment variables and alias paths (running FLOOXS for the first time)
* [[Startup Script]] - set environment variables and alias paths (running FLOOXS for the first time)
* [[FLOOXS within FLOOXS]] - use the FLOOXS command line to run another instance of FLOOXS


= Tutorial =
==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==
 
* [[Workflow]]
* [[Process Tutorial]] - floops
* [[Process Tutorial]] - floops
* [[Device Tutorial]] - floods
* [[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.
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.


= Workflow: How to create a FLOOXS simulation from scratch =
== Full FLOOXS Examples==
 
===1. Grid Generation===
These are worked examples of grid generation concepts.  Build 1D, 2D, and 3D structures for simulation.
*[[Defining a Grid]] - 1D, 2D, and 3D
*[[Gas]] - is an automatically generated material. Where does floods put it?
*[[What is a .str file?]] - explanation of the format of the structure file
*[[Adaptive Gridding]] - new
 
===3. Add Solution Variables===
Includes a general discussion of declaring variables in FLOOXS, including "pde" vs. "const," and "solution" vs. "sel z=" vs. "set."
*[[Add Solution Variables]]
 
===4. Add Process or Device Models===
 
*[[Process Models]] - FLOOPS
*[[Device Models]] - FLOODS
 
===5. Solve ===
*[[Process Solves]] - FLOOPS
*[[Device Solves]] - FLOODS
 
===6. Post Processing (print or plot results)===
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]]
* [[Tecplot]] - For UF SWAMP Group / TEC users only
 
= Troubleshooting =
Convergence:
Having problems with solution convergence? If so, refer to this [[Convergence|convergence FAQ page]].
 
Check All Your Equations - Use this [[PrintEqns Procedure | PrintEqns]] procedure
 
= 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.
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.


Line 77: Line 51:
* [[Complex Examples]] - Complex Examples for device and process
* [[Complex Examples]] - Complex Examples for device and process
* [[AlGaN/GaN HEMT]] - reliability simulation results
* [[AlGaN/GaN HEMT]] - reliability simulation results
* [[AlGaN/GaN HEMT - radiation effects]] 
 
* [[AlGaN/GaN HEMT - chemical sensors]]
== Troubleshooting ==
Convergence:
Having problems with solution convergence? If so, refer to this [[Convergence|convergence FAQ page]].


= Command Reference Library =
= Command Reference Library =
Line 84: Line 60:


[[Command Reference Library]]
[[Command Reference Library]]
= Development =
* [[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.
* [[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: all FLOOXS users are encouraged to contribute ideas.
= 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 ===
*[http://www.ece.ufl.edu/users/law-mark Mark Law], University of Florida
=== Ph.D Students ===
* [[Daniel Cummings]] - 2010 - danieljc@ufl.edu (Device Simulation: Strained-Si, Single-Event Effects)
* [[David Horton]] - 2013 - davidchorton@gmail.com (Device Simulation: Mechanisms of degradation of AlGaN/GaN devices, OFF state strain-driven diffusion, ON state hot-electron effects)
* [[Nicole Rowsey]] - 2011 -  nrowsey@ufl.edu (Device Simulation: TID Effects, Multi-Gate, Charge Qubit Devices)
* [[Ashish Kumar]] - 2013 - email- ashishk@ufl.edu (Process Simulation: Silicide Growth, Dopant Segregation, Stress and Strain Analysis)
* [[Madeline Sciullo]] - 2015 - email- madelinesciullo@ufl.edu (Process Simulation: Carbon Model Development; Device Simulation: SRH PN Diode (1D), AlGaN/GaN HEMT Chemical Sensors).
* [[Shrijit Mukherjee]] - 2015 - email- shrijitm10@ufl.edu (Device Simulation: Sinusoidal Steady State Analysis, Interface trapping).
* [[Henry Aldridge]] - 2016 - email- aldridhl@ufl.edu (Process Simulation: Dopant Diffusion and Activation in III-V Semiconductors).
=== Post-Docs ===
* [[Michelle Griglione]]  - email
* [[Erin Patrick]]  - ee1[at]ufl.edu
[[Past Students and Post-Docs]]
=== 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. UMF factorization code.
= Recent Research Group Publications =
= Archive Section (Old Manual) =
* [[BLTInterface | BltPlot Examples - old version]]
* [[Plot Examples | Old Style Command Interface Plot Examples]]
= Getting started with Wiki =
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