3.1 Overview
3.2 Mixed-Mode Simulations
3.3 Transient Sweep
3.4 Small-Signal AC Analysis
3.5 Compact Models
3.6 PrimeSim HSPICE Netlists
3.7 Implicit Contact Resistance in Mixed Mode
3.8 Harmonic Balance Simulations
Section 2. Carrier Transport Models discusses the use of Sentaurus Device as a single-device simulator. Sentaurus Device also supports mixed-mode simulations on small circuits in which multiple circuit elements, including physical devices, compact model devices, and lumped elements, can exist.
For mixed-mode simulations, the command file of Sentaurus Device must include not only the definitions of each individual element in the circuit, but also a netlist showing the connectivity between the elements. As a result, additional sections, for example, the System section, are introduced in the command file. In a mixed-mode simulation, the Solve section also can be specified to solve either part of the system or the entire system.
Example applications include simulations of ring oscillators and single event upset of SRAM cells consisting of both compact model transistors and physical devices, and analyses of the performance of RF amplifiers with lumped elements and external parasitics.
The command files of Sentaurus Device featured in this section are contained in the Sentaurus Workbench project Applications_Library/GettingStarted/sdevice/CMOSInverter.
To work with the project, start Sentaurus Workbench and copy the CMOSInverter project to a local directory. The target directory must reside under the Sentaurus Workbench working directory to which the environment variable $STDB points. For details about this environment variable, see Section 1.2 Starting Sentaurus Workbench.
The Sentaurus Device primary file sdevice_des.cmd within this project is used to simulate the voltage transfer characteristics (VTC) of a CMOS inverter consisting of both NMOS and PMOS devices. A second Sentaurus Device primary file sdevice1_des.cmd is used to simulate the inverter switching behavior.
Click to view the primary files vct_des.cmd and switching_des.cmd.
This section defines a physical device that is later used to define a circuit element:
Device NMOS { Electrode{ { Name="source" Voltage=0.0 } { Name="drain" Voltage=0.0 } { Name="gate" Voltage=0.0 } { Name="substrate" Voltage=0.0 } } File{ Grid = "@tdr|nmos@" Plot = "@tdrdat@" Current = "@plot@" Param = "@parameter@" } Physics{ AreaFactor=5 Mobility( DopingDep HighFieldSaturation Enormal ) EffectiveIntrinsicDensity( oldSlotboom ) } }
Each Device section contains an Electrode, a File, and a Physics section. A unique identifier is required for each Device section, for example, NMOS and PMOS.
The AreaFactor keyword defines the width of the devices. By default in 2D simulations, Sentaurus Device assumes that the width of the simulated device is 1 μm such that the simulated current has the unit of A/μm.
In mixed mode, however, when currents from different devices interact, they must be scaled according to the actual device widths. In this example, the actual device width is set to 5 μm for the NMOS and 10 μm for the PMOS.
In the File section, the same root names for the output files, represented by the Sentaurus Workbench parameters @tdrdat@ and @plot@, are specified in both NMOS and PMOS device definitions. The conflict will be resolved when the instances of the devices are defined in the circuit. Sentaurus Device automatically adds the name of the instance in front of the given root name to make the saved file names unique.
File{ Output = "@log@" }
In single-device simulations, the File section specifies the input and output files of the simulation (see Section 1.2.1 File Section).
In mixed-mode simulations with multiple devices, the File section can be placed either inside a Device definition (for example, the NMOS or PMOS definition) or outside of any Device definition. The (output) files specified in the global File section are used by all Device sections.
In this example, the Output file specified in the global File section, represented by the Sentaurus Workbench parameter @log@, is used by both the NMOS and PMOS definitions.
Plot{ eDensity hDensity eCurrent hCurrent ElectricField eEnormal hEnormal eQuasiFermi hQuasiFermi Potential Doping SpaceCharge SRH Auger ImpactIonization eMobility hMobility DonorConcentration AcceptorConcentration Doping eVelocity hVelocity }
Like the global File section, the globally defined Plot section is used by all Device definitions. In this example, a single (global) Plot section is used for both the NMOS and PMOS definitions.
To define a Plot section that is valid only for a specific Device definition, place it inside the corresponding definition.
System{ Vsource_pset vdd (dd 0) { dc = 0.0 } Vsource_pset vin (in 0) { dc = 0.0 } NMOS nmos1 ( "source"=0 "drain"=out "gate"=in "substrate"=0 ) PMOS pmos1 ( "source"=dd "drain"=out "gate"=in "substrate"=dd ) Capacitor_pset cout ( out 0 ){ capacitance = 3e-14 } Plot "n@node@_sys_des.plt" (time() v(in) v(out) i(nmos1,out) i(pmos1,out) i(cout,out) ) }
The System section is necessary only for mixed-mode simulations with multiple elements. Both the circuit elements and their mutual connections (or the netlist) are defined in the System section.
The keyword Vsource_pset represents a compact model voltage source (defined in the Sentaurus Device built-in models). The model is used here to define the two voltage sources in the circuit, that is, vdd and vin. Both voltage sources have two terminals. The vdd is connected to nodes dd and 0, which is the ground. The vin is connected to nodes in and 0.
The two physical device definitions, NMOS and PMOS, defined in the previous Device sections are used here to define the two circuit elements, nmos1 and pmos1, respectively. The same device definition can be repeated to define multiple circuit elements, all having identical physical properties but connected to different nodes of the circuit. For example, the NMOS definition can be used to define elements such as nmos1, nmos2, and nmos3.
The electrodes of the physical device defined in the Electrode section of the Device section are all connected to a node of the circuit, for example, "source"=0 "drain"=out.
The keyword Capacitor_pset represents a compact model capacitor, which is used in this example to define a lumped capacitor load, cout, in the circuit.
The Plot statement inside the System section allows voltages and currents at selected nodes of the circuit to be recorded. To record voltage, specify the node name. To record current, specify both the element and the node name through which the current flows.
Math{ Extrapolate RelErrControl Digits=4 Notdamped=50 Iterations=12 Transient=BE Method=Blocked SubMethod=ParDiSo }
In mixed-mode simulations, the Blocked linear solver is recommended to solve the circuit linear system equations. In contrast, to solve the large sparse linear equation system on a numerically simulated device level, the ParDiSo linear solver is used. For transient simulations, the backward Euler method is activated using Transient=BE.
Solve{ NewCurrentPrefix="init" Coupled(Iterations=100){ Poisson } Coupled{ Poisson Electron Hole Contact Circuit } Quasistationary( InitialStep=1e-3 Increment=1.35 MinStep=1e-5 MaxStep=0.05 Goal{ Parameter=vdd.dc Voltage= 1.5 } ){ Coupled{ nmos1.poisson nmos1.electron nmos1.hole nmos1.contact pmos1.poisson pmos1.electron pmos1.hole pmos1.contact circuit } } NewCurrentPrefix="" Quasistationary( InitialStep=1e-3 Increment=1.35 MinStep=1e-5 MaxStep=0.01 Goal{ Parameter=vin.dc Voltage= 1.5 } ){ Coupled{ nmos1.poisson nmos1.electron nmos1.hole nmos1.contact pmos1.poisson pmos1.electron pmos1.hole pmos1.contact circuit } } }
In mixed-mode simulations, other sets of equations must be solved in addition to the equations solved for single devices, for example, the Poisson equation and the carrier continuity equations. The pair of statements in the Coupled statement (Contact and Circuit) specifies explicitly the set of equations to be included in the solution.
In mixed-mode simulations, the inclusion is performed by default, unless the Poisson equation is the only equation to be solved.
In the Goal statement of the two Quasistationary commands, the ramping targets are vdd.dc and vin.dc, which are model parameters defining the voltages of the corresponding voltage sources. Since these two voltage sources are connected to nodes in the circuit, the equivalent of these statements ramps up the nodal voltages.
In the last two Coupled statements, the device names (nmos1 and pmos1) restrict the set of equations to be applied to a specific device in the simulation. In this example, the electron continuity equation is solved for the nmos1 device, and the hole continuity equation is solved only for the pmos1 device.
The two Quasistationary commands first switch on the power-supply voltage source vdd (from 0 V to 1.5 V) and then ramp up the input-signal voltage source vin, which also increases from 0 V to 1.5 V.
In Sentaurus Device, transient simulations are performed using the Transient command in the Solve section. The command can be used in both single-device simulations and mixed-mode circuit-device simulations.
The command file to simulate the inverter transient switching behavior, featured in this section, is available within the same Sentaurus Workbench project Applications_Library/GettingStarted/sdevice/CMOSInverter. The transient simulation is performed by the second Sentaurus Device tool instance labeled sdevice1.
Most of the file for the transient simulation is discussed in Section 3.1 Overview and Section 3.2 Mixed-Mode Simulations, therefore, it is not repeated here. Only sections that differ from the VTC step are discussed here.
System{ Vsource_pset vdd (dd 0) { dc = 0.0 } Vsource_pset vin (in 0) { pulse = (0.0 # dc 1.5 # amplitude 10e-12 # td 10e-12 # tr 10e-12 # tf 60e-12 # ton 140e-12) # period } NMOS nmos1 ( "source"=0 "drain"=out "gate"=in "substrate"=0 ) PMOS pmos1 ( "source"=dd "drain"=out "gate"=in "substrate"=dd ) Capacitor_pset cout ( out 0 ){ capacitance = 3e-14 } Plot "n@node@_sys_des.plt" (time() v(in) v(out) i(nmos1,out) i(pmos1,out) i(cout,out) ) }
In the previous example (see Section 3.2 Mixed-Mode Simulations), the input signal vin was defined as a static voltage source in the System section (see Section 3.2.4 System Section) whose initial value was 0.0 V and that was then ramped up to 1.5 V using the Quasistationary command in the Solve section (see Section 3.2.6 Solve Section).
In this example, vin is defined as a time-dependent voltage source that generates a pulse train, as seen in Figure 3.
Other time-dependent signals, such as sinusoids, can be defined as well.
Solve{ NewCurrentPrefix="init_" Coupled(Iterations=100){ Poisson } Coupled{ Poisson Electron Hole Contact Circuit } Quasistationary( InitialStep=1e-3 Increment=1.35 MinStep=1e-5 MaxStep=0.05 Goal{ Parameter=vdd.dc Voltage= 1.5 } ){ Coupled{ nmos1.poisson nmos1.electron nmos1.hole nmos1.contact pmos1.poisson pmos1.electron pmos1.hole pmos1.contact circuit } } NewCurrentPrefix="" Transient ( InitialTime=0 FinalTime=200e-12 InitialStep=1e-12 Increment=1.3 MaxStep=5e-12 MinStep=1e-15 TurningPoints ( ( Condition ( Time ( 1e-11 ; 8e-11 ; 1.5e-10 ) ) Value= 3.0e-13 ) ( Condition ( Time ( Range= ( 1e-11 2e-11 ) ; Range= ( 8e-11 9e-11 ) ; Range= ( 1.5e-10 1.6e-10 ) ) ) Value= 1.0e-12 ) ) ){ Coupled{ nmos1.poisson nmos1.electron nmos1.hole nmos1.contact pmos1.poisson pmos1.electron pmos1.hole pmos1.contact circuit } } }
The target of a transient sweep is FinalTime. Like the parameters specified in the Quasistationary command, parameters specified in the Transient command, for example, InitialTime and FinalTime, control the sweeping of the time and check the convergence of the solution. The default unit of these parameters is second.
Unlike the Quasistationary command, no Goal statement is necessary in a Transient sweep.
The TurningPoints statement is used to improve the solution accuracy when the input signal changes with a steep gradient. Here, the first condition initiates the computation of the transient for the time points where the rises and falls of the input signal start and limits the time step to the value given by Value. The second condition limits the advancing time step during the entire rise and fall ranges of the input signal. Here, Value indicates the maximum time step achievable within the specified interval.
In a small-signal analysis simulation, Sentaurus Device computes the Y-matrix that describes how the currents in a circuit would react if the applied voltages at different contact nodes of the circuit receive a small perturbation \(δv\):
\[ δi = Y · δv = ( A + j · ω · C ) · δv \]
The Y-matrix measures the small current changes \(δi\), in response to a small voltage perturbation \(δv\).
The complex Y-matrix can be split into two parts. The real part \(A\) is the conductance matrix that measures the in-phase response of the current with the voltage. The imaginary part \(C\) is the capacitance matrix that measures the out-phase response. The symbol \(j\) denotes the imaginary unit and \(ω\) denotes the frequency of the small-signal change.
For a typical MOS device with four terminals, gate (g), drain (d), source (s), and body (b), the \(A\) and \(C\) matrices have the following elements:
\[ [\table i_g; i_d; i_s; i_b] = ( [\table a_g_g, a_g_d, a_g_s, a_g_b; a_d_g, a_d_d, a_d_s, a_d_b ; a_s_g, a_s_d, a_s_s, a_s_b; a_b_g, a_b_d, a_b_s, a_b_b ] + j · ω · [\table c_g_g, c_g_d, c_g_s, c_g_b; c_d_g, c_d_d, c_d_s, c_d_b ; c_s_g, c_s_d, c_s_s, c_s_b; c_b_g, c_b_d, c_b_s, c_b_b ]) · [\table v_g; v_d; v_s; v_b] \]
For example, the \(a_d_g\) element represents the in-phase drain-current response to a small gate-voltage change, which is by definition the transconductance of the MOS device. Similarly, \(c_b_g\) represents the out-phase body-current response to a small change in gate voltage. This quantity corresponds to the gate-to-body capacitance. In the .plt file, \(a_d_g\) corresponds to a(d,g).
Sentaurus Device performs small-signal analyses in the mixed-mode environment (see Section 3.2 Mixed-Mode Simulations), which makes it possible to include, for example, external parasitics or matching networks in the analyses.
The small-signal analysis command files of Sentaurus Device featured in this section are used in the Sentaurus Workbench project Applications_Library/GettingStarted/sdevice/AC.
To work with the project, start Sentaurus Workbench and copy the AC project to a local directory. The target directory must reside under the Sentaurus Workbench working directory to which the environment variable $STDB points. For details about this environment variable, see Section 1.2 Starting Sentaurus Workbench.
The Sentaurus Device primary file AC_des.cmd from this project includes commands to conduct a small-signal AC analysis on a MOSFET device.
Click to view the primary file AC_des.cmd.
Device "MOS" { ... }
Since small-signal analyses are performed in the mixed-mode environment, one or more Device sections are required to define the physical devices.
File { Output = "@log@" ACExtract = "@acplot@" }
The file name for the AC analysis output is declared in the global File section. If specified by the special Sentaurus Workbench parameter @acplot@ as shown here, it will be expanded by the preprocessor to n2_ac_des.plt, where n2 is the actual Sentaurus Workbench node number.
System { *-Physical devices: MOS nmos1 ( "source"=s "drain"=d "gate"=g "substrate"=b ) *-Lumped elements: Vsource_pset vs (s 0) { dc = 0.0 } Vsource_pset vg (g 0) { dc = 0.0 } Vsource_pset vb (b 0) { dc = 0.0 } Vsource_pset vd (d 0) { dc = 0.0 } }
For small-signal analysis simulations, an attached voltage source is required for each terminal if the terminal is to be included in the AC analysis.
Solve { NewCurrentPrefix="init_" Coupled(Iterations=100){ Poisson } Coupled{ Poisson Electron Hole } Quasistationary ( InitialStep=0.1 Increment=1.3 MaxStep=0.5 Minstep=1.e-5 Goal { Parameter=vg.dc Voltage=-3.0 } ){ Coupled { Poisson Electron Hole } } NewCurrentPrefix="" Quasistationary ( InitialStep=0.01 Increment=1.3 MaxStep=0.05 Minstep=1.e-5 Goal { Parameter=vg.dc Voltage=3.0 } ){ ACCoupled ( StartFrequency=1e6 EndFrequency=1e6 NumberOfPoints=1 Decade Node(s d g b) Exclude(vs vd vg vb) ACCompute (Time = (Range = (0 1) Intervals = 40)) ){ Poisson Electron Hole } } }
The initial Quasistationary command biases the device to the starting gate voltage for the C–V sweep.
The ACCoupled statement activates the small-signal analysis during the next Quasistationary sweep.
In this example, the AC analysis is performed at a single frequency (1 MHz) only. For a frequency sweep, the start and end frequencies as well as the steps of frequencies must be defined. The keyword Decade or Linear determines whether the frequency points are distributed equidistantly on a logarithmic or linear scale, respectively.
The node list in the Node statement declares which nodes must be included in the Y-matrix calculation.
All voltage sources attached to nodes mentioned in the Node list must be excluded from the AC analysis, since a voltage source represents a short circuit for an AC signal. To exclude a given voltage source, include it in the Exclude statement.
The (optional) ACCompute statement enforces that the AC analysis is performed on a set of predefined bias points. However, Sentaurus Device can compute intermediate steps to ensure convergence. For large structures and simulations with slow convergence, ACCompute can help to speed up the simulation considerably by suppressing the AC analysis at intermediate points.
You can set up a small-signal AC analysis in a simplified way without specifying a circuit explicitly. The keyword ImplicitACSystem in the Math section defines the circuit implicitly and lets you perform a small-signal analysis without the Device and System sections. The ACCoupled statement must be defined as in Section 3.4.4 Solve Section. The simulation is performed such that all voltage sources are excluded from the AC analysis.
The implicitly used circuit nodes are named automatically and are used to address the output data. The total gate capacitance in the .plt file is named, for example, c(N_gate, N_gate).
The second Sentaurus Device tool instance in the project Applications_Library/GettingStarted/sdevice/AC uses ImplicitACSystem. The second Sentaurus Visual tool instance uses the automatically named output quantities to plot a C–V curve.
In Sentaurus Device mixed-mode simulations, several compact models, typically used in circuit simulations, are available. Such models range from basic elements such as voltage and current sources to sophisticated compact models for power and submicron device simulation. This section demonstrates the use of such models.
A project similar to the inverter example in Section 3.3 Transient Sweep is given in the directory Applications_Library/GettingStarted/sdevice/inverter_compact_model. Therein, the NMOS and PMOS devices of the inverter are simulated using the BSIM3 model.
Model cards contain parameter sets, mostly in SPICE format, for specific devices such as NMOS and PMOS. The spice2sdevice utility can convert simple model cards, as well as subcircuit and SPICE circuit files, into files compatible with Sentaurus Device.
In this example, the translation is accomplished within Sentaurus Workbench using a shell tool instance labeled SPtoSD.
Click to view the command file SPtoSD_csh.cmd.
The command:
spice2sdevice -m -o @pwd@/models/models.scf @pwd@/MODELS.cir
translates the BSIM3 parameter sets of the Synopsys PrimeSim™ HSPICE® model cards contained in the file MODELS.cir in the project directory into Sentaurus Device parameter sets, and writes the result into the file models.scf in the directory models.
Click to view the command file MODELS.cir and the file models.scf.
The option -m indicates that only model cards are contained in the file to be translated. The resulting Sentaurus Device parameter sets can be inspected in models.scf. The command-line options for spice2sdevice are:
-b Use Berkeley SPICE models instead of PrimeSim HSPICE. (applies only to MOSFETs level 1, 2, and 3). -c Translate a SPICE circuit file. -m Translate a SPICE model file. -o <filename> Store the Sentaurus Device circuit file in <filename>. -d Print additional debug information. -v Show version information. -h Show this help message.
In the global File section of the Sentaurus Device command file, a directory can be specified as SpicePath. This directory is scanned by Sentaurus Device for files with the extension .scf. Such files can contain circuit parts to be used in the System section of the command file or user-defined compact model parameter sets from model cards:
File{ Output = "@log@" SpicePath= "@pwd@/models" }
The project directory, represented by the Sentaurus Workbench variable @pwd@, contains a subdirectory models with the parameter file models.scf. As previously discussed, this file is generated with the spice2sdevice utility from the PrimeSim HSPICE model card MODELS.cir. Alternatively, a model parameter set can be provided manually, for example:
PSET nmos_bsim3 DEVICE BSIM3 PARAMETERS a0 = 0.3496967 a1 = 0.02778747 a2 = 0.9 ags = 0.1 at = 22400 b0 = 0.546 ...}
In the first line, you define a name for the model (here, nmos_bsim3). The second line states that the model is based on the BSIM3 model. Next is a list of the model parameters with relative values. The number of parameters can be several hundreds for a complete model.
The System section of the Sentaurus Device command file is:
System{ Vsource_pset vdd (dd 0) { dc = 0.0 } Vsource_pset vin (in 0) { dc = 0.0 } Vsource_pset vss (ss 0) { dc = 0.0 } nmos_bsim3 mosn1 ( out in ss ss ) { l=0.30u w=@wnmos@ } pmos_bsim3 mosp1 ( out in dd dd ) { l=0.25u w=@wpmos@ } Capacitor_pset cout ( out 0 ) { capacitance = 20e-15 } Plot "n@node@_sys_des.plt" (time() v(dd) v(in) v(out) i(mosn1,out) i(mosp1,out) i(cout,out) ) }
It is similar to that in Section 3.2.4 System Section. The only difference here is that instances of the compact models defined in the file model.scf replace the corresponding TCAD device instances. For the NMOS device, the instance mosn1 of an nmos_bsim3 model is specified and connected to appropriate contact nodes. The ordering of the contacts corresponds to (drain gate source sub) in the BSIM3 model. Similarly, the PMOS device of the inverter is given by the instance mosp1 of a pmos_bsim3 model.
The compact model parameters specified in the file model.scf are valid for all instances of that model. Parameters specific to an individual instance of the model can be defined in braces – {} – directly in the System section of the command file.
In this example, the gate length l and the device width w are specified for both the NMOS mosn1 and the PMOS mosp1.
For a complete list of available models and their instance parameters, refer to the Compact Models User Guide. Further model-specific information can be found in the PrimeSim HSPICE documentation.
The results for the VTC as well as the switching behavior of the MOS inverter are shown in Figure 5 and Figure 6, respectively.
The model parameters used are for demonstration purposes only.
In Sentaurus Device mixed-mode simulations, PrimeSim HSPICE netlists are accepted for a subset of the PrimeSim HSPICE language. Such netlists must be provided in a separate file and are referenced in the System section of a mixed-mode simulation.
A corresponding demonstration example of a ring oscillator is available in the Applications_Library/GettingStarted/sdevice/ring_oscillator directory.
The System section of the Sentaurus Device command file osci_des.cmd for this ring oscillator reads:
System{ Netlist = "@pwd@/stages.cir" nmos "x1.m1" ( "source"=gnd "drain"=2 "gate"=1 "substrate"=gnd ) { Physics {AreaFactor= 0.2} } pmos "x1.m2" ( "source"=nvd "drain"=2 "gate"=1 "substrate"=nvd ) { Physics {AreaFactor= 0.3} } Capacitor_pset C1 ( 2 gnd ){ capacitance = 1e-15 } Vsource_pset vdd (nvd gnd) { dc =0 } initialize ( 1=@<vdd/2>@ 2=@<vdd/2>@ 3=@<vdd/2>@ 4=@<vdd/2>@ 5=@<vdd/2>@ ) Plot "n@node@_sys_des.plt" (time() v(nvd) v(1) v(2) v(3) v(4) v(5) i(vdd,nvd) i("x1.m1",2) i("x1.m2",2) i("x2.m1",3) i("x2.m2",3) i("x3.m1",4) i("x3.m2",4) i("x4.m1",5) i("x4.m2",5) i("x5.m1",1) i("x5.m2",1) ) set(gnd=0) }
The corresponding PrimeSim HSPICE netlist stages.cir, referenced in the System section by:
System{ Netlist = "@pwd@/stages.cir"
... }
describes the last four stages of the ring oscillator. The NMOS and PMOS of the first stage are simulated by the drift-diffusion model for the physical devices x1.m1 and x1.m2. They are defined in the corresponding Device sections of the command file as usual. The netlist stages.cir contains the following elements:
.TITLE 'Five Stage Ring Oscillator' .MODEL nMOS_L54 NMOS Level=54 + version = 4.6 + vth0=0.22 .MODEL pMOS_L54 PMOS Level=54 + version = 4.5 + vth0=-0.22 .GLOBAL gnd .PARAM L=130n WP=150n WN=100n .SUBCKT INVERTER IN OUT DD SS * Drain Gate Source SubStrate Model L W M1 OUT IN DD DD pMOS_L54 L=L W='2*WP' M2 OUT IN SS SS nMOS_L54 L=L W='2*WN' C1 OUT gnd 1f .ENDS INVERTER *X1 defined with physical devices in System section X2 2 3 nvd gnd INVERTER X3 3 4 nvd gnd INVERTER X4 4 5 nvd gnd INVERTER X5 5 1 nvd gnd INVERTER .END
The netlist starts with a title line and ends with the .END statement. Everything following .END is ignored.
The .GLOBAL statement specifies the node names (here, gnd) globally available across all subcircuits.
The .MODEL statements define the SPICE model specifications for the devices nMOS_L54 and pMOS_L54, which are defined to be the PrimeSim HSPICE Level 54 model along with some explicitly set model parameters. The corresponding settings for NMOS and PMOS are shown here (the plus sign is the line continuation character).
PrimeSim HSPICE parameters are names associated with a value. They are specified using the .PARAM statement. Numeric and string parameters are supported.
The following statement specifies values for L, WP, and WN:
.PARAM L=130n WP=150n WN=100n
The values can be specified in decimal form or together with scale factors such as n for 10–9 (nano). For a list of scale factors, refer to the Sentaurus™ Device User Guide.
Subcircuits are typically used for reusable cells. Their general syntax is:
.SUBCKT name n1 n2 ... [param1= ...] {param2= ...] ... .ENDS
Here, a stage of the ring oscillator containing an inverter and a delay capacitance is defined as subcircuit INVERTER:
.SUBCKT INVERTER IN OUT DD SS * Drain Gate Source SubStrate Model L W M1 OUT IN DD DD pMOS_L54 L=L W='2*WP' M2 OUT IN SS SS nMOS_L54 L=L W='2*WN' C1 OUT gnd 1f .ENDS INVERTER
As exemplified for the width W of the MOS devices by '2*WP' and '2*WN', simple arithmetic operations can be performed in the PrimeSim HSPICE netlist. For a complete set of available arithmetic expressions and functions, refer to the Sentaurus™ Device User Guide.
The remaining elements in the System section of the MixedMode command file are a standard voltage source vdd together with various node initialization voltages and a Plot statement. Therein, element names contained in a subcircuit such as "x3.m1" are referenced by combining the subcircuit name (x3) and the device name (m1). The combined name must be used within double quotation marks.
For the Sentaurus Device simulation, the PrimeSim HSPICE netlist of the System section is translated internally by the spice2sdevice utility, and the resulting elements in Sentaurus Device syntax are substituted for the PrimeSim HSPICE netlist. These elements can be checked in the log file of the Sentaurus Device simulation.
Finally, in the Solve section, the DC supply voltage is ramped to 2 V (represented by the Sentaurus Workbench parameter @vdd@), followed by a transient to establish oscillations:
Solve{ NewCurrentPrefix="init_" Coupled { Poisson circuit } Quasistationary ( InitialStep= 1e-2 Increment= 1.41 MinStep= 1e-7 MaxStep= 0.2 Goal { parameter= vdd.dc Voltage= @vdd@ } ){ Coupled { Poisson Electron Hole circuit} } NewCurrentPrefix="" Transient( InitialTime=0.0 FinalTime= 1e-9 InitialStep=5e-13 Increment=1.35 MinStep=1e-13 MaxStep=2e-12 ){ Coupled{ poisson electron hole circuit } } System("rm init_*.plt") }
Starting with the transient simulation, the limitations for the initialized node voltages are removed, and the system can evolve freely. Figure 8 shows the resulting waveforms.
You can see that, after a short transient, the feedback loop starts to stabilize and the system begins to oscillate periodically.
As an alternative to the specification in the System section, you can declare physical devices in the PrimeSim HSPICE netlist using the statement .SDEVICE device_name drain gate source bulk, and use instances of it with subcircuit commands such as x1 d g s b device_name.
However, in contrast to the standard specification of physical devices in the System section shown here, you cannot use instance-specific Physics settings, such as Areafactor, for the NMOS x1.m1 for physical devices instanced in the PrimeSim HSPICE netlist.
System{ Netlist = "@pwd@/stages.cir" nmos "x1.m1" ( "source"=gnd "drain"=2 "gate"=1 "substrate"=gnd ) { Physics {AreaFactor= 0.2} }
... }
For a description of the supported subsets of PrimeSim HSPICE specifications and models, refer to the Sentaurus™ Device User Guide.
To create a small voltage differential between the TCAD device contact and the circuit node to which it is connected, Sentaurus Device adds a very small resistor between the contact and the node. By default, the value of this resistor is 1 mΩ, but it can be adjusted by using:
Math { MixedModeContactResistance=<float> }
The value can be any positive number. If the value is set to zero (default), then the internal 1 mΩ resistor is used.
In the example located in the directory Applications_Library/GettingStarted/sdevice/MixedModeContactResistance, a silicon resistor with an internal resistance of 10 Ωμm2 is defined. In experiment 1 of the project, that is, for a device with a 1 μm2 area, the effective resistance computed from I–V curves in single device mode is 10 Ω (Rsil), as expected. In mixed mode, it can be observed that there are two 1 mΩ additional resistors at two contacts (Rext).
Having this resistor gives better convergence of device simulations, as there is some voltage difference between the TCAD device contacts and the connected node. Therefore, it is good to have such a small resistor. However, when an areafactor is used, the resistor value might become too small. You can observe that in experiment 3 of the project, where areafactor=1e4 is used, the added contact resistance is only 1e-7 Ω, which might lead to convergence issues. This issue would not occur if the actual device area was set to 1e4, instead of using areafactor. You can observe that the extra resistor is still 1 mΩ in experiment 5.
The way to correct that is to use MixedModeContactResistance=1e-3. You can observe that for both experiments 4 and 6, the extra resistor is 1 mΩ, giving consistent results whether areafactor is used or the actual device area is increased.
Any resistor value defined in the Electrode section overrides the value specifed by MixedModeContactResistance.
Sentaurus Device supports harmonic balance (HB) analysis for mixed-mode simulations. HB analysis is a frequency-domain method that solves periodic time-dependent problems. As such, it is computationally more efficient for problems with time constants that differ by orders of magnitude. Moreover, the periodic excitation is not restricted to infinitesimally small amplitudes as assumed for small-signal AC analysis (see Section 3.4 Small-Signal AC Analysis).
Different modes of HB analysis are available:
The corresponding demonstration examples for these modes are available in the Applications_Library/GettingStarted/sdevice/HarmonicBalance_pn project directory.
Click to view the command files for the SDFT, MDFT one-tone, and MDFT two-tone simulations.
Harmonic balance is not supported for traps or ferroelectrics.
The SDFT mode is the default mode. Using this mode, the mixed-mode circuit can contain the standard SPICE and compact model interface (CMI) models. No special Math settings are required for this mode.
As an option, the logarithm of the carrier density can be used as a solution variable. This is beneficial for convergence in some HB simulations in the SDFT mode and MDFT mode.
The HBPlotFilePerNewton option requests to save HB .plt files for each converged nonlinear solve. This is needed to avoid issues with the subsequent Sentaurus Visual scripts.
The -NewHBFileNames option protects from saving HB results in the new unified format.
Math { HBPlotFilePerNewton HB { LogDensity
... }
The MDFT mode is activated by the MDFT option in the HB section of the global Math section. This mode requires compact models defined by the CMI, which support assembly routines in the frequency domain. Some built-in models are available. For details, see the "CMI Models With Frequency-Domain Assembly" section of the Compact Models User Guide.
Math { HBPlotFilePerNewton HB { MDFT
... } }
Click to view primary file SDFT_des.cmd.
For SDFT simulations, the System section contains standard specifications for a time periodic transient simulation. In this example, this is a sinusoidal voltage source with frequency of @f1@ applied across a simple p-n diode. The System section reads as follows:
System { PN pn (cathode=c anode=a) Vsource_pset "va" (a c) { sine = (0.0 0.0 @f1@ 0 0) } set(c=0) HBPlot "n@node@_hbplot" ( v(a) i(pn a)) }
The HBPlot ... command specifies the file prefix for the HB circuit output of the simulation and the quantities to be saved. The syntax is the same as for the corresponding Plot statement in standard mixed-mode simulations.
In the Solve{...} section of the example, the diode is biased to the DC operation point by standard Coupled solutions first. The resulting DC solution is used to initialize the subsequent HB simulation, where the AC signal amplitude is ramped by a Quasistationary statement. The self-consistent solution of a given set of equations by the HB simulation is triggered by the HBCoupled(...){set of equations} statement:
Quasistationary ( InitialStep=1e-3 Increment=1.5 MaxStep=@<1.0/25>@ Minstep=1.e-8 Goal {Parameter="va"."sine[1]" Value=@mag@} ) { HBCoupled ( Tone ( Frequency = "va"."sine[2]" NumberOfHarmonics = @NumHarm@ ) Initialize = DCMode Method = ILS GMRES ( Tolerance = 1e-5 MaxIterations = 80 Restart = 20 ) RhsMin= 5e-3 ) { Poisson Electron Hole }
In the HBCoupled statement, the specification of Tone is mandatory. The Tone is defined by the frequency parameter of the AC signal (given by the third parameter of the sine(...) statement of the voltage source va in the System section) and the number of harmonics (NumberOfHarmonics) to be used in the HB simulation:
Tone ( Frequency = "va"."sine[2]" NumberOfHarmonics = @NumHarm@ )
Typically, nonlinear convergence improves with an increasing number of harmonics for one-tone HB simulations. However, only a moderate increase might be advantageous in terms of convergence and simulation time.
Then, the HB simulation is initialized for that Tone from a previous solution. If that solution resulted from a standard Coupled DC solution, the HB simulation is initialized from DCMode, specified by the HBCoupled option:
Initialize = DCMode
Provided an HB solution is already available, a subsequent HB simulation would be initialized from HBMode, that is, by:
Initialize = HBMode
The remaining options used in the HBCoupled statement are solver-specific settings. The use of the iterative linear solver GMRES (preconditioned restarted generalized minimum residual method) is recommended for most applications as the memory requirements for storing the HB Jacobian matrix typically become very large. If GMRES is used, ILS must be selected as Method:
Method = ILS GMRES ( Tolerance = 1e-5 MaxIterations = 80 Restart = 20 )
Alternatively, for a very small number of harmonics and a moderately sized simulation grid, a direct linear solver can be used. The direct solver PARDISO is best suited for such small-sized problems.
The results of each converged HBCoupled statement (contact currents and voltages, temperatures, and heat components) are saved in separate .plt files for time domain and frequency domain data. The names of the files for the time domain contain a substring Tdom, and those for the frequency domain contain a substring Hdom. A four-digit plot index is used to label the files consecutively, for example:
... pn_n9_0009_Hdom_des.plt pn_n9_0009_Tdom_des.plt ...
Amplitudes for the harmonics can be extracted from these files and are plotted in Figure 9 for the anode current of the diode versus AC-signal amplitude. To reproduce the figures in the project, select the corresponding Sentaurus Visual node and then click the Run Selected Visualizer Nodes Together toolbar button of Sentaurus Workbench.
Click to view the corresponding Sentaurus Visual script.
Amplitudes for the harmonics taken from these files can be used to reconstruct the time-dependent current for the given time period. This is performed by Sentaurus Visual in the timedomain tool instance. Figure 10 shows the plot of the resulting anode current with the applied voltage versus time under forward bias. For that bias condition, the anode current of the diode is almost in phase with the applied bias.
Click to view the corresponding Sentaurus Visual script.
The keyword HBPlot in the System section allows you to plot circuit quantities in the same way as the keyword Plot in standard mixed-mode simulations. In the SDFT mode, Sentaurus Device writes the following four files:
Next to the plot index used to number the device .plt files, the files for circuit quantities are labeled additionally with an integer index that is increased by one for each Coupled statement or HBCoupled Solve statement. An example set of file names is:
n9_hbplot_Coupled_3_0009_Fdomain_des.plt n9_hbplot_Coupled_3_0009_Fmag_des.plt n9_hbplot_Coupled_3_0009_Fphase_des.plt n9_hbplot_Coupled_3_0009_Tdomain_des.plt
Plotting solution variables is supported only for one-tone HB simulations. This is implicitly performed if the HB section in the Math section is present. Sentaurus Device will plot the coefficients of the one-sided Fourier series representation up to the first h=3 harmonics as real-valued vector components with names composed of a prefix HB, a suffix _C<i>, and the names of the solution variables.
Odd values <i>=2h-1 correspond to the cos terms, and even values <i>=2h correspond to the sin terms. The zero component describes the DC value. In addition, the magnitude and phase are plotted, with the prefixes Mag and Phase to the variable names and suffixes _C<h>. Figure 11 shows an example of the second harmonic magnitude of the electrostatic potential.
Click to view the primary file MDFT_des.cmd.
The MDFT mode requires compact models that support assembly routines in the frequency domain, that is, the CMI-HB-MDFT function set as described in the "Sentaurus Device Analysis Methods" section of the Compact Models User Guide. Only such models are allowed in the System section of MDFT HB simulations. Sentaurus Device provides a basic set of compact models that support this functional behavior.
For the p-n diode simulation demonstrated for the SDFT mode, the System section for one-tone HB simulations in MDFT mode is given by:
System { PN pn (cathode=c anode=a) sd_hb_vsource_pset "va" (a c) { dc= 0.0 freq= @f1@ mag= 0.0 phase= -90. } set(c=0)
Here, the compact model sd_hb_vsource represents a harmonic voltage source that supports assembly routines in the frequency domain. The parameters used are the DC voltage, the frequency freq of the AC voltage, and its magnitude (mag) and phase. Next to these specialized compact models, the System section is the same as for standard mixed-mode simulations.
For MDFT simulations, scaling factors are available for the residuum and the update error. In the Math section, the factors RhsScale and UpdateScale can be used to scale the residuum and the update error of individual equations, which are used as Newton convergence criteria. This is often necessary for the electron and hole continuity equations, and values differ for different applications and devices. Examples of such settings are used in this project as shown here:
Math { HBPlotFilePerNewton HB { MDFT LogDensity UpdateScale(Electron) = 1.e-0 UpdateScale(Hole) = 1.e-2 UpdateScale(Poisson) = 1.e-0 UpdateScale(Contact) = 1.e-0 UpdateScale(Circuit) = 1.e-0 RhsScale(Electron) = 1.e-6 RhsScale(Hole) = 1.e-6 RhsScale(Poisson) = 1.e-1 RhsScale(Circuit) = 1.e-6 RhsScale(Contact) = 1.e-8 }
... }
For a complete list with defaults, you can examine the log file of an MDFT simulation without explicit specifications in the Math section.
In the Solve{...} section of the one-tone MDFT simulation, first the project is cleaned up to remove some node files that might exist from a previous run. Then, the diode is biased to the DC operation point by standard Coupled solutions:
Solve { System("rm *n@node@_*_Hdom_des.plt *n@node@_*_Tdom_des.plt") Coupled { Poisson } Coupled { Poisson Electron Hole } Quasistationary ( InitialStep=1e-3 Increment=1.5 MaxStep=@<1.0/20>@ Minstep=1.e-8 Goal { Parameter="va"."dc" Voltage=@Vdc@} ) {Coupled { Poisson Electron Hole } }
The resulting DC solution is used to initialize the subsequent HB simulation. Then, the AC-signal amplitude for the MDFT HB analysis is ramped by a Quasistationary statement, whereby the MDFT HB simulation is performed at each bias step by the HBCoupled(...){set of equations} statement:
Quasistationary ( InitialStep=1e-3 Increment=1.5 MaxStep=@<1.0/25>@ Minstep=1.e-8 Goal { Parameter="va"."mag" Value= @mag@ } ) {HBCoupled ( Tone ( Frequency = "va"."freq" NumberOfHarmonics = @NumHarm@ ) Initialize = DCMode Method = ILS GMRES ( Tolerance = 1e-5 MaxIterations = 80 Restart = 20 ) ) { Poisson Electron Hole }
Like SDFT simulations, the Tone specification in the HBCoupled statement is mandatory. Here, it specifies the frequency parameter of the AC signal of the HB voltage source va in the System section and the number of harmonics (NumberOfHarmonics) to be used in the HB simulation:
Tone ( Frequency = "va"."freq" NumberOfHarmonics = @NumHarm@ )
The remaining HBCoupled specifications are solver specifics with the same meaning as discussed for SDFT simulations.
The results of each converged HBCoupled (contact currents and voltages, temperatures, and heat components if solved for) are saved in separate .plt files for time domain and frequency domain data. The names of the files for the time domain contain a substring Tdom, and those for the frequency domain contain a substring Hdom. A four-digit plot index is used to label the files consecutively, for example:
... pn_n12_0009_Hdom_des.plt pn_n12_0009_Tdom_des.plt ...
Amplitudes for the harmonics can be extracted from these files and are plotted in Figure 12 for the anode current of the diode versus the AC-signal amplitude.
Click to view the corresponding Sentaurus Visual script.
Amplitudes for the harmonics taken from these files can be used to reconstruct the time-dependent current for the given time period. This is performed by Sentaurus Visual in the timedomain tool instance. Figure 13 shows the plot of the resulting anode current with the applied voltage versus time under reverse bias. For that bias condition, the anode current of the diode is almost 90° out of phase with the applied bias according to the capacitive charging and decharging of the diode.
Click to view the corresponding Sentaurus Visual script.
In MDFT simulations, the keyword HBPlot in the System section allows you to plot HB circuit quantities. It triggers Hdom and Tdom files to be written for the circuit.
Next to the plot index used to number the circuit .plt files, the circuit files are labeled additionally with an integer index that is increased by one for each Coupled statement or HBCoupled Solve statement. An example set of file names is:
n12_hbplot_Coupled_3_0015_Hdom_des.plt n12_hbplot_Coupled_3_0015_Tdom_des.plt
Harmonic balance is computationally more efficient for problems with time constants that differ by many orders of magnitude. As an example, two high-frequency AC signals that are close to each other in frequency are applied to the p-n diode used so far. This results in a high-frequency component that would have to be resolved in the time domain, while the simulation requires simultaneously much longer times corresponding to the beating frequency. Figure 14 shows the voltage waveform resulting from two such AC voltages for a half period.
The voltage signal in Figure 14 can be simulated by a two-tone HB calculation in MDFT mode. The MDFT mode is activated again in the Math section by the keyword MDFT. The System section contains the device sd_hb_vsource2, which represents a multitone voltage source with two tones. It allows the specification of two independent tones of oscillation with a DC component:
System { PN pn (cathode=c anode=a) sd_hb_sRL_pset "rp" (a c) { R=5meg } sd_hb_vsource2_pset "va" (a c) { dc= 0.0 freq= @f1@ mag= 0.0 phase= -90. freq2= @f2@ mag2= 0.0 phase2= -90. }
The frequencies freq and freq2 of the two tones are taken to be f1 = 100 kHz and f2 = 101 kHz for this project. In addition to the HB voltage source, a resistor of type sd_hb_sRL_pset is defined in parallel to the diode as another example for a compact model that supports assembly routines in the frequency domain, as required by the MDFT mode.
The two base frequencies and their harmonics must not coincide with each other in MDFT simulations.
Click to view the primary file MDFT_2Tone_des.cmd.
In the Solve{...} section of this two-tone MDFT simulation, before solving for any equation, the project is cleaned up to remove some node files that might exist from a previous run. Then, the diode is biased to the DC operation point of ±2 V by standard Coupled solutions:
Solve { System("rm *n@node@_*_Hdom_des.plt *n@node@_*_Tdom_des.plt") Coupled { Poisson } Coupled { Poisson Electron Hole } Quasistationary ( InitialStep=1e-3 Increment=1.5 MaxStep=@<1.0/20>@ Minstep=1.e-8 Goal { Parameter="va"."dc" Voltage=@Vdc@} ) {Coupled { Poisson Electron Hole } }
The resulting DC solution is used to initialize the subsequent HB simulation. Then, the AC-signal amplitudes for the two tones of the MDFT HB analysis are ramped by a Quasistationary statement to mag1 = mag2 = 0.5 V for each tone:
Quasistationary ( InitialStep=1e-3 Increment=1.5 MaxStep=@<1.0/25>@ Minstep=1.e-8 Goal { Parameter="va"."mag" Value= @mag1@ } Goal { Parameter="va"."mag2" Value= @mag2@ } ) {HBCoupled ( Tone ( Frequency = "va"."freq" NumberOfHarmonics = @NumHarm@ ) Tone ( Frequency = "va"."freq2" NumberOfHarmonics = @NumHarm@ ) Initialize = DCMode Method = ILS GMRES ( Tolerance = 1e-5 MaxIterations = 80 Restart = 20 ) ) { Poisson Electron Hole }
The Tone keyword in the HBCoupled statement is mandatory for both tones. Each tone is identified by the HB voltage source name, here va, and the frequency parameter name freq or freq2. The number of harmonics (NumberOfHarmonics) to be used in the HB simulation is specified for each tone individually:
Tone ( Frequency = "va"."freq" NumberOfHarmonics = @NumHarm@ ) Tone ( Frequency = "va"."freq2" NumberOfHarmonics = @NumHarm@ )
The remaining HBCoupled specifications used in this two-tone simulation are the same solver specifics used for the one-tone simulations.
If only one of the two tones is specified in the HBCoupled statement, a corresponding one-tone simulation is performed.
The results of each converged HBCoupled (contact currents and voltages, temperatures, and heat components) are saved as for the one-tone simulations in separate .plt files for time domain and frequency domain data. In addition, the same naming convention for the files apply.
Amplitudes for the frequencies taken from the final Hdom files can be used to reconstruct the time-dependent current for the given time period. This is performed by Sentaurus Visual in the beat tool instance. Figure 15 shows the plot of the resulting anode current versus time under reverse bias.
Click to view the corresponding Sentaurus Visual script.
Figure 16 shows the anode current versus anode voltage for the same data as in Figure 15. For that bias condition, the anode current of the diode is almost fully out of phase with the high-frequency components of the applied bias.
Click to view the corresponding Sentaurus Visual script.
Under forward bias conditions, the anode current of the diode is almost in phase with the high-frequency components of the applied bias as demonstrated by the anode current versus anode voltage plot in Figure 17.
Copyright © 2022 Synopsys, Inc. All rights reserved.