memtorch.bh.nonideality.endurance_retention_models

Submodule containing endurance and retention models, for use with memtorch.bh.nonideality.Endurance and memtorch.bh.nonideality.Retention

memtorch.bh.nonideality.endurance_retention_models.empirical_metal_oxide_RRAM

Empirical Metal-Oxide RRAM Device Endurance and Retention Model as described in: C. Lammie, M. Rahimi Azghadi and D. Ielmini, “Empirical Metal-Oxide RRAM Device Endurance and Retention Model For Deep Learning Simulations”, Semiconductor Science and Technology, 2021.

class memtorch.bh.nonideality.endurance_retention_models.empirical_metal_oxide_RRAM.OperationMode[source]

Bases: enum.Enum

An enumeration.

gradual = 2
sudden = 1
memtorch.bh.nonideality.endurance_retention_models.empirical_metal_oxide_RRAM.model_endurance_retention(layer, operation_mode, x, p_lrs, stable_resistance_lrs, p_hrs, stable_resistance_hrs, cell_size, temperature, temperature_threshold=298)[source]

Method to model endurance and retention characteristics.

Parameters:
  • layer (memtorch.mn) – A memrstive layer.
  • operation_mode (memtorch.bh.endurance_retention_models.OperationMode) – Failure operational mode (sudden or gradual).
  • x (float) – x parameter.
  • p_lrs (list) – Low resistance state p_0, p_1, p_2, and p_3 values.
  • stable_resistance_lrs (float) – Stable low resistance state.
  • p_hrs (list) – High resistance state p_0, p_1, p_2, and p_3 values.
  • stable_resistance_hrs (float) – Stable high resistance state.
  • cell_size (float) – Device cell size (nm).
  • temperature (float) – Operational temperature (K).
  • temperature_threshold (float) – Temperature threshold (K) in which the device begins to fail.
Returns:

The patched memristive layer.

Return type:

memtorch.mn

memtorch.bh.nonideality.endurance_retention_models.empirical_metal_oxide_RRAM.model_endurance_retention_gradual(initial_resistance, x, p_0, p_1, p_2, p_3, threshold, temperature_constant, cell_size=None)[source]

Method to model gradual endurance_retention failure.

Parameters:
  • initial_resistance (tensor) –

    Initial resistance values. x : float

    Energy (J) / SET-RESET cycles / Retention time (s).
  • p_0 (float) – p_0 fitting parameter.
  • p_1 (float) – p_1 fitting parameter.
  • p_2 (float) – p_2 fitting parameter.
  • p_3 (float) – p_3 fitting parameter.
  • threshold (float) – Threshold for x.
  • temperature_threshold (float) – Temperature threshold (K) in which the device begins to fail.
  • cell_size (float) – Device cell size (nm).
Returns:

Updated resistance values.

Return type:

tensor

memtorch.bh.nonideality.endurance_retention_models.empirical_metal_oxide_RRAM.scale_p_0(p_0, p_1, v_stop, v_stop_min, v_stop_max, v_stop_optimal, cell_size=10)[source]

Method to scale p_0 to introduce dependence on v_stop

Parameters:
  • p_0 (float) – Unscaled p_0 parameter.
  • p_1 (float) – p_1 parameter.
  • v_stop (float) – v_stop value to determine p_0 for.
  • v_stop_min (float) – minimum v_stop value.
  • v_stop_max (float) – maximum v_stop value.
  • v_stop_optimal (float) – optimal v_stop value (endurance).
  • cell_size (float) – Device cell size (nm).
Returns:

Scaled p_0 value.

Return type:

float

memtorch.bh.nonideality.endurance_retention_models.conductance_drift

Conductance drift model as described in: I. Boybat et al., “Impact of conductance drift on multi-PCM synaptic architectures”, 2018 Non-Volatile Memory Technology Symposium (NVMTS), 2018.

memtorch.bh.nonideality.endurance_retention_models.conductance_drift.model_conductance_drift(layer, x, initial_time=1e-12, drift_coefficient=0.1)[source]
Parameters:
  • layer (memtorch.mn) – A memrstive layer.
  • x (float) – Retention time (s). Denoted using x for sake of consistency with other models.
  • initial_time (float) – Initial time that corresponds with initial conductance values.
  • drift_coefficient (float) – Drift coefficient. For PCM devices, drift_coefficient typically has a value of 0.1 for the amorphous phase.
Returns:

The patched memristive layer.

Return type:

memtorch.mn