QCADesigner <:>

QCADesigner Documentation

Bistable Simulation Engine

The bistable simulation engine assumes that each cell is a simple two-state system. For this two-state system, it has been shown that the following Hamiltonian can be constructed[1]:

where Eki,j is the kink energy between cell i and j. This kink energy is associated with the energy cost of two cells having opposite polarization. Pj is the polarization of cell j. γ is the tunneling energy of electrons within the cell. The summation is over all cells within an effective radius of cell i, and can be set prior to the simulation. Using the time-independent Schroedinger equation we are able to find the stationary states of the cell in the environment described by this Hamiltonian.

where Hi is the Hamiltonian given above. ψi is the state vector of the cell. Ei is the energy associated with the state. When evaluated, this eigenvalue problem reduces to the following simple relation

where Pi is the polarization state of the cell, and Pj is the polarization state of the neighboring cells. Since experimentally determined switching times are not available, the simulation does not include any timing information. Using this response function the simulation engine calculates the state of each cell with respect to other cells within a preset effective radius. This calculation is iterated until the entire system converges within a predetermined tolerance. Once the circuit has converged, the output is recorded and new input values are set. It is believed that although this approximation is sufficient to verify the logical functionality of a design it cannot be extended to include valid dynamic simulation; but, as a result of its simplicity this simulation engine is able to simulate a large number of cells very rapidly, and therefore provides a good in-process check of the design. For dynamical simulations refer to the coherence vector simulation.

Kink Energy

The kink energy Eki,j represents the energy cost of cells i and j having opposite polarization. It is calculated simply from the electrostatic interaction between all the charges (mobile/immobile). That is, for each dot in cell i we calculate the electrostatic interaction between this dot and each dot in cell j as

here ε0 is the permittivity of free space and εr is the relative permittivity of the material system. This is summed over all i and j. To find the kink energy we first compute this electrostatic energy when the cells have opposite polarization, then again when the cells have the same polarization and subtract them.

Because the cell is charge neutral (immobile positive charges cancel the charged electrons) the cells interact through a quadrupole-quadrupole interaction which decays inversely as a power of five of the distance between cells. Therefore the kink energy will decay rapidly with distance and the effective neighborhood of interacting cells can be made small.

Engine Options

Bistable Simulation Options

Number of Samples

The total simulation is divided by the number of samples. For each sample, the simulation engine looks at each cell and calculates its polarization based on the polarization of its effective neighbors (determined by the radius of effect). The larger this number the longer the simulation will take to complete. However, if you choose too small a number you may not get the expected results, because there will not be sufficient samples during input transitions. If you suspect that your results should be something other than what they are, I recommend that you try to increase this number.

TIP: If other parameters are default, try setting the number of samples to 1000 times the number of vectors you are simulating. For exhaustive simulation set to 2000 times 2n, where n is the total number of inputs in your design.

Convergence Tolerance

During each sample, each cell is converged by the simulation engine. The sample will complete when the polarization of each cell has changed by less then this number; i.e. loop while any design cell has (old_polarization - new_polarization) > convergence_tolerance.

Radius of Effect

Because the interaction effect of one cell onto another decays inversely with the fifth power of the distance between cells, we do not need to consider each cell as effecting every other cell. This number determines how far each cell will look to find its neighbors. Make sure that at least the next-to-nearest neighbors are included in this radius. If you only allow for the nearest neighbor then I would not expect designs with coplanar crossovers to work. The following figure should help clear this up.

Note that with multilayer capability the radius of effect is extended into the third dimension. Therefore in order to include cells in adjacent layers, make sure that the layer separation is less than the radius of effect.

Relative Permittivity

The relative permittivity of the material system you want to simulate. For GaAs/AlGaAs it is roughly 12.9 which is the default value. This is only used in calculating the kink energy.

Clock Signal

The clock signal in QCADesigner is calculated as a hard-saturating cosine as shown below. The clock signal is tied directly to the tunneling energy in the Hamiltonian.

Clock signal

Clock High/Clock Low

Clock low and high values are the saturation energies for the clock signal. When the clock is high the cell is unlatched. When it is low the cell is latched. The defaults seem to work in most cases, however, you may wish to play with them.

Clock Shift

The clock shift allows you to add a positive or negative offset to the clock as shown in the above figure.

Clock Amplitude Factor

Clock amplitude factor is multiplied by (Clock High - Clock Low) and reflects the amplitude of the underlying cosine as shown in the above figure.

Layer Separation

When simulating multilayer QCA circuits, this determines the physical separation between the different cell layers in [nm].

Maximum Iterations Per Sample

If the design does not converge in this number of iterations, then the simulation will move on to the next sample point. For complex designs you may wish to increase this.

Randomize Simulation Order

When active, the order in which cells are simulated is randomized in each iteration. I recommend leaving this on.

Animate

When active, the circuit will be animated throughout the simulation. If you zoom into the cells during the simulation you will notice that the polarization of the cells change.

References

[1] G. Toth, "Correlation and coherence in quantum-dot cellular automata", Ph.D. Thesis, University of Notre Dame, pp. 56-63, 2000.


Top of the page