Reference Guide
DEVICE
Table of Contents
Part I New Features
11
... 11 1 New features for version 1.5
... 12 2 New features for version 2.0
... 13 3 New features for version 3.1
Part II Solver physics
15
... 15 1 FDTD
... 16 FDTD and Maxw ell's equations
... 18 Meshing in FDTD
... 19 2 Eigenmode Solver
... 20 Meshing in the Eigenm ode solver
... 21 3 Propagator
... 21 2.5D FDTD
... 23 Eigenm ode expansion
... 23 Meshing in the propagator
... 24 4 INTERCONNECT
... 24 Tim e Dom ain Sim ulator
... 25 Frequency Dom ain Sim ulator
... 25 5 DEVICE ... 25 System of Equations ... 28 Meshing in DEVICE
Part III CAD layout editor
29
... 29 1 Main title bar
... 30 2 Toolbars ... 30 Main ... 31 Edit ... 33 Mouse m ode ... 34 View ... 35 Sim ulation ... 36 Search bar ... 36 3 View ports ... 37 4 Object Tree ... 37 Enable/Disable Sim ulation Object
... 38 5 Results View
... 38 6 Optimization and Sweeps
... 38 7 Script Prompt and Script Editor
... 39 8 Script Workspace and Script Favorites
... 39 9 Changing the CAD layout
... 42 1 Material database ... 43 2 Electrical models ... 44 Conductors ... 44 Insulators ... 44 Sem iconductors ... 54 3 Mesh order
Part V Simulation objects
56
... 58 1 Structures
... 58 Prim itives
... 59 Geom etry tab
... 59 Material tab
... 60 Rotations tab
... 60 Graphical Rendering tab
... 60 Im port Data tab
... 65 Properties tab ... 65 Script tab ... 65 2 Simulation ... 66 General tab ... 67 Mesh tab ... 67 Geom etry tab
... 67 Transient tab
... 68 Results
... 68 Advanced options tab
... 69 Solver type ... 70 Ferm i statistics ... 70 3 Monitors ... 71 General tab ... 72 Geom etry tab
... 72 4 Generation ... 72 5 Doping ... 74 6 Contacts ... 76 7 Equation interpreter
Part VI Running simulations and analysis
77
... 77 1 Resource Manager
... 79 Resources Advanced Options
... 80 2 Running a simulation
... 81 3 Analysis tools
... 82 Analysis tools and the sim ulation environm ent
... 82 Figure w indow s for plots and im ages
... 83 Data export ... 83 Visualizer ... 93 Results Manager ... 97 4 Optimization and parameter sweeps
... 99 Optim ization
... 101 Particle Sw arm Optim ization
... 103 Param eter Sw eeps
... 104 Nested Sw eeps
... 105 Yield Analysis
Part VII Scripting Language
108
... 109 1 System ... 112 new project ... 112 new m ode ... 113 save ... 113 load ... 113 del ... 114 rm ... 114 dir ... 114 ls ... 115 cd ... 115 pw d ... 115 cp ... 116 m v ... 116 exit ... 116 system ... 117 fileexists ... 117 currentfilenam e ... 117 filebasenam e ... 118 fileextension ... 118 filedirectory ... 118 getcom m ands ... 118 Run script ... 119 getpath ... 119 addpath ... 119 w hich ... 120 pause ... 120 break ... 120 Excape key ... 121 form at ... 121 loaddata ... 121 savedata ... 122 savedcard ... 122 readdata ... 123 w rite ... 123 asapexport ... 124 asapload ... 124 asapim port ... 124 m atlabsave ... 125 m atlabsavelegacy ... 125 m atlabload ... 125 m atlab ... 127 m atlabget ... 127 m atlabput
... 127 copytoclipboard ... 128 pastefrom clipboard ... 128 debug ... 128 vtksave ... 129 lookupread ... 129 lookupopen ... 129 lookupclose ... 130 lookupw rite ... 130 2 Manipulating variables ... 132 = ... 132 : ... 132 [] ... 133 % ... 133 linspace ... 133 m atrix ... 133 randm atrix ... 134 randnm atrix ... 134 histogram ... 134 m eshgridx ... 135 m eshgridy ... 135 m eshgrid3dx ... 135 m eshgrid3dy ... 136 m eshgrid3dz ... 136 m eshgrid4d ... 136 clear ... 136 w orkspace ... 137 Accessing and assigning m atrix elem ents
... 138 Matrix operators ... 138 Pre-defined constants ... 139 m atrixdataset ... 139 rectilineardataset ... 140 addparam eter ... 140 addattribute ... 140 getparam eter ... 141 getattribute ... 141 eye ... 141 Datasets ... 146 struct ... 147 cell ... 147 unstructureddataset ... 148 3 Operators ... 149 . ... 150 * ... 150 / ... 150 + ... 150 - ... 151 ^ ... 151 == ... 151 alm ostequal
... 152 <= ... 152 >= ... 153 < ... 153 > ... 153 & ... 153 and ... 154 | ... 154 or ... 154 ! ... 155 ~ ... 155 " ... 156 ' ... 157 endl ... 157 ? ... 157 com m ents ... 157 4 Functions ... 162 sin ... 162 cos ... 162 tan ... 162 asin ... 163 acos ... 163 atan ... 163 atan2 ... 164 real ... 164 im ag ... 164 conj ... 164 abs ... 165 angle ... 165 unw rap ... 165 log ... 165 log10 ... 166 sqrt ... 166 exp ... 166 size ... 166 length ... 167 pinch ... 167 sum ... 168 m ax ... 168 m in ... 168 dot ... 168 cross ... 169 eig ... 169 m ult ... 170 flip ... 170 perm ute ... 170 reshape ... 171 inv ... 171 interp ... 172 interptri ... 172 spline
... 173 integrate ... 173 integrate2 ... 174 find ... 174 findpeaks ... 175 transpose ... 175 ctranspose ... 175 num 2str ... 176 str2num ... 176 eval ... 176 feval ... 176 substring ... 177 findstring ... 177 replace ... 178 replacestring ... 178 splitstring ... 178 fft ... 180 fftw ... 181 fftk ... 182 invfft ... 183 czt ... 183 polyarea ... 184 centroid ... 184 polyintersect ... 185 inpoly ... 185 polygrow ... 186 polyand ... 186 polyor ... 186 polydiff ... 187 polyxor ... 187 lineintersect ... 188 linecross ... 188 ceil ... 188 floor ... 189 m od ... 189 sign ... 189 round ... 190 rand ... 190 lognrnd ... 190 randn ... 191 randreset ... 191 finite ... 191 solar ... 192 stackrt ... 192 m ean ... 192 all ... 193 any ... 193 var ... 194 std ... 194 m apfind ... 195 quadtri
... 196 norm
... 196 5 Loop and conditional statements
... 196 for ... 197 if ... 197 6 Plotting commands ... 198 plot ... 199 plotxy ... 200 polar ... 200 polar2 ... 201 polarim age ... 202 histc ... 202 legend ... 202 im age ... 203 visualize ... 204 selectfigure ... 204 setplot ... 204 exportfigure ... 205 closeall ... 205 vectorplot ... 205 7 Adding Objects ... 208 sw itchtolayout ... 209 layoutm ode ... 209 addgroup ... 209 addstructuregroup ... 210 addanalysisgroup ... 210 addobject ... 210 addcontact ... 211 addcircle ... 211 addcustom ... 211 addim port ... 212 addpyram id ... 212 addpoly ... 212 addrect ... 213 addtriangle ... 213 addring ... 213 addsphere ... 214 addsurface ... 214 addfdtd ... 214 addeigenm ode ... 214 addpropagator ... 215 addm esh ... 215 addm ode ... 215 addm odesource ... 215 adddipole ... 216 addgaussian ... 216 addplane ... 216 addtfsf ... 217 addim portedsource ... 217 addindex ... 217 addtim e
... 218 addm ovie ... 218 addprofile ... 218 createbeam ... 219 adddevice ... 219 adddope ... 219 adddiffusion ... 219 addim portdope ... 220 addbulkgen ... 220 addim portgen ... 220 addgridattribute ... 221 addelem ent ... 222 addm odeexpansion ... 222 addeffectiveindex ... 222 addchargem onitor ... 223 addfieldm onitor ... 223 8 Manipulating objects ... 226 groupscope ... 226 deleteall ... 227 delete ... 227 selectall ... 227 unselectall ... 227 select ... 228 selectpartial ... 228 shiftselect ... 229 shiftselectpartial ... 229 flipelem ent ... 229 rotateelem ent ... 229 m ove ... 230 copy ... 230 addtogroup ... 231 adduserprop ... 231 set ... 232 setnam ed ... 232 setglobalm onitor ... 233 setglobalsource ... 233 setm odes ... 233 setposition ... 234 setrectangle ... 234 getposition ... 234 getrectangle ... 235 get ... 235 runsetup ... 236 getnum ber ... 236 getnam ed ... 237 getnam ednum ber
... 237 getglobalm onitor ... 237 getglobalsource ... 238 getsolver ... 238 haveproperty
... 240 im portsurface2 ... 241 im portnk ... 243 im portnk2 ... 245 im portnkobfuscated ... 246 im portbinary ... 248 im portbinary2 ... 250 im portbinaryobfuscated ... 251 updatesourcem ode ... 252 setsourcesignal ... 253 updatem odes ... 254 clearsourcedata ... 254 clearm odedata ... 255 seteigensolver ... 256 geteigensolver ... 256 redraw ... 257 redraw off ... 257 redraw on ... 257 redraw m ode ... 258 setview ... 259 getview ... 259 orbit ... 260 fram erate ... 260 undo ... 260 redo ... 261 addport ... 261 rem oveport ... 262 connect ... 262 disconnect ... 262 setexpansion ... 263 rem oveexpansion ... 263 setactivesolver ... 263 getnam e ... 263 setnam e ... 264 im portdataset ... 264 cleardataset ... 265 9 Running simulations ... 265 runparallel ... 266 addjob ... 266 runjobs ... 266 clearjobs ... 267 runsw eep ... 267 10 Measurement and optimization data
... 268 getsw eepdata ... 269 getsw eepresult ... 269 getdata ... 270 getresult ... 270 runanalysis ... 271 havedata ... 271 haveresult ... 272 havesw eepdata
... 272 havesw eepresult ... 273 copydcard ... 273 clearanalysis ... 274 cleardcard ... 274 getelectric ... 274 getm agnetic ... 275 Read and w rite data to files
... 275 loadsw eep ... 275 savesw eep ... 276 11 Material database ... 276 addm aterial ... 277 copym aterial ... 277 setm aterial ... 277 getm aterial ... 278 getindex ... 278 getfdtdindex ... 279 getm odeindex ... 280 getnum ericalperm ittivity
... 281 12 GDSII ... 282 gdsopen ... 282 gdsclose ... 283 gdsbegincell ... 283 gdsendcell ... 284 gdsaddpoly ... 284 gdsaddcircle ... 285 gdsaddrect ... 286 gdsaddref ... 286 gdsim port ... 288 13 User defined GUIs
... 288 m essage ... 289 new w izard ... 289 new w izardpage ... 289 w izardw idget ... 290 w izarddata ... 291 runw izard ... 291 w izardgetdata ... 291 killw izard ... 292 w izardoption ... 292 fileopendialog ... 292 filesavedialog ... 293 14 Creating your own script commands
1
New Features
DEVICE is constantly being upgraded. See the following sections for a list of the latest new features.
New features for version 1.5 New features for version 2.0 New features for version 3.1
1.1
New features for version 1.5
New solver option
In the initial versions of the software, the Gummel’s method was used in the solver, in which the voltage and charge were solved sequentially (one was used as a input to the other) until the two were consistent. In DEVICE 1.5, the Newton solver has been
introduced, which solves for the charge and voltage simultaneously. The Newton solver is more sensitive to the initial conditions (it may not converge), but will converge much faster for a wider variety of problems if it’s given a good initial guess.
Advanced contact models
Several modifications have been made to the contact models for DEVICE:
Lumped element loads (R and C) can now be added on device terminals. Custom
specification of DC sweep bias voltages is available.
Non-ohmic contacts will use a Schottky barrier model accounting for barrier lowering due to the applied electric field.
11 12 13
Adaptive transient simulation
Transient simulations now employ adaptive time-stepping to optimally vary the simulation interval while maintaining accuracy. Coupled with the full Newton solver, a wider variety of transient simulations can now be performed efficiently with DEVICE. To view the new settings associated with the transient simulation, consult the "Transient" tab in the Device region properties. Here, the user may specify time step constraints, down-sampling, and shuttering for optical generation objects.
Results selection
In the Device region properties, users now how the option to retain a reduced set of spatial data. Under the "Results" tab, a list of all available results can be viewed, and may be toggled on or off to reduce memory requirements. By default all results are included.
1.2
New features for version 2.0
Results manager and Visualizer
The Results Manager is a tool for analyzing simulation data. This includes a Results View window which displays all the results for the simulation object that is currently selected in the Object Tree. The Results Manager also includes a Script Workspace and a Script Favorites window, providing additional GUI-based functionalities.
Also featured in DEVICE 2.0 is the more improved Visualizer , which significantly simplifies the process of visualizing simulation data. When used in conjunction, Results Manager and the Visualizer provide a very useful and intuitive way of analyzing and visualizing variables and results through the GUI, greatly reducing the need for scripting.
Datasets
Lumerical datasets are structured data objects that collect a set of related matrices into a single convenient object. See Dataset introduction for more information.
Yield analysis tool
A new yield analysis tool is available in the Optimization and Sweeps window. The yield analysis tool gives users the ability to run extensive Monte Carlo analysis, sweeping
93
83
across multiple parameters to assess statistical variations of circuit elements on overall circuit performance.
Please see the Yield analysis page in the Reference Guide for more details, and the Running a yield analysis task example in the User Guide.
Other new script commands
The following script functions were added in DEVICE 2.0. For more information, see the function descriptions in the scripting section of the Reference Guide.
. operator , addattribute , addparameter , eig , debug ,
getattribute , getparameter , getresult , getsweepresult ,
integrate2 , matrixdataset , addmodeexpansion , mult ,
permute rectilineardataset , reshape
1.3
New features for version 3.1
3D solver
DEVICE is now capable of simulating fully three dimensional geometries. The solver type can be chosen by the user to be 2D or 3D. This means that arbitrary structures particularly where slicing or averaging of imported 3D data is not valid can now be solved for in 3 dimensions.
Visualization
The visualizer has been updated for 3D simulations to allow the user to better view the results, enabling image plots, arbitrary slices of the 3D geometry or line plots of various types of data.
Field and charge monitors
A new object type, monitor, has been added to DEVICE. 2D/3D monitors can be placed anywhere within the simulation region to record the total charge within the monitor and/or electric field through the monitor boundaries.
Continue from previous solution
It is now possible to specify a project file that has already been run as a reference project for solving another simulation. The initialization step in the solver can be skipped with this feature, using the converged solution of the specified file. This will save a lot of time in memory intensive simulations.
105
149 140 140 169 128
141 140 270 269
173 139 222 169
Electron-hole density grid attribute
FDTD Solutions 8.7 and MODE Solutions 6.6 (and beyond) can import electron-hole density data recorded on a finite-element mesh directly from a DEVICE simulation. This approach, which offers significant improvement over the previous (n, k) import option, reduces simulation memory requirements and interpolation errors.
XML lookup table support
As of version 3.0, users can simulate a wide range of device designs with Lumerical's TCAD tools, the results of which get incorporated into an XML lookup table. This XML lookup table can then be associated with a specific element as the basis for a validated compact model within an INTERCONNECT project. Please see Parameter Extraction and PDKs for detailed examples.
Export viewports to image
As of version 3.1, users can export CAD viewports into JPEG figures by selecting "View -> Export view" from the main title bar.
new script commands
The following script functions were added in DEVICE 3.0. For more information, see the function descriptions in the scripting section of the Reference Guide.
all, any, quadtri, unstructuredataset, loadsweep, savesweep, var, std
2
Solver physics
This chapter describes the basic physics and algorithms used in Lumerical's various 'Physics' based solvers:
FDTD Solutions
The Finite-Difference Time-Domain method, which is the method behind both FDTD Solutions and MODE Solutions' Propagator.
MODE Solutions Eigenmode Solver
The method behind MODE Solutions' Eigenmode Solver and FDTD Solutions' Integrated MODE Solver.
MODE Solutions Propagator
The method behind MODE Solutions' omnidirectional propagator for planar integrated systems.
INTERCONNECT
The method behind Lumerical's INTERCONNECT circuit simulator.
DEVICE
The method behind Lumerical's DEVICE electronic device simulator.
2.1
FDTD
The finite-difference time-domain (FDTD) method1,2,3 is a state-of-the-art method for solving Maxwell's equations in complex geometries. Being a direct time and space solution, it offers the user a unique insight into all types of problems in electromagnetics and photonics. In addition, FDTD can also obtain the frequency solution by exploiting Fourier transforms, thus a full range of useful quantities can be calculated, such as the complex Poynting vector and the transmission / reflection of light.
This section will introduce the basic mathematical and physics formalism behind the FDTD algorithm used in FDTD Solutions and MODE Solutions' propagator, starting from the linear Maxwell's equations. The simulator can be used for advanced research and development or as an ideal teaching and learning environment in photonics, optics, and electromagnetics. See the FDTD Numerical methods video for additional information: http://www.lumerical. com/support/courses/fdtd_numerical_methods/video.html 15 19 21 24 25
1 Dennis M. Sullivan, Electromagnetic simulation using the FDTD method. New York: IEEE Press Series, (2000).
2 Allen Taflove, Computational Electromagnetics: The Finite-Difference Time-Domain Method. Boston: Artech House, (2005).
3 Stephen D. Gedney, Introduction to the Finite-Difference Time-Domain (FDTD) Method for Electromagnetics. Morgan & Claypool publishers, (2011).
2.1.1 FDTD and Maxwell's equations
FDTD solves Maxwell's curl equations in non-magnetic materials:
H
t
D
)
(
)
(
)
(
0E
D
rE
t
H
01
where H, E, and D are the magnetic, electric, and displacement fields, respectively, while
)
(
r
is the complex relative dielectric constant (
2
)
(
n
r
, where n is the refractive index).
Ez and Hx, Hy, and Hz. If we assume that the structure is infinite in the z dimension and that the fields are independent of z, specifically that
)
,
,
(
)
,
,
,
(
x
y
z
rx
y
r0
z
H
z
E
then Maxwell's equations split into two independent sets of equations composed of three vector quantities each which can be solved in the x-y plane only. These are termed the TE (transverse electric), and TM (transverse magnetic) equations. We can solve both sets of equations with the following components:
TE: Ex, Ey, Hz TM: Hx, Hy, Ez
For example, in the TM case, Maxwell's equations reduce to:
y
H
x
H
t
D
z y x)
(
)
(
)
(
0 r z zE
D
y
E
t
H
x z 01
x
E
t
H
y z 01
FDTD Solutions can solve the two and three dimensional Maxwell's equations in dispersive media and some simple non-linear media, where the user can specify arbitrary geometric structures and various input excitation sources. The two dimensional FDTD simulator solves the TE and/or TM Maxwell equations.
FDTD is a time domain technique, meaning that the electromagnetic fields are solved as a function of time. In general, FDTD Solutions is used to calculate the electromagnetic fields as a function of frequency or wavelength by performing Fourier transforms during the simulation. This allows it to obtain complex-valued fields and other derived quantities such as the complex Poynting vector, normalized transmission, and far field projections as a function of frequency or wavelength. The field information can be returned in two different normalization states, please see the section on frequency domain normalization for more details.
Dispersive materials with tabulated refractive index (n,k) data as a function of wavelength can be solved using the multi-coefficient models with auto-fitting. Alternatively, specific theoretical models such as Plasma (Drude), Debye or Lorentz can be used. See the chapter on the Material Database for details.
Boundary conditions are very important in electromagnetics and simulation techniques. FDTD Solutions/propagator supports a range of boundary conditions, such as PML, periodic, and Bloch. See the boundary conditions section here for the complete list. Sources are another important component of a simulation. FDTD Solutions/propagator supports a number of different types of sources such as point dipoles, beams, plane waves, a total-field scattered-field (TFSF) source, a guided-mode source for integrated optical components, and an imported source to interface with external photonic design softwares. Detailed information about each of these sources is contained in the Radiation sources section.
Unless otherwise specified, all quantities in FDTD Solutions/propagator are calculated in SI units. Please see Units and Normalization for more information.
The online User Guide at http://docs.lumerical.com/en/fdtd/knowledge_base.html has many more details about the physics of FDTD and how to obtain advanced results. Please see, for example, the sections on coherence, and far field calculations in the online User Guide.
2.1.2 Meshing in FDTD
FDTD Solutions uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more
accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. FDTD Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh.
By default, the simulation mesh is automatically generated. To maintain accuracy, the meshing algorithm will create a smaller mesh in high index (to maintain a constant number of mesh points per wavelength) and highly absorbing (resolve penetration depths) materials. In some cases, it is also necessary to manually add additional meshing
constraints. Usually, this involves forcing the mesh to be smaller near complex structures (often metal) where the fields are changing very rapidly.
2.2
Eigenmode Solver
The Eigenmode Solver (Eigensolver) solves for optical modes in a cross-section of an arbitrary waveguide geometry. The waveguide mode as a transverse field distribution that propagates along the waveguide without changing shape.
In the z-normal eigenmode solver simulation example shown in the figure above, we have the vector fields:
) (
)
,
(
i t ze
y
x
E
and ) ()
,
(
i t ze
y
x
H
where ω is the angular frequency and β is the propagation constant. The modal effective
index is then defined as
c
n
eff.
MODE Solutions find these modes by solving Maxwell's equations on a cross-sectional mesh of the waveguide. The finite difference algorithm is the current method used for meshing the waveguide geometry, and has the ability to accommodate arbitrary waveguide structure. Once the structure is meshed, Maxwell's equations are then formulated into a matrix eigenvalue problem and solved using sparse matrix techniques to obtain the effective index and mode profiles of the waveguide modes. This method is based on Zhu and Brown1 , with proprietary modifications and extensions.
Z. Zhu and T. G. Brown, “Full-vectorial finite-difference analysis of microstructured optical fibers,” Opt. Express 10, 853–864 (2002), http://www.opticsexpress.org/abstract.cfm? URI=OPEX-10-17-853
2.2.1 Meshing in the Eigenmode solver
The MODE Solutions Eigenmode Solver uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and
magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. MODE Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh.
By default, the simulation will use a uniform mesh. You simply set the number of mesh points along each axis. In some cases, it is necessary to add additional meshing constraints. Usually, this involves forcing the mesh to be smaller near complex
structures where the fields are changing very rapidly. Note: In FDTD-based simulations, it's important to use a smaller mesh in high index materials, and to maintain a minimum number of mesh points per wavelength. This constraint does not exist for the Eigenmode solver.
2.3
Propagator
MODE Solutions currently supports 2 methods of propagating fields.
1) The 2.5D FDTD propagator. This propagator accurately describes the propagation of light in planar integrated optical systems, from ridge waveguide-based systems to more complex geometries such as photonic crystals. The propagator allows for planar (omni-directional) propagation without any assumptions about an optical axis, which allows for structures like ring resonators and photonic crystal cavities to be efficiently modeled – devices that have been traditionally treated with 3D FDTD. The propagator can model devices on the scale of hundreds of microns quickly.
2) The eigenmode expansion propagator. This script based, unidirectional eigenmode expansion propagator allows you to decompose one input or waveguide mode onto the modes of another waveguide section and propagate the modes an arbitrary distance. It is useful for waveguide couplers, long tapers and other devices where the propagation can be assumed to be essentially unidirectional.
2.3.1 2.5D FDTD
The FDTD propagator is based on collapsing a 3D geometry into a 2D set of effective indices that can be solved with 2D FDTD . This works best with waveguides made from planar structures. For additional information on the 2.5D Propagator, see the Lumerical’s 2.5D FDTD Propagation Method whitepaper on our website.
The main assumption of this method is that there is little coupling between different supported slab modes. For many devices, such as SOI based slab waveguide structures, that only support 2 vertical modes with different polarizations, this is an excellent
assumption.
The calculation steps involve:
1. Identification of the vertical slab modes of the core waveguide structure, over a desired range of wavelengths.
2. Meshing of the structure and collapse of the 3rd dimension by calculation of the corresponding effective 2D indices (taking into account the vertical slab mode profile). There are currently two approaches to doing this in the Propagator:
Variational
A variational procedure based on Hammer and Ivanova1. Here, the effective permittivities of the TE and TM-like modes have the form:
21
23
z z r r TE eff
dz
z
M
dz
z
M
z
z
y
x
k
y
x
2 2 2)
,
(
)
,
(
)
,
(
)
,
,
(
)
,
,
(
z z r z z r r TM effdz
M
z
y
x
k
dz
z
M
z
y
x
dz
M
z
y
x
dz
M
k
y
x
2 2 2 2 2 2)
,
,
(
1
)
,
,
(
1
1
|
|
)
,
,
(
1
|
|
1
)
,
,
(
where εr, M and βr are the 1-D reference permittivity profile, the associated guided slab mode and the propagation constant.
Reciprocity Based
This is a procedure based on the reciprocity theorem, as described in Snyder and Love2:
z z r r eff
dz
n
P
dz
z
E
z
z
y
x
k
y
x
n
2 2 1 0 0)
,
(
)
,
(
)
,
,
(
)
,
,
(
Note that in both cases, the generated effective materials are also dispersive, where the dispersion comes both from the original material properties (material dispersion) and the slab waveguide geometry (waveguide dispersion). These new materials are then fitted using Lumerical Solutions' multi-coefficient model into a time-domain form that can be used in the 2D FDTD simulation in step 3. Note that the effective index treatment may lead to
generated materials that have properties that are unphysical (for example, having an artificial negative imaginary index). In this case, one has the option of restricting the range of generated indices to the min/max values defined by the physical material properties of the original materials. All of these settings can be found under the Effective index tab of the Propagator simulation region.
3. Simulation of the structure in 2D by FDTD . 4. If desired, re-expansion of the fields into 3D.
The Ring resonator getting started example contains step-by-step instructions and discussions on how to carry out a propagator simulation using the variational FDTD method.
1 Manfred Hammer and Olena V. Ivanova, MESA Institute for Nanotechnology, University of Twente, Enschede, The Netherlands
"Effective index approximation of photonic crystal slabs: a 2-to-1-D assessment", Optical and Quantum Electronics ,Volume 41, Number 4, 267-283, DOI: 10.1007/s11082-009-9349-3
2 Allan W. Snyder and John D. Love, Optical Waveguide Theory. Chapman & Hall, London, England, 1983.
2.3.2 Eigenmode expansion
This unidirectional eigenmode expansion method is implemented in the propagate command.
The propagate command calculates the resulting mode profile of an arbitrary mode after it has propagated through a waveguide for some distance. This is done by decomposing the mode into modes supported by the waveguide (ie. the currently calculated modes) using overlap integrals. Each supported mode is then propagated through the waveguide. The resulting modes are then added coherently to give the final mode profile.
This technical is useful for waveguide couplers, long tapers and other devices where the propagation can be assumed to be essentially uni-directional. Please see MODE Solutions' applications library for some use case examples:
Evanescent waveguide couplers Tapered waveguides
Polarization rotator
2.3.3 Meshing in the propagator
The MODE Solutions Propagator uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. MODE Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh.
By default, the simulation mesh is automatically generated. To maintain accuracy, the meshing algorithm will create a smaller mesh in high index (to maintain a constant number of mesh points per wavelength) and highly absorbing (resolve penetration depths) materials. In some cases, it is also
necessary to manually add additional meshing constraints. Usually, this involves forcing the mesh to be smaller near complex structures (often metal)
where the fields are changing very rapidly.
Note: meshing time
The general meshing algorithm can take a reasonable amount of time compared to the simulation because the mesh must be effectively completed in 3D. It is possible for the user to specify if the structure is composed of purely extruded structures - that is structures that are extruded along z with perfectly vertical sidewalls. In this case, the meshing can be accomplished much faster.
2.4
INTERCONNECT
INTERCONNECT is a circuit simulator that can support mixed signal representation of optical single and multi-mode signals as well as electrical signals. The signals can propagate fully bidirectionally through the circuit topology for both Time Domain and
Frequency Domain simulations.
Users can choose elements from an extensive list of pre-defined PIC elements, as well as create custom elements from pre-defined primitives or via Lumerical’s powerful script language. In addition, elements can also be characterized accurately using results directly from Lumerical's electromagnetic simulators (FDTD Solutions and MODE Solutions).
2.4.1 Time Domain Simulator
Time domain simulation is performed using a data flow system simulator, allowing for more flexibility than using traditional discrete time or time-driven simulators. The simulator scheduler calculates each element in order to generate time domain waveform samples and propagate them bidirectionally. Very close coupling between components can be simulated allowing, for example, the analysis of optical resonators.
24 25
2.4.2 Frequency Domain Simulator
Frequency domain simulation is performed using scattering data analysis to calculate the overall circuit response.
The circuit is composed a series of elements connected by an arbitrary number of input/ output (or bidirectional) ports. Users can define all the modes supported by the device and their frequency dependent properties.
Once all the ports are defined, INTERCONNECT carries out the scattering data analysis for the entire circuit by solving a sparse matrix that represents the circuit as connected scattering matrices, each one of them representing the frequency response of an individual element.
2.5
DEVICE
DEVICE is an physics-based electrical simulation tool for semiconductors, which self-consistently solves the system of equations describing the electrostatic potential and density of free charge (electrons and holes). DEVICE solves the drift-diffusion equation to describe the spatial distribution of electrons and holes, and solves the Poisson equation to establish the electrostatic potential. Solving the drift-diffusion (DD) equations is an
established and robust method that will produce accurate results for a wide range of semiconductor devices under common operating conditions.
This section will introduce the basic mathematical and physics formalism behind the self-consistent algorithm used in DEVICE, starting from the non-linear Poisson and drift-diffusion equations. The simulator can be used for advanced research and development or as an ideal teaching and learning environment in semiconductor electronics and
optoelectronics.
2.5.1 System of Equations
DEVICE solves the drift-diffusion equations for electrons and holes (carriers)
n
qD
n
q
n n nE
J
p
qD
p
q
p p pE
J
where Jn,p is the current density (A/cm2), q is the positive electron charge, µ n,p is the mobility, E is the electric field, Dn,p is the diffusivity, and n and p are the densities of the
electrons and holes, respectively (the subscripts n and p indicate quantities that are specific to the carrier type). Each carrier (electron or hole) moves under the influence of two competing processes: drift due to the applied electric field, and random thermal diffusion due to the gradient in the density. These processes are represented in the drift-diffusion equations as the sum of two terms.
The mobility µ n,p describes the ease with which carriers can move through the
semiconductor material, and is related to the diffusivity Dn,p through the Einstein relation
q
T
k
D
B p n p n, ,where kB is the Boltzmann constant. The mobility is a key property of the material, and may be modeled as a function of temperature, impurity (doping) concentration, carrier concentration, and electric field. For further details, please see the section on material models.
To solve the drift-diffusion equations, the electric field must be known. To determine the electric field, Poisson's equation is solved:
q
V
where ε is the dielectric permittivity, V the electrostatic potential
(
E
V
)
and ρ the net charge density,C
n
p
which includes the contribution C from the ionized impurity density.
Finally, the auxiliary continuity equations are required to account for charge conservation
n n
R
q
t
n
J
1
p pR
q
t
p
J
1
where Rn,p is the net recombination rate (the difference between the recombination rate and generation rate). The physical processes associated with the material are assumed to act equivalently when applied to electrons or holes, and as a result, R = Rn = Rp. The recombination and generation processes are important factors in the material-specific calculation of carrier behavior. Multiple recombination and generation processes are modeled, which may depend on temperature, impurity (doping) concentration, carrier concentration, electric field, and current density. For further details, please see the section on material models.
DEVICE discretizes and solves the drift-diffusion and Poisson’s equations on an unstructured finite-element mesh in one and two dimensions. The simulation region is partitioned into multiple domains along boundaries between materials with unique physical descriptions. The materials used in the simulation may be categorized as insulators, semiconductors, or conductors; each type of material has an associated user-specified model or collection of models that describe its behavior. In particular, specialized multi-coefficient models are provided for semiconductors that describe the fundamental properties, mobility, and recombination processes inherent to that material.
The system of equations solved by DEVICE admits both a steady-state and time-varying result. By enforcing the condition
0
t
p
t
n
in the continuity equations, the carrier density and electrostatic potential can be solved at steady-state. Steady-state simulations can be used to examine the system’s behavior at a fixed operating point, and are also useful when extracting small-signal parameters for a component (e.g. for frequency response analysis). Alternately, by specifying an initial condition for the carrier density and electrostatic potential, the equations can be solved in a sequence of discrete times. The time-dependent behavior of the component can then be used to directly evaluate its large-signal time-domain response or extract large-signal AC parameters.
Boundary conditions are very important in an accurate semiconductor device simulation. Two categories of boundary condition are present in DEVICE: those that relate to the electrostatic potential (Poisson’s equation) and those that relate to the carrier densities (the drift-diffusion equations). Poisson’s equation and the drift-diffusion equations are second-order partial differential equations (PDE), and each requires that the solution be explicitly specified for at least one location. This is known as a Dirichlet boundary condition. For the electrostatic potential, the Dirichlet condition takes the form of a boundary (internal or external) with a fixed voltage specified,
1
)
(
x
V
V
as is typical of an electrical contact. For the carrier densities, the majority carrier concentration is set to its equilibrium value at the interface between a contact and the semiconductor, such that
0
C
n
p
At internal boundaries between two domains that are not contacts, the boundary conditions are determined from the physical properties of the interface. In the case of the electrostatic potential, the electric flux density must be continuous across the boundary in the absence of a surface charge. For the electron and hole densities, boundary conditions between the
semiconductor and adjacent materials may be specified in terms of a surface recombination current density, which will default to zero (no carrier flux across the boundary) for insulators or an infinite recombination velocity (forcing the carrier density to its equilibrium value) for contacts. At the external (open) boundaries of the simulation domain, homogenous Neumann boundary conditions are applied: the electric field normal to the boundary is set to zero as is the surface recombination current density. Physically, this corresponds to an insulating boundary across which no charge can flow.
By convention, the length units in semiconductor models are chosen to be centimeters. This is reflected in the semiconductor device literature, and in the parameter coefficients for the material models. Energies are calculated in electron Volts (eV), where the electron energy E is related to the local electrostatic potential (voltage) as E = -qV. All energies (and voltages) are referenced from the (equilibrium) Fermi level of an electrical contact in the system.
2.5.2 Meshing in DEVICE
DEVICE uses an unstructured, finite-element mesh, like the one shown in the following screenshot. The solution to the system of equations used to determine the physical quantities of interest is estimated from the discrete formulation of those equations. Consequently, it's important to understand that of the fundamental simulation quantities (material properties, geometry information, electrostatic potential, and carrier
concentrations) are calculated at each mesh vertex. A finer mesh (with shorter edge lengths and smaller elements) will better approximate the exact solution to the system of equations, but at a substantial cost. As the mesh features become smaller, the simulation time and memory requirements will increase.
DEVICE provides a number of tools, including the automatic and guided mesh refinement, that allow you to obtain accurate results, while minimizing computational effort.
3
CAD layout editor
The image below shows a typical Lumerical CAD Layout Editor. This tool is used to setup and analyze all simulations, and to run all script files.
In this screenshot, different regions of the CAD in Layout mode are highlighted. They include:
Main title bar Toolbars View ports Object Tree Optimization and Sweeps Script Prompt
The Layout Editor has two modes of operation: Layout mode and Analysis mode. Layout mode is used to setup your simulation. Simulation objects can be added, modified and deleted in this mode. After a simulation runs, the Layout Editor automatically switches to Analysis mode. In analysis mode, it is not possible to edit the simulation objects, since we want the object settings to match the data from the simulation. To edit simulation objects, switch back to layout mode with the button.
3.1
Main title bar
The menus on the main title bar are listed below. If any of the options can be selected using a button on a toolbar, the icon is drawn to the left of the name. Similarly, shortcut keys are located to the right.
File
The file menu includes options to create, save and load simulation files. The Import menu allows users to import structural data stored in GDSII files files.
29 30 36 37 38 38 60
Edit
The edit menu allows users to undo/redo their actions, and to copy/paste/edit object in the simulation.
View
The view menu provides options to control the layout and visibility windows and toolbars.
Setting
This setting menu contains options to change the unit setting within the graphical interface. These option only apply to the GUI. Scripts always use SI units.
Simulation
This menu contains settings for configuring resources and running simulations.
Help
The help menu provides links to local PDF copies of the product documentation and links to the larger set of online documentation, as well as options for checking which version of the software is installed.
3.2
Toolbars
The following sections describe the various toolbars. Toolbars visibility can be controlled in the View - Toolbars menu.
3.2.1 Main
The main toolbar contains buttons to add various Simulation objects, open the Material database and import files, as described below. When available, clicking the arrow to the right of the icon expands a drop-down menu containing related buttons. If one of the related buttons is pressed, it replaces the default button in the toolbar. See the Simulation objects chapter for information about specific objects.
Material Database
This button opens material database window. For more information, see the Material database chapter.
Structures
This button will insert the shown structure primitive into the simulation. Pressing the arrow will show all available primitives.
42
Groups
This button will add an analysis, container or structure group into the simulation. Pressing the arrow will allow selection of which group to add.
Simulation
This button will insert simulation or mesh override regions. Pressing the arrow will allow selection of which simulation object to add.
Import
This button will open a window for importing files from other programs. Pressing the arrow will allow selection of which kind of import.
Doping
This button will insert various doping regions into the simulation. Pressing the arrow will allow selection of which monitor to add.
Generation
This button will insert various generation rate objects into the simulation. Pressing the arrow will allow selection of which monitor to add.
3.2.2 Edit
The edit toolbar contains tools used to copy, delete, or modify settings of simulation objects.. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool. An object must be selected in order to use these tools.
Edit properties (E)
This command opens the edit properties window. See the Simulation objects chapter for information about specific properties for each object.
The properties of multiple structure objects can be edited together by selecting multiple objects prior to entering edit mode. This option is only available for structure objects, not sources or monitors. Any properties which are identical between all of the selected objects results in the common value being displayed in the edit dialog box.
Duplicate (D)
This command makes a duplicate of the currently selected object. The copies that are created are identical to the originals, apart from a one grid cell offset in their x position which allows the user to distinguish between the original and the copy. When multiple objects are selected, all of the selected objects will be copied. When copying sources and monitors, it is important to rename the copies so that each object has a unique name.
Move
The move command allows shifting a single or multiple selected objects by a specified distance in each of the x,y,z dimensions. A pop-up window appears with field entries to specify the shift amount.
Array
The array command allows the user to create an array or arrays of objects. The array edit window that pops up contains several properties :
A1 LATTICE: the distance between adjacent elements in the a1 direction A2 LATTICE: the distance between adjacent elements in the a2 direction
ANGLE BETWEEN A1 AND X-AXIS: the angle (in degrees) between the a1 direction and the x-axis
ANGLE BETWEEN A1 AND A2: the angle (in degrees) between the a1 and the a2 directions.
COLUMNS, ROWS: the number of rows and columns that comprise the array. AZ LATTICE: the distance between adjacent elements in the z direction (valid for 3D simulations only)
LAYERS: the number of elements in the z direction (valid for 3D simulations only) The parameters in the edit window below produce the resulting array shown in the diagram.
Delete (Del)
The delete command removes the currently selected object, or objects, from the simulation.
3.2.3 Mouse mode
The mouse mode allows you to control the behavior of the mouse. Depending on the mode, the user can edit objects, pan or zoom in the view ports or measure the distance from one point to another. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool. Only one mouse mode may be selected at a time.
Select (S)
This function puts the mouse into the select mode. This allows objects to be selected through the view ports (objects may be selected in the objects tree regardless of whether the mouse is in select mode or not).
For reference, the current location of the mouse within the view ports is shown in the field at the bottom right-hand corner of the CAD window (see the image below). The < and > buttons at the right decrease or increase the number of decimal places shown.
Changing aspect ratio settings
A feature available when in the select mode is changing aspect ratio settings. Right click in one of the view windows to see the menu, and then select Change aspect ratio settings.
This function sets the mouse to be in the zoom mode. The default aspect ratio of the XY view and perspective views are locked at 1:1, which means circles always appear round (rather than as ovals). The aspect ratio for the XZ and YZ is not locked. Use the left click to zoom in and the right click to zoom out. To zoom to a particular area, drag diagonally across the desired region. Finally, double clicking either button zooms to extent. To adjust the view, it's easiest to set the XY view first, then adjust the Z view in the XZ or YZ views.
Pan view (P)
The pan view mode allows the user to drag the view in the plane of the view port. In the Perspective window, the pan mode is used to rotate the view.
Scrolling in the view ports
The other method of adjusting the view ports is by using the arrow buttons on your keyboard. Each press of a button results in the view shifting in the direction indicated by the arrow.
Ruler (R)
Once the ruler mode is selected, a distance measurement can be made by pressing the left mouse button and then dragging the mouse. A non-permanent triangle is drawn between the locations where the mouse button was pressed (A) and released (B). The distances are given in the lower left-hand corner of the CAD window (see the image below). The dx and dy fields correspond to the horizontal and vertical distance between A and B, and the AB field corresponds to the length of the hypotenuse.
3.2.4 View
The view toolbar contains tools to zoom to the extents of objects, edit grid settings and view the mesh used for the simulation. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool.
Zoom Extent (X)
Selecting this tool centers and scales the view ports around the selected simulation objects. For instance, pressing zoom extent while a structure is selected arranges the view such that only the structure are shown, while other simulation objects may appear outside the extent of the view. When no objects are selected, pressing this button zooms to the the largest object in the model. This function is also accessed via double-clicking either the left- or right-hand mouse button while in zoom mode.
Drawing Grid
Clicking on the drawing grid brings up a window in which the following options can be edited:
SHOW GRID: when checked, the grid will be plotted in the drawing palette
SNAP TO GRID: when checked, objects can only be moved so that their centers align with intersection points of the grid
A1 LATTICE: the distance between grid lines in the a1 direction A2 LATTICE: the distance between grid lines in the a2 direction AZ LATTICED: the distance between grid lines in the z direction
ANGLE BETWEEN A1 AND X-AXIS: the angle (in degrees) between the a1 direction and the x-axis
ANGLE BETWEEN A1 AND A2: the angle (in degrees) between the a1 and the a2 directions
Recalculate simulation mesh (F5)
Mesh generation is too computationally intensive to be done constantly as the simulation setup is modified. If you wish to see the current mesh, use this option to update and recalculate the mesh. The mesh is always recalculated before running a simulation.
3.2.5 Simulation
The simulation tools are:
Resources
Opens the resource configuration manager. This window can add/remove and enable/ disable computational resources. It also contains a useful configuration test tool to check the resource setup.
Run
Run the current simulation. For more information on how to run simulation, see Running a simulation.
Run scripts
This function will allow the user to run a Lumerical script file (*.lsf) to perform automated commands such as plotting and saving data. This button is located in the CAD environment twice if the script editor is open: once in the simulation toolbar and once at the top of the script editor. Pressing the button on the toolbar brings up an open file dialog. Pressing the button in the script editor runs the script that is selected in the editor window.
Switch to layout editor
This function returns the simulation environment from analysis mode back to the layout editor mode. If you switch to layout editor and then save the file, the data from the simulation will be overwritten and lost.
3.2.6 Search bar
The search toolbar can be used to quickly search for topics in the online product
documentation knowledge base. This will bring up the search results in a new tab in your default browser.
Online help toolbar
Search the online knowledge base for the specified term. Requires internet connection. If an internet connection is not available, some product documentation is available in the Help - Reference Guide menu.
3.3
View ports
The view ports show a graphical representation of the simulation from an XY, XZ, YZ and 3D perspective view.
Depending on the current mouse mode, the mouse pointer will either have the shape of an arrow (select), a hand (pan), a magnifying glass (zoom) or a ruler (measurement). You can toggle between these options with the mouse mode toolbar. When objects are selected, the vertices are drawn with red squares (also, the object will be highlighted in the Object tree. It is possible to copy and paste selected objects between different CAD windows using the standard Ctrl+C and Ctrl+V shortcut keys.
3.4
Object Tree
As previously discussed, a simulation requires that the user define a set of objects, simulation region, sources and monitors. As a complete setup may contain a large number of objects, the object tree was designed to allow for organization and easy selection. All simulation objects are within the group, model, which represents the current simulation. Within 'model', objects are listed as they are inserted by the user. Press F2 or double-click to change the name.
To move the objects up and down the tree as well as into groups, we use the orange arrows at the top of the window. The up and down arrows shift the objects relative to each other, while the left and right arrows move them out of and into groups. To add groups, we use the button called groups in the main toolbar. Structure groups can only contain structures and likewise, analysis groups can only contain monitors. See the online user guide section for more information and examples about Structure groups and Analysis groups. The third group, "Containers" act like folders and can hold any type of object. In the image above, the 'Sources/Monitors' container group has both individual sources and monitors as well as an analysis group.
Note that there are buttons with green crosses at the top of the objects tree. These buttons can be used to hide or display certain types of objects. When objects are selected, they are highlighted blue in the objects tree and the vertices are marked with red squares in the view ports. Objects can always be selected by left-clicking on their name in the object tree or edited by right-clicking. Using the tree is the preferred method of selection especially in complicated simulation setups with many overlapping elements. In the image above, the power monitor, above, is selected.
3.4.1 Enable/Disable Simulation Object
User can enable/disable simulation objects by right-clicking on each and selecting "Enable/Disable". Disabled simulation objects will remain in the object tree (and can be
re-enabled), they will have no effect on the simulation.
See also
setnamed , set
3.5
Results View
See the Results View section of the Reference Guide for more information.
3.6
Optimization and Sweeps
See the Optimization and parameter sweeps section of the Reference Guide for more information.
3.7
Script Prompt and Script Editor
The scripting language is useful for setting up complex structures and advanced data analysis. See the Scripting chapter for a list of all the script commands, as well as examples on how to use them.
By default the script editor is located on the right hand side of the view ports and shares the same frame as the analysis window. When both windows are open, it is possible to toggle between the two through tabs located at the right side of the frame. The script file editor contains buttons to create, open, save and run script files. When multiple script files are open, pressing on the run script button runs the one in the forefront. Note that when entering scripting code in the script file editor, each command must be followed with a semicolon.
When running a script file in the a different directory using the GUI, the current working directory is unchanged, but the directory of the script file is added to the scripting path. This way, any files called by that script will be found. However, the search order is the current directory first, then any other folders in the path, and then the directory of the script file.
232 231
93
By default the script prompt is located at the bottom of the CAD window. Script commands are executed as soon as the ENTER button is pressed on the command line. If a semicolon is missing at the end of the command line, it is automatically inserted it for you. Multiple lines can be pasted into the script prompt, and will run as in the script editor. In this case though, only the last semicolon can be neglected.
3.8
Script Workspace and Script Favorites
See the Script Workspace and Script Favorites section of the Reference Guide for more information.
3.9
Changing the CAD layout
There are pre-defined CAD layouts that can be accessed through main title toolbar. Change between the default layouts by selecting the drop-down menu VIEW->SET DEFAULT LAYOUT, and choosing one of them. In addition, have control over hiding and docking location of the the windows and toolbars. The current layout is saved when CAD closes so the next time the program is opened, your previous layout will be used.
Hiding/showing windows and toolbars
There are two methods to hide or show windows and toolbars 1) In the main title toolbar select >WINDOWS or VIEW->TOOLBARS. The visible windows/ toolbars have a check mark next to their name; the hidden ones do not. 2) By clicking the right button anywhere on the main title bar or the toolbar, the following pop up menu will show up. As before, check marks indicate when windows and toolbars are visible.
Moving and undocking windows
Windows can be undocked by double clicking the name with the left mouse button. This is
particularly useful when you want to make the script file editor window larger. Non-view-port windows can be docked on top of each other either to the right or to the left of the view ports. If they are placed on top of each other, tabs on the sides allow toggling between them.
Tip: To reposition an undock ed window on Linux, hold down the Alt k ey before attempting to move the window.
Moving toolbars
To move a toolbar, hover the mouse over the top of the toolbar, where the dotted line is. When the mouse cursor becomes a four-headed arrow, press the left mouse button and
drag-and-drop the toolbar. If you reach a region where you can place a toolbar, the CAD environment makes room for the toolbar indicated by a blue void.