5164 Final Report
5164 Final Report
5164 Final Report
(a)
I.
I NTRODUCTION
(b)
Fig. 1. (a) International Technology Roadmap for Semiconductors (ITRS)
based technology trends for scaling of MOSFETs for higher performances.
(b) Conventional scaling of MOSFETs till 2011 without use of exotic FET
structures and using standard CMOS processes.
Gate-Metal
(a)
(b)
(c)
Channel-Silicon
(d)
(e)
(f)
Fig. 2. (a) Early Intel FINFEts (b) Trigate (c) Omega-Gate (d) Pi- Gate (e)
Gate All Around (GAA) (d) Crosssection of Nanowire FET (SNWTs)
Fig. 3. Various design issues with GAA based SNWTs. We will discuss
carrier transport, Parasitic,Variability and mismatch. Rest of them are
also important but not convered in this report. Detail are taken from [13]
Fig. 4. 3-D illustration of single gate-wire SNWT with source and drain
extensions. It can be seen that charge transport can be modelled as a ballastic
charge transport
II.
Fig. 5.
(1)
where Vinj and Bsat are the injection velocity and ballistic
efficiency. Eq.(1) describes how fast carriers are injected from
the source-Vinj, and how efficiently carriers will be transported
through the channel-Bsat. The more the carriers are reflected,
e.g., rc, the lower the Bsat is, as shown in Fig. 4, where rc
is the reflection coefficient, and the correlation between Bsat
and rc can be given by as per texts [9-10] :
Bsat =
(1 rc )
(1 + rc )
(2)
1 VD,sat
(VGS VT H )
(3)
Ft is freq at which
(Iout/Iin)VD=0 =1
Iout Ft=Gm/(2*pi*CG)
Vout
Vin
RDS =
dIDS
dt
-1
Gm:Transconductance
M3
M4
Iin
Intrinsic drain
capacitor, CD
Intrinsic Gate
capacitor, CG
M1
M2
C IRCUIT S IMULATIONS
(5)
Vin
Vin
CD
Vout
Vout
CD
CG
CD
CD
CD
CG
Inverter
CD
Fan-Out of 4
[3]
30.08 dB
3dB=11GHz
10
[4]
GBW=341GHz
[5]
10
[6]
[7]
-1
10
10
10
10
10
[8]
Frequency (Hz)
Fig. 10. Bode plot of the simulated OTA comprised of SNWTs. The DCgain is 30.08 dB and the dominant pole is at 11.01 GHz.
C ONCLUSION
[2]
[9]
[10]
[11]
[12]
[13]
[14]
`ifdef __NQSMOD1__
electrical gi;
`endif
`ifdef __NQSMOD2__
electrical q;
`endif
`ifdef __RGATEMOD__
electrical ge;
`endif
`define __DEBUG__
`define __SHMOD__
`ifdef __SHMOD__
`define __RDSMOD__
thermal t;
//`define __NQSMOD1__
`define __NQSMOD2__
`define __RGATEMOD__
//`define __TNOIMOD1__
`else
thermal t;
`endif
`include "common_defs.include"
`include "bsimcmg_cfringe.include"
`endif
g, d, s, e, t;
electrical g, d, s, e;
`include "bsimcmg_body.include"
// Mathematical functions
//`define SINH(x)
endmodule
`define COSH(x)
//`define TANH(x)
((lexp(x) - lexp(-(x))) /
(lexp(x) + lexp(-(x))))
// Numerical Constants
`define EXPL_THRESHOLD
`define COT(x)
((x)>=`M_PI/2 ? 0 : ((x)<=`M_PI/2 ? 0 : 1.0/tan(x)))
80.0
`define MAX_EXPL
5.540622384e34
`define MIN_EXPL
1.804851387e-35
`define N_MINLOG
1.0e-38
`define MEXPQM
`define DELTA_1
0.02
`define DELTA_ASYMM
// Junction capacitance
//ex:(ves_jct, Czbs, PBS_t, SBS, MJS, MJS2,
Qes1)
`define BSIM6JunctnCap(vex, Cz, PB, SJ, MJ,
MJ2, Qej)
\
0.04
`define CONSTCtoK
`define REFTEMP
degrees C */
begin
(273.15)
(300.15) /* 27
T1 = vex / PB;
`define ptype
// Physical Constants
`define q
`define EPS0
1.60219e-19
8.8542e-12
`define HBAR
1.05457e-34
`define MEL
9.11e-31
`define KboQ
degree
8.617087e-5
// Coul
// F/m
// Joule-sec
// kg
// Joule /
lln(arg));
sarg = lexp(-MJ *
T2 = lexp(-MJ * lln(0.1));
\
T3 = 1.0 / (1.0-MJ);
\
sqrt(arg);
else
\
lln(arg));
sarg = lexp(-MJ *
* T2 );
end
\
sqrt(arg);
else
lln(arg));
sarg = lexp(-MJ2 *
Qej = 0.0;
\
end
\
end
end
\
end else begin /*single junction*/
\
arg = 1.0 - T1;
\
//
// Macros for the model/instance parameters
//
else
end
\
//
||
nb no bounds
//
`define MPRcc(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
real nam=def from[lwr:upr] ;
`define MPRoo(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
real nam=def from(lwr:upr) ;
`define MPRco(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
real nam=def from[lwr:upr) ;
`define MPRoc(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
real nam=def from(lwr:upr] ;
`define MPRcz(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
real nam=def from[ 0:inf);
`define MPRoz(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
real nam=def from( 0:inf);
//
// IPM instance parameter
mFactor(multiplicity, implicit for LRM2.2)
// OPP operating point parameter, includes
units and description for printing
//
`define ALIAS(alias,paramName) aliasparam
alias = paramName ;
`define OPP(nam,uni,des)
desc=des*)
real nam ;
(*units=uni,
`define MPRnb(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
real nam=def ;
`define MPRex(nam,def,uni,exc, des)
(*units=uni,
desc=des*) parameter
real nam=def exclude exc ;
`define MPInb(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
integer nam=def ;
`define MPIex(nam,def,uni,exc, des)
(*units=uni,
desc=des*) parameter
integer nam=def exclude exc ;
`define MPIcc(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
integer nam=def from[lwr:upr] ;
`define MPIoo(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
integer nam=def from(lwr:upr) ;
`define MPIco(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
integer nam=def from[lwr:upr) ;
`define MPIoc(nam,def,uni,lwr,upr,des)
(*units=uni,
desc=des*) parameter
integer nam=def from(lwr:upr] ;
`define MPIcz(nam,def,uni,
des) (*units=uni,
desc=des*) parameter integer nam=def from[
0:inf);
`define MPIoz(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
integer nam=def from( 0:inf);
`define IPRoz(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter real
nam=def from( 0:inf);
`define IPInb(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter integer
nam=def ;
`define MPIsw(nam,def,uni,
des)
(*units=uni,
desc=des*) parameter
integer nam=def from[ 0: 1] ;
`define MPIty(nam,def,uni,
des) (*units=uni,
desc=des*) parameter integer nam=def from[ 1: 1] exclude 0 ;
`define IPIcc(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter integer nam=def from[lwr:upr] ;
`define IPRnb(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter real
nam=def ;
`define IPRex(nam,def,uni,exc, des)
(*units=uni, type="instance", desc=des*)
parameter real nam=def exclude exc ;
`define IPRcc(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter real nam=def from[lwr:upr] ;
`define IPRoo(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter real nam=def from(lwr:upr) ;
`define IPRco(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter real nam=def from[lwr:upr) ;
`define IPRoc(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter real nam=def from(lwr:upr] ;
`define IPRcz(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter real
nam=def from[ 0:inf);
`define IPIoo(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter integer nam=def from(lwr:upr) ;
`define IPIco(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter integer nam=def from[lwr:upr) ;
`define IPIoc(nam,def,uni,lwr,upr,des)
(*units=uni, type="instance", desc=des*)
parameter integer nam=def from(lwr:upr] ;
`define IPIcz(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter integer
nam=def from[ 0:inf);
`define IPIoz(nam,def,uni,
des) (*units=uni,
type="instance", desc=des*) parameter integer
nam=def from( 0:inf);
`ifdef EXPLICIT_MFACTOR
`define IPM
(*units="" ,
type="instance", desc="multiplicity factor"*)
parameter real m=1.0 from(0.0:inf) ;
`define MFACTOR_USE m
`else //
`define IPM
= 0.0;
Dr
= 1.0;
Rsource = RSourceGeo;
Rdrain = RDrainGeo;
T4
T1
= 1.0 / T4;
T0
= vgs_noswap - vfbsd;
T3
= sqrt(T2 * T2 + 1.0e-1);
Dr
= 1.0 + (NFINtotal) * beta *
ids0_ov_dqi / (Dmob * Dvsat) * Rdsi;
end
T4
2: begin
T1
= 1.0 / T4;
T4
T0
T1
= 1.0 / T4;
T0
T5
= RSW_i * (1.0 + RSDR_a * lexp(0.5 *
PRSDR * lln(V(si,s) * V(si,s) + 1.0E-6)));
Rsource = rdstemp * (RSourceGeo +
(RSWMIN_i + T5 * T0) * WeffWRFactor);
T2
= vgd_noswap - vfbsd;
T3
= sqrt(T2 * T2 + 1.0e-1);
T1
= 1.0 / T4;
T0
T5
= RDW_i * (1.0 + RDDR_a * lexp(0.5
* PRDDR * lln(V(di,d) * V(di,d) + 1.0E-6)));