Development of a Measurement Software for the Characterization of WORM Devices for Novel Memory Storage Applications

We hereby propose a software solution to perform high quality electrical measurements for the characterization of WORM (write-once read many), a new generation memory device which is being intensively studied for non-volatile data storage. The as-proposed software is completely based on .NET framework and sample C# code. The paper performed a relevant measurement based on this software. Working WORM devices, based on a polymeric matrix embedded with gold and copper sulfide nanoparticles, have been used for test measurements. The aim of this paper is to show the main steps to develop a fully working measurement software without using any expensive dedicated software.


Introduction
One of the new challenges of modern technology is the improvement of the data-storage devices.The progress of silicon-based devices is approaching to its physical limit (~10 nm) [1].In this respect, new incoming technologies are being studied all over the world such as memristors (MEMs) for non-volatile memories and write-once read-many (WORM) for non-volatile memory storage.
MEMs were described by Chua et al. in 1971 "the missing element" in the circuit's theory, filling the missing relationship between the charge Q(t) and the current flux J(t) [2].Until it's realization in 2008 by the HP labs [3], MEMs have remained as a theoretical object.Belonging to MEMs, resistive switching memories (RRAMs) represent an interesting and multidisciplinary topic of modern scientific and technologic research.For instance, RRAMs may found application in different fields of technology such as memory storage [4] [5], computing and logic operations [6] [7], neuromorphic computing applications [8] [9] and analog circuits [10].Basically, a RRAM is can be described as a resistive element whose resistance can be switched by means of a voltage pulse [3].Normally, a RRAM can exist in two states: the high resistance state (HRS) and the low resistance state (LRS).The value of the resistances of the above-mentioned states can be defined as R ON and R OFF .This kind of elementary cell-unit can operate as a Boolean logic switch returning (0) if the state returns R OFF value and (1) when R ON [6].As the RRAM is a reversible state device, the information is stored over time as a non-volatile memory similarly to the widespread used flash memories.Among with MEMs, WORM (write-once read-many) represents another class of modern devices, which are being intensively studied nowadays.The latter, differently from MEMs, is a non-volatile memory (read only ROM).The purpose of a non-volatile memory is to keep the information and ensure that the latter can be read many times [11] [12].Basically, a WORM is a two-terminal device with an insulating film placed between two metallic electrodes.The information can be written by applying a voltage pulse which induces the formation of a stable conductive bridge (short-circuit) between the two electrodes.So the device, at the initial state, shown a huge value of resistance and, after the writing process, the resistance become very low due to the short-circuit formation [13].In a similar way to MEMs, WORMs have two resistance states, one with high resistance and the other one with a low resistance allowing to store analogic values (0 -1).The characterization of a WORM requires some fundamental steps which require a collection of precise and reliable set of methods.One of the first operations is the cyclic voltammetry measurement (CV), in which the current flowing through the devise is measured as a function of a cyclic voltage-sweep between two limit voltages.This characterization allows seeing the resistance transitions happening into the device due to the application of an electronic field.Subsequently, the device should be studied in pulsed-voltage regime, to verify that the short-circuit (data writing) can be performed using square pulses.This last analysis should be done by trying successive pulses of different intensity and duration sweeping the voltage in a well-defined range, defined through CV scans.One of the main problems in beginning a research project on MEMs and WORMS is the lack of dedicated measurement software.In fact, most of the research group must spend a lot of time to build its own analysis tools.A very common solution is the use of commercial visual programming software such as VEE (Keysight) or LabView (National Instruments TM ).The latest combine a visual-programming interface to directly access to the main function of measurement instruments.Both allow the creation of measuring application with data-saving and analysis built-in functions along with other professional stuffs.However, the choice of this kind of solutions requires a large initial money investment due to the software license purchasing and the multi-level training courses to learn the visual-programming language.In fact, these softwares work with a graphical-dataflow interface which simplifies the programming operations, however it does not exempt the research staff from learning the basic mechanisms of programming (loops, arrays, variables, data handling etc.).Another limitation of these softwares is the impossibility of build a stand-alone software, executable on a generic computer.Both the mentioned software allows to build executable files which look-like a stand-alone-programs however the latest require a specific run-time environment installed on the hosting computer or a higher and more expensive software license (e.g.LabView pro).The as-mentioned commercial solutions are reliable and offer a wide range of programming tools and can be chosen after a careful consideration of advantages, disadvantages and costs involved.In this paper we want to show another programming approach, which uses freeware resources to build a powerful stand-alone software based on two freeware solutions: Microsoft Visual Studio and .NET environment, programming with the widespread C# language.Our approach requires a little bit higher effort in the programming phase however it is free, reliable and can be considered to build your own software, designed taking into consideration the experimental necessities and executable on a generic computer requiring just the measurement instruments drivers (normally distributed for free).Especially, we want to show how to wrap the original driver of a commonly used source-meter equipment family (Keithley 24xx).The proposed software has been tested on real WORM samples.

Methods
The software was developed using Microsoft Visual Studio Community 2017 (V.15.7.2), keithley 2400C Source Meter (SM) was used as the measurement interface using the driver Ke24xx, compatible with all the 24xx instrument series.The connection between the SM and the computer was performed using a USB/GPIB interface 82357B by Agilent Technologies  .Real WORM samples were prepared using a modified method from our research group, based on copper sulfide nanocrystals [14] dispersed in a polymethylmethacrylate (PMMA) matrix embedded with gold nanoparticles capped with biphenyl groups [15].As the device preparation method is beyond the scope of the paper and is under further investigation it will not be discussed here.

Software Design
The first step of the development of this solution is the planning of the fundamental elements necessary to perform a complete characterization of the memory device.As discussed in the previous paragraph, the initial characterization should be based on a sweep-voltage analysis.This tool is extremely powerful because it allows seeing the switching process induced by the application of a sweeping voltage.In physical terms, a CV consists of the generation of a triangular wave with a defined amplitude (voltage limits), a certain frequency and a duration.During the application of this voltage wave, the equipment performs repeated measurements of the flowing current and stored the data.Several SM such as Keithley, have a built-in sweep function which can be accessed from the frontal panel or from remote (driver).This function allows defining the voltage limits, the number of points and the measurement speed.However, this kind of sweep cannot show real-time results because the data are sent to the remote unit (PC) just at the end of the sweep.In this kind of measurement, the voltage is increased linearly as a function of the time and the current is samples as fixed intervals, once the voltage reaches one of the limit value, the direction of the sweep is changed until the next limit voltage and the operation can be repeated in cyclic regimen.Another approach to perform current vs voltage (IV) measurement is the staircase voltammetry.In this technique, the voltage is increased in a series of steps just like a stair.Each step-voltage is maintained over a certain time and the current is sampled before the next step [16] [17].In most SMs this function can be implemented just by remote operation (software).
The entire program can be schematized as shown in Figure 1 selected functions.After the realization of the measurements, the software stores the data into a datafile.

Driver Wrapping
The core element of the as proposed software is the driver communication module.The driver of the equipment can be represented as a collection of functions which can be called by an external application.In our case, the first step is to reference the specific dll in the C# project and create the instrument as an object specifying the virtual software application architecture (VISA) address (e.g.Ke24xx instr = new Ke24xx ("GPIB0::15::INSTR", false, true)).The two bool values, following the VISA are respectively the option which resets the equipment and the instrument handling to start a communication session.More information about the parameters requested in the method can be found on the instrument driver manual.When the object instrument is declared into the software, all the front-panel function can be called from the main class Ke24xx.The following lines represent the commands used to set the equipment in the voltage source mode: Ke24xx instr = new Ke24xx("GPIB0::15::INSTR", false, true); instr.reset();//reset the equipment instr.ConfigureSourceMode(Ke24xxConstants.SourceVoltageFunction, Ke24xxConstants.SourceFixedMode, Ke24xxConstants.SourceDcShape, Ke24xxConstants.AutoRange); In this mode, the equipment works as a voltage source and is ready to apply a voltage and measure a current in a specified current range or in "Auto Range" mode.The voltage (V, double) can be applied to the sample after enabling the digital output: instr.EnableSourceOutput(true); instr.ConfigureSourceLevel(Ke24xxConstants.SourceVoltageFunction, V, 0); These functions can be included in a generic loop which increases the applied voltage in the selected range by a specific step and time.More source code examples can be found into the supplementary information (SI).

WORM and RRAMs Measurement Methods
As discussed in the introduction, the first characteristic to be investigated is the resistance-change transition to identify our device as a WORM or a RRAM (if the transition is reversible).So, the first measurement should be a staircase CV or a sweep between two defined voltages.The following Figure 2 shows an example of a resistance transition in a real WORM sample.In Figure 2(a) one can see the current vs voltage response of a virgin device, showing a shape characteristic of a capacitor.When the voltage is sweep between 1.0 and −1.0 V no sharp transitions are visible in the graph.This confirms that the device is stable under the applied bias, thus the reading voltage can be chosen into the selected range.
To induce the resistance transition (writing process), we have extended the scanning range from −6.0 to 6.0 V, as shown in Figure 2  In the region between 3.0 and 4.8 V, the current shows a higher noise as well as a sharp increase due to the formation of the short-circuit which brings the device from it OFF state to the ON state.In binary terms this transition can be understood as the writing of the bit "1" replacing the bit "0".Once the device is set to its ON state which shown a current ratio (ON/OFF) of about 10 3 considering the current of the virgin (VGN) device (Figure 2(c)).After the wiring operation, the device shows the typical CV response of a resistor without any capacitive effect.This can be due to the breaking of the insulating layer.
From CV characterization it is possible to identify the resistance switching behavior of the device under investigation.From this graph it is possible to identify the voltages in which such transition occurs.This is a key point of our characterization method.Notice that, for direct informatics applications, the switching operations are performed by pulsed voltages (square wave).For this reason, the next measurement module was designed to perform voltage pulses in a specific voltage range, to determine the switching voltage, the pulse duration and the minimum number of pulses to switch the device ON [18] [19].Figure 3 represents a schematic view of the pulsed voltage measurement module (PVMM) proposed in this software.To perform this measurement, the user defines some fundamental parameters such as: the limit voltages (V1 and V2); the number of points in which the range will be split; the reading voltage (V R ) in which the sample is read; the number of readings (N R ), the number of pulses (N), pulses duration (T 1 ) and the delay between each pulse (T 2 ).   4.
In this example, the pulse intensity was investigated between 0 and 9 volts using two different pulse duration times: 30 and 1000 ms.
In Figure 4(a), square dots represent the average current values (n = 10) measured after the application of 1 pulse with an intensity ranging from 0.0 to 9.0 V with a duration of 30 ms.As shown by the plot, these experimental condition does not induce the OFF to ON transition.In fact, in the whole voltage range, the current remains below C ON .Notice that it should be useful to introduce a tolerance threshold instead of precisely define C ON as a strict barrier between the OFF and the ON state (gray and green regions).In the successive measurement, the dwell time of the pulse was extended to 300 ms (Figure 4(b)) and, after 4.0 V, the device shown the irreversible switch transition maintaining the ON state at higher voltages.

Conclusion
We proposed a software structure based on .NET framework, C# language and freeware resources for the characterization of resistance switch devices.In this between the software and the equipment using the original instrument driver as an external reference.

Figure 1 .
Figure 1.Flowchart representation of the measurement software.The experimental parameters are defined by the user through the GUI and, after a validity check, the selected function is executed by the driver-wrapper module built-in in the software.The I/O interface sends the information to the SM and the measurements are read and visualized in the GUI.At the end of the loop the measurements are stored into a data file. (b).

Figure 2 .
Figure 2. Cyclic voltammetry of a typical WORM based on PMMA/CuS/AuBi blend.The scans were performed from 0.0 V up to the voltage limits defined for the experiment: ±1.0 V for the reading measurements (a and c) and ±6.0 for the writing operation (b).First, the virgin (VGN) device was characterized in the reading range showing a capacitive behavior (a).When the voltage sweep is extended (b) a sharp increase in the flowing current sets the device in its ON state, which results stable over the rest of the scan.

Figure 3 .
Figure 3. Flowchart representation of the pulse voltage measurement module.This function applies square voltage pulses to the sample.The pulse voltage is increased by a fixed value and is ranged into a specific voltage range.After the application of the pulses, the software read the current (C) value and check if it is higher than a fixed current value which identifies the ON state.

Figure 4 .
Figure 4. Square pulses measurements performed on WORM samples using the PVM module of the software.The current is sampled ten times after the application of the square pulse.Different dwell time was studied: 30 ms (a) and 300 ms (b).Notice that, when the dwell time is extended up to 300 ms the device is set in its ON state between 3.5 and 4.0 V.
The voltage (intensity) of the square pulse is ranged between the values V1 and V2.Then, the software performs a current measurement and acquires this value storing it into a variable (C).This value is then compared with the expected current's value of the ON state of the device (C ON ).If the read value C is lower than C ON the voltage is increased and a new cycle is started; else the loop is stopped and the last applied voltage is defined as the ON switching voltage.Also, this function allows optimizing the number of pulses and the duration.The core of this function, in a typical C# namespace, should consist in a loop (for) defining the number (i) of repeated iterations corresponding to the desired number of voltage points.In each cycle the software applies 0.0 V during a certain delay time, then applies the voltage during the pulse duration time and finally applies 0.0 V again.Notice that, if one needs to apply multiple pulses, the function must be structured as a loop (voltage points) of loops (multiple pulses).At the end of the pulses, the reading voltage is set, and the current is sampled, and its average value is plotted in a graph (current vs pulse voltage).The example code can be found in Appendix A. After the measurement of the current, the variable corresponding to the applied voltage is increased by a fixed value and the cycle is repeated.The results of a typical switching experiment are reported in Figure