Author Topic: CNTFET using doped electrodes  (Read 8785 times)

0 Members and 1 Guest are viewing this topic.

Offline F. Fuchs

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: de
  • Reputation: 0
    • View Profile
CNTFET using doped electrodes
« on: February 24, 2014, 14:26 »
Hello everyone,

I'm trying to simulate a cylindrical gated CNTFET using ATK 12.8.2. The system is based on a (7,0) CNT, where I dope the electrodes using the "charge" keyword (each electrode has two unit cells of (7,0) CNT - 56 atoms - and the charge was set to "-0.5").
The gate is a spatial region and no dielectric region is inserted.
Extended Hueckel is the chosen method.

I have a question about the most suitable choice for the boundary conditions:
According to the tutorials and previous discussion (http://quantumwise.com/forum/index.php?topic=1597.0#.UwtBlduVvRY), Neumann boundaries are most suitable for studying the gate influence.
However, multipole boundaries are suggested for charged molecules.
I'm now wondering if I could use multipole boundaries for the transistor as well (as I have some kind of charged molecules as electrodes).

When I create a script using VNL to simulate the CNTFET, I cannot access the Multipole option. But when I directly edit the python script and change "NeumannBoundaryCondition" to "MultipoleBoundaryCondition", the job starts and ends successfully. Is there a reason why Multipole boundaries should not be used for a device calculation (e.g. a CNTFET)?
« Last Edit: February 24, 2014, 16:04 by fufl »

Offline F. Fuchs

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: de
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #1 on: March 10, 2014, 17:32 »
No answer here?

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5411
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: CNTFET using doped electrodes
« Reply #2 on: March 10, 2014, 18:47 »
I think you are confusing multipole and multigrid. Multipole is a boundary condition, but multigrid is a method. The only proper choice for devices with gates and other spatial regions is the multigrid method (as opposed to the FFT method for bulk periodic materials or FFT2D for devices without gates).

Within the multigrid method you can choose different boundary conditions, according to the geometry of the problem. For molecules (and ONLY molecules) you can choose multipole (not just charged ones, any molecule), but for devices you should have Dirichlet or Neumann depending on the layout of the system.

Offline F. Fuchs

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: de
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #3 on: March 10, 2014, 19:15 »
Thank you for your reply. This definitely helps.

Can you give a short explanation, why multipole boundaries are not suitable for devices (only perpendicular to the device of course)?
« Last Edit: March 10, 2014, 19:18 by fufl »

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5411
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: CNTFET using doped electrodes
« Reply #4 on: March 11, 2014, 05:40 »
Well, now that I think about it, perhaps in theory it could be used if you have a 1D system like a CNT or a nanowire... Just never tried it. Under any circumstance it would be more timeconsuming than using FFT2D with reasonably vacuum padding, I think...

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: CNTFET using doped electrodes
« Reply #5 on: March 11, 2014, 12:05 »
I want to make a comment on this discussion. I am very familiar with the work of fufl because we collaborate.
We calculate transfer characteristics (source-drain current I_sd at finite bais vs gate voltage V_g) of a CNTFET with cylindrical metal gate. We use the Hückel method. CNT is semiconducting (of course). Electrodes are the same type of CNT. Electrodes are charged to approximate some type of metallic-like contact. Now we increased the vacuum around the device. This causes the I_sd vs V_g curve to shift towards lower gate votages. That means the transistor is switched on at lower (or different) gate voltages. Even with a vaccum gap of around 75 ang (!) this shift persists. We wondered if there is a way to converge the results without ridiculously large vacuum spaces, so we tried all kinds of possible boundary condictions. Of course we always used MultiGRID because we have a gate.

Offline F. Fuchs

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: de
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #6 on: March 25, 2014, 18:59 »
I want to illustrate what ziand said in the previous post.
I have therefore attached an image, where you can see transfer characteristics for various cell sizes (the size of the cell can be found in the legend).
Neumann boundaries were used perpendicular to the device to obtain these data. I have also attached one structure as an example.
Even for a cell of 166 Angstrom, the transfer characteristic is further shifted towards smaller gate voltages.

This effect may be related with the doping of the electrodes (which was set to 0.5 using the charge keyword in ATK 12.8.2) and resulting electrostatics. However, I would not expect such a drastic shift.

Any ideas what could be the problem?
Should I maybe also adjust the value for the charge keyword when increasing the cell extend?
(since an increasing doping leads to a shift towards smaller gate voltages during our simulations, too)

Offline abhi005

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: in
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #7 on: December 24, 2014, 07:16 »
hi i am also working on cntfet.i am also using dielectric and my channel is 10 nm long.i have some queries...
1. why negative gate voltage on the gate ?
2. when i used channel completely covered with gate than it shows error. is it necessary to use gate like you have used in the upper geometry?
if you can provide me some more information about your geometry and calculator settings than it could be very useful for me.
tahnks in advance.
« Last Edit: December 24, 2014, 09:53 by abhi005 »

Offline abhi005

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: in
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #8 on: December 24, 2014, 09:27 »
i am also trying to replicate your above result but could not succeeded. It is not showing any error but could not run and failed after starting huckel device calculation.please suggest me.
i am also attaching how execution stops without showing any error.
« Last Edit: December 24, 2014, 09:54 by abhi005 »

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5411
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: CNTFET using doped electrodes
« Reply #9 on: December 25, 2014, 23:52 »
Last post: you are probably out of memory
As for previous, "it shows error" doesn't really give anyone much clues about how to assist you. How about posting the actual error message, and input script, and other relevant information?

Offline abhi005

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: in
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #10 on: December 26, 2014, 06:26 »
hi anders blom,
sorry for not giving information .I am attaching snapshot of the error coming during the simulation. It  shows memory error but there are some others error too.please suggest me about the remaining errors. i am also attaching script of my geometry.

# Set up configuration
central_region = BulkConfiguration(
    bravais_lattice=central_region_lattice,
    elements=central_region_elements,
    cartesian_coordinates=central_region_coordinates
    )

# Add metallic region
metallic_region_0 = TubeRegion(
    0.0*Volt,
    start_point = [23.9255, 23.9255, 10.0]*Angstrom,
    end_point = [23.9255, 23.9255, 91.46]*Angstrom,
    inner_radius = 15.0*Angstrom,
    thickness = 1.0*Angstrom,
)

metallic_regions = [metallic_region_0]
central_region.setMetallicRegions(metallic_regions)

# Add dielectric region
dielectric_region_0 = TubeRegion(
    25.0,
    start_point = [23.9255, 23.9255, 10.0]*Angstrom,
    end_point = [23.9255, 23.9255, 91.46]*Angstrom,
    inner_radius = 5.0*Angstrom,
    thickness = 10.0*Angstrom,
)

dielectric_regions = [dielectric_region_0]
central_region.setDielectricRegions(dielectric_regions)

device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode]
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
    CerdaHuckelParameters.Carbon_graphite_Basis,
    CerdaHuckelParameters.Carbon_graphite_Basis,
    ]

#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
left_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    electron_temperature=1200.0*Kelvin,
    k_point_sampling=(1, 1, 300),
    density_mesh_cutoff=150.0*Hartree,
    )

right_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    electron_temperature=1200.0*Kelvin,
    k_point_sampling=(1, 1, 300),
    density_mesh_cutoff=150.0*Hartree,
    )

device_numerical_accuracy_parameters = NumericalAccuracyParameters(
    electron_temperature=1200.0*Kelvin,
    k_point_sampling=(1, 1, 300),
    density_mesh_cutoff=150.0*Hartree,
    )

#----------------------------------------
# Iteration Control Settings
#----------------------------------------
left_electrode_iteration_control_parameters = IterationControlParameters()

right_electrode_iteration_control_parameters = IterationControlParameters()

device_iteration_control_parameters = IterationControlParameters()

#----------------------------------------
# Poisson Solver Settings
#----------------------------------------
left_electrode_poisson_solver = MultigridSolver(
    boundary_conditions=[[NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition]]
    )

right_electrode_poisson_solver = MultigridSolver(
    boundary_conditions=[[NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition]]
    )

device_poisson_solver = MultigridSolver(
    boundary_conditions=[[NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [NeumannBoundaryCondition,NeumannBoundaryCondition],
                         [DirichletBoundaryCondition,DirichletBoundaryCondition]]
    )

#----------------------------------------
# Device Algorithm Settings
#----------------------------------------
device_algorithm_parameters = DeviceAlgorithmParameters(
    initial_density_type=EquivalentBulk(electrode_constraint_length=10.0*Angstrom),
    )

#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = HuckelCalculator(
    basis_set=basis_set,
    charge=-.01,
    numerical_accuracy_parameters=left_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=left_electrode_iteration_control_parameters,
    poisson_solver=left_electrode_poisson_solver,
    )

right_electrode_calculator = HuckelCalculator(
    basis_set=basis_set,
    charge=-.01,
    numerical_accuracy_parameters=right_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=right_electrode_iteration_control_parameters,
    poisson_solver=right_electrode_poisson_solver,
    )

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceHuckelCalculator(
    basis_set=basis_set,
    numerical_accuracy_parameters=device_numerical_accuracy_parameters,
    iteration_control_parameters=device_iteration_control_parameters,
    poisson_solver=device_poisson_solver,
    device_algorithm_parameters=device_algorithm_parameters,
    spin_polarization=Unpolarized,
    electrode_calculators=
        [left_electrode_calculator, right_electrode_calculator],
    )

device_configuration.setCalculator(calculator)
nlprint(device_configuration)
device_configuration.update()
nlsave('ex7gate10.nc', device_configuration)

# -------------------------------------------------------------
# Transmission spectrum
# -------------------------------------------------------------
transmission_spectrum = TransmissionSpectrum(
    configuration=device_configuration,
    energies=numpy.linspace(-2,2,101)*eV,
    kpoints=MonkhorstPackGrid(1,1),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    self_energy_calculator=RecursionSelfEnergy(),
    )
nlsave('ex7gate10.nc', transmission_spectrum)
nlprint(transmission_spectrum)

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5411
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: CNTFET using doped electrodes
« Reply #11 on: December 27, 2014, 07:50 »
I only see one error, that memory error you mention. Still, can't help without complete script (for instance I can't see how many atoms you have, or if your "regions" overlap atoms, etc).

Offline abhi005

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: in
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #12 on: January 14, 2015, 10:16 »
hi
i am making cntfet. my channel ic 10nm long what should be the length of electrode. i also doped the electrode with charge =-.01 .i simulate my geometry with the default electrode length which came during bulk to device conversion in my case it is 10 Ang.
is this electrode length length is correct or i have to make some change?

Offline F. Fuchs

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: de
  • Reputation: 0
    • View Profile
Re: CNTFET using doped electrodes
« Reply #13 on: January 14, 2015, 10:28 »
You could make some test calculations with a longer electrode cell to see whether it influences your results or not (you must adjust your charge appropriately).

I suppose that 1 nm should be sufficient.
See also http://quantumwise.com/publications/tutorials/item/115-how-to-set-up-the-electrodes-properly-in-a-two-probe-system
« Last Edit: January 14, 2015, 10:31 by F. Fuchs »