documentation

27 downloads 0 Views 701KB Size Report
educational simulation tool, lightweight and simple, which provides the ability to ... using the JAVA programming language through the Easy Java Simulation.
DEMOCRITUS UNIVERSITY OF THRACE (D.U.Th.) SCHOOL OF ENGINEERING DEPARTMENT OF ELECTRICAL & COMPUTER ENGINEERING DIVISION OF ELECTRONICS & INFORMATION SYSTEMS TECHNOLOGY LABORATORY OF ELECTRONICS

DOCUMENTATION IOANNIS VOURKAS, DIMITRIOS STATHIS, AND GEORGIOS CH. SIRAKOULIS

XANTHI, 2015

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 Introduction XbarSim started as a student project and now constitutes the product of ongoing effort to create an educational simulation tool, lightweight and simple, which provides the ability to quickly layout and study memristor-based circuit designs on crossbar topology. It is a self-contained, platform-independent simulation tool, developed using the JAVA programming language through the Easy Java Simulation (EJS) environment, aiming to serve primarily students as well as researchers who wish to explore and study memristive circuits in crossbar architecture. Besides being still in its infancy, a large amount of effort is being put forth to enhance its functionalities and create a large, useful toolbox for future students, researchers, and engineers. More specifically, XbarSim models a two dimensional array which consists of two sets of wires crossing perpendicularly. In every cross-point (hereinafter also called as crossbar node) we assume having either a memristive device (a single memristor or a composite memristive structure), or a typical connection which can be adjusted as insulator (high resistance - open circuit) or as routing junction (very low resistance - short circuit). The types of memristive device that can be used as cross-point elements include a single memristor – being either forward (FPM) or reversely (RPM) polarized- and two memristors connected in anti-serial (ASM) or anti-parallel (APM) configuration. Earlier versions of this tool have been used for the estimation of current-sneak paths and the evaluation of different mitigation strategies. The version which you are using has been developed for users with no deep understanding of memristive dynamics. It comprises a graphical user interface (GUI) which facilitates the study of circuits with memristors and nonvolatile memory circuits. One of the most important design specifications concerns the portable and standardized method of representing information within the software so that all users can run their simulations easily even using input files created by third parties. XbarSim is independent of the memristor device fabrication technology. The evolution of the resistance of all cross-point elements is visualized using graphical outputs showing the voltage-drop and the time-evolution of the resistance at each simulation step. Among the novelties of this simulator exists the effective visualization of the simulation result by producing 2-D graphs showing the most important aspects of the conducted circuit simulation. The XbarSim JAVA archive and this documentation file are licensed to you under the terms of the Creative Commons Attribution-NonCommercial-NoDerivatives licence (CC BY-NC-ND version 4.0 or later), the current text of which can be found via this link: http://creativecommons.org/licenses/by-ncnd/4.0/. Attribution (as required by that Creative Commons License) should take the form of (at least) a mention of our name, an appropriate copyright notice and a reference to the following publication:



Vourkas, D. Stathis, and G. Ch. Sirakoulis, “XbarSim: An Educational Simulation Tool for Memristive Crossbar-Based Circuits,” 2015 IEEE Int. Symp. Circ. Syst. (ISCAS), Lisbon, Portugal, May 24-27, pp. 1798 – 1801

Details on the simulated circuit topology XbarSim is based on the device model of a threshold-type, voltage-controlled bipolar memristor. For more information about the memristor model we suggest referring to either of the following publications:

2 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 • • •

I. Vourkas and G. Ch. Sirakoulis, “A Novel Design and Modeling Paradigm for Memristor-based Crossbar Circuits,” IEEE Trans. Nanotechnol., vol. 11, no. 6, pp. 1151-1159, Nov. 2012 I. Vourkas, A. Batsos, and G. Ch. Sirakoulis, “SPICE modeling of nonlinear memristive behavior,” Int. J. Circ. Theor. Appl., vol. 43, no. 5, pp. 553–565, 2015 I. Vourkas, and G. Ch. Sirakoulis, “Memristor Modeling,” in: “Memristor-Based Nanoelectronic Computing Circuits and Architectures,” Chapter 2, pp. 9-28, vol. 19 of the series Emergence, Complexity and Computation, Springer International Publishing, Switzerland, 2016

Fig.1 XbarSim: Memristor device model configuration window.

The user has the ability to separately interact and experiment with the device model through the model configuration window shown in Fig. 1. The window is activated via the menu Options in the menu bar of the main window. The left part of the upper panel of this window enables: (i) the adjustment of the model fitting parameters according to the target experimental device that is being simulated, and (ii) the introduction of up to 10% variation for specific device characteristics of cross-point cells (e.g. the boundary memristance values {RON, ROFF} or the switching thresholds {VRESET, VSET}). The values used in this example concern a resistance ratio of two orders of magnitude with RON = 2KOhm and ROFF = 200KOhm, respectively, and a device with overall high resistance change-rate when the applied voltage exceeds the switching thresholds. The user may observe how each one of the supported memristive device cross-point combinations behaves based on the selected parameter value-set (the two memristors forming a particular ASM/APM cross-point configuration are always identical). The provided information includes the current-voltage (I-V) and the memristance-time (R-t) graphs shown in the right upper part of 3 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 the window for a variety of different applied pulsing options, selected through the first row of the lower part of the interface (e.g. sinusoidal, saw-tooth waveform, rectangular or fixed applied voltage). After the selection of the most suitable parameter value-set, the model configuration can be either saved for later use via the Save Configuration button (likewise a previously saved model configuration can be loaded via the Load Configuration button) or be applied to all the memristors of the array via the Apply button. This way the devices are all assumed identical, unless certain variation is introduced for particular model attributes. Closing the window without pressing the Apply button does not change the already stored model parameter values used in simulation. For a detailed study of the operation of ASM/APM crosspoint storage cells and the suitable memristor model parameter values, please refer to either of the following publications: • •

I. Vourkas, and G. Ch. Sirakoulis, “Nano-Crossbar Memories Comprising Parallel/Serial Complementary Memristive Switches,” BioNanoSci., vol. 4, no. 2, pp. 166-179, 2014 I. Vourkas, and G. Ch. Sirakoulis, “Memristive Crossbar-Based Nonvolatile Memory,” in: “Memristor-Based Nanoelectronic Computing Circuits and Architectures,” Chapter 5, pp. 101147 vol. 19 of the series Emergence, Complexity and Computation, Springer International Publishing, Switzerland, 2016

Fig.2 XbarSim: Main window of the simulation tool.

XbarSim permits working with quadratic crossbar arrays (i.e. arrays with equal number of columns and rows) which consist of up to 4096 nodes (i.e. the dimensions can be at most 64×64). This limit for the 4 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 total number of cross-points serves to minimize memory requirements and accelerate the simulation through the GUI-based version of the tool (this limit will be set higher in later versions of this tool). Simulation runtime may differ depending on the processing resources of the end-user personal computer. Therefore, for large numbers of cross-point devices, we suggest first running the simulation for a single step to see how long it takes and then to approximately calculate the total simulation runtime depending on the number of steps defined to be executed. By replacing certain nodes of the quadratic array with insulating junctions the user may also indirectly define the desired dimensions of the target non-quadratic array; e.g. by defining a 32×32 array with all the nodes of the last 16 rows being insulated, then a 16×32 array is practically simulated. The provided options for the initialization of the crossbar array are found in the right part of the upper panel of the main window, shown in Fig. 2, and include: (i) the total number of cross-points, (ii) the type of the cross-point devices, and (iii) the initial state (resistive state) of the devices, with the latter being either common for the entire array or assigned randomly according to a given probability. Nevertheless, any cross-point can be also selected by clicking on the matrix-like 2-D representation of the crossbar (e.g. the node marked red) and then be configured independently according to the options given in the last row (at the bottom) of the main window. For ASM/APM switches the memristance values of the two connected memristors (Mem 1 and Mem 2) can be separately adjusted. During simulation, the available operations include: (i) reading from, and (ii) writing to (programming) the target cross-point devices. Such operations concern a single cross-point device per access operation. The access operation is completed by selecting the Run Simulation option of the Simulation menu. Next, a new window pops up, shown in Fig. 3, where the user inserts the necessary variable values for the selected operation. This snapshot concerns a write operation, so the series pull up resistor has by default a very small value.

Fig.3 XbarSim: Access operation options window.

However, a series of access operations can be assigned to XbarSim to be executed sequentially through a simulation configuration input batch file. Such file includes the number and type of operations to be executed, as well as the array-initialization settings which are primarily defined inside the file. The array is initialized only once, so every subsequent access operation uses the output of the last simulation, hence making possible the study of the array performance in time. After defining the total number of cross-points in the array, you may create a sample simulation configuration file via the last option in the Simulation menu in the menu bar. An example of such file is shown in Fig. 4.

5 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015

Fig. 4 XbarSim: Sample configuration simulation batch file for a 3×3 crossbar array of FPMs all initialized at state ‘1’.

In this example file, in the first lines we define the type (Type_of_Device) and the initial state (Initial_State) of nine (IDs: 0 - 8) cross-point devices. Next follows the total number of access operations to be executed (here only 2), and the file is concluded with the description of every access operation in detail. The lines starting with ‘;’ are command lines and are followed by the necessary information until the sign ‘|’ is found. Lines 1, 11, and 12 here contain default comments which facilitate understanding of the information and the way the file should be filled in. We suggest not modifying the comments as the tool will expect to read this specific format and a predefined number of lines (especially, never include chars such as [ ; : , | ] as they are found in the command lines). Here both access operations concern reading the node with ID: 0 (the top left node) using a series resistor of 2KOhm, with a 1.5V pulse applied for 0.001s when the simulation step dt is also defined to be 0.001. Generally, when preparing either the memristor model description file or the simulation batch file, be sure to follow exactly the given format (e.g. do not include spaces wherever they do not exist, use dot to separate decimal points in floating point numbers, etc.) to avoid reading errors. As far as the available accessing schemes are concerned, XbarSim models two different options for the crossbar wires that are not immediately connected to the accessed cross-point where voltage (VM) and ground (GND) are applied: (i) the floating array scheme, where all the wires are left floating; (ii) the VM/2 scheme, where additional sources (hereinafter also called as “protecting sources”) of amplitude equal to VM/2 are connected to all the wires. The latter scheme assures that the voltage drop on the rest of the cross-point devices will be at most equal to VM/2, hence it addresses better the interference issue concerning the devices that are not accessed during each operation. This is of course more important during programming operations because of the high voltages that are applied in order to change the state of particular cross-point elements. The VM/2 accessing scheme can be activated through the Options menu in the menu bar of the main window, otherwise the floating array scheme is used. Moreover, XbarSim provides the opportunity to experiment with alternative crossbar patterns/topologies which combine memristive devices along with insulated nodes within the same array, where the latter are distributed either according to particular patterns or in a custom-wise manner. Depending on the applied topology, a subset of the total array cross-points are set as high-resistance connections (insulators) in order to address the inherent current sneak-path problem of floating crossbar grids by significantly improving the measured read voltage margins. However, the provided option to 6 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 selectively set any cross-point as typical resistor of constant value (adjustable through the tool’s Options menu) permits: (i) the simulation of cross-point defects within the array (e.g. stack-at-ON/OFF cases, etc.), as well as (ii) the study of different circuit topologies which combine the variety of the provided memristive structures, mapped on the crossbar architecture. You may choose the type of the desired pattern to be applied and the density of the insulating cross-points in the array (marked in black color). In order to cancel an applied pattern, the user may re-initialize the type of the devices of the array via the main window buttons or via a simulation configuration batch file. For a complete study of the respective alternative crossbar topologies and their effect on the sneak path currents, please refer to either of the following publications: • •

I. Vourkas, D. Stathis, G. Ch. Sirakoulis, and S. Hamdioui, “Alternative Architectures towards Reliable Memristive Crossbar Memories,” IEEE Trans. VLSI Syst. (2015), in press I. Vourkas, and G. Ch. Sirakoulis, “Memristive Crossbar-Based Nonvolatile Memory,” in: “Memristor-Based Nanoelectronic Computing Circuits and Architectures,” Chapter 5, pp. 101147 vol. 19 of the series Emergence, Complexity and Computation, Springer International Publishing, Switzerland, 2016

GUI-based simulation procedure According to the used device model, memristors demonstrate threshold-type response; they comply with a set of adjustable voltage thresholds for the SET and RESET operations meaning that there is negligible change induced to their memristance if the magnitude of the applied voltage remains below them. During simulation, a certain voltage pulse of user-defined amplitude and duration is applied in order to write to (i.e. to program) a particular cross-point. In XbarSim ‘0’ and ‘1’ correspond to RON and ROFF, respectively, when typical memristive cross-points are concerned. However, depending on whether the cross-point cell is a FPM or a RPM, the polarity of the programming pulse should be different; e.g. writing ‘0’ to a FPM (RPM) requires a positive (negative) voltage. Therefore, depending on the device orientation and/or the data to be written, the correct polarity of the applied pulse is set automatically by the program to avoid confusion. Likewise, reading the state of a device is performed via a pull-up series resistor (RPU) by applying a user-defined voltage pulse whose amplitude is normally set below the programming thresholds (here the applied voltage is by default positive). The RPU value is also set by the user. In order to perform correct read operations, the optimal RPU value is generally close to the less resistive state of the cross-point device type (i.e. RPU = RON for typical memristive cross-points, RPU = 2×RON for ASM, and RPU = RON/2 for APM switches, respectively). The time-evolution of the entire array during simulation can be optionally saved in a simulation log file after checking the “Keep log of the entire array state” checkbox at the top right side of the main window, whereas information regarding up to four defined cross-points of interest can be demonstrated graphically through R-t and V-t graphs, as shown in Fig. 5.

7 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015

Fig. 5 XbarSim: v-t and R-t output graphs in output window of the simulation tool.

Fig. 6 XbarSim: 2-D colormap representation of resistive state in output window of the simulation tool.

8 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 The output window is shown automatically after the simulation is completed successfully. If closed, it can be activated again via the View Output choice in the Options menu. The above set of cross-points can be changed between consecutive simulations, whereas information from each subsequent access operation is appended (concatenated) to the existing output graphs, unless the user resets the simulation output trails via the corresponding selection in the Options menu. Furthermore, the composite resistive state of the array is schematically shown using a 2-D color-map representation to denote different resistance values of the memristive cross-points, as shown in Fig. 6. This graphical output is found in a separate panel in the same Output window. The correspondence of the equivalent node resistance to a particular color value between 0 – 255, is done in the following way: for every cross-point the assigned color reflects the ratio of the current node resistance value and the max resistance of this particular node. Min and max memristance values are common when all cross-point devices are identical. However, in case of having simultaneously both single memristors and composite memristive switches as cross-point devices in the array, the min and max memristances are device-dependent and may be different for different crosspoints. If the time-evolution of the entire array is not required, the current state of the array (i.e. the specific simulation time along with node-specific information such as device-type, resistance value, etc.) may be saved in a file via the “Save current grid state” option in the Simulation menu. Similarly, an XbarSim simulation file, which contains the current values of the entire set of variables of the tool, can be created at any time; simulation may continue exactly from the particular stored point if a simulation file is loaded. The format of this file however depends on the EJS environment used to develop the XbarSim tool, and we recommend not modifying manually its content. Simulation info – crossbar network nodal analysis Generally, in each simulation step the tool takes into account the current resistive state of the array and resolves the resistive crossbar network in order to calculate the voltage drop on each memristive crosspoint. Crossbar nanowire resistance is not taken into consideration. Then the memristor model is employed to compute the memristance evolution by numerically solving all differential equations using a 4th order Runge-Kutta integration method as implemented in EJS. Given the large size of the crossbar arrays supported by XbarSim, a systematic extension of the usual node-voltage analysis method was performed so as to convert all necessary equations to a more process-appropriate form using matrices. Matrices are used both to describe the topological properties of the resistive circuit as well as for the input/output variables of the equations. Analysis of the circuit is then performed by using linear algebra and graph theory. For a particular circuit we calculate the corresponding directed graph which demonstrates both the overall interconnection and the internal structure of the memristive network (i.e. type and orientation of devices). For more information you are kindly requested to refer to the following publication: •

Vourkas, D. Stathis, and G. Ch. Sirakoulis, “XbarSim: An Educational Simulation Tool for Memristive Crossbar-Based Circuits,” 2015 IEEE Int. Symp. Circ. Syst. (ISCAS), Lisbon, Portugal, May 24-27, pp. 1798 – 1801

9 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 All matrices involved in linear algebra computations within XbarSim use the Linear Algebra for Java (LA4J) open source library. The computational complexity of the system of equations depends on the number of cross-point devices; hence the simulator suffers from significant slowdown as the number of cross-points (i.e. the size of the crossbar) increases. However, LA4J enables computations using sparse matrices, so the computation complexity may be somewhat improved using sparse matrix techniques since the majority of the matrices within XbarSim contain a large number of zeros. In the GUI-based version of XbarSim presented, the type of matrices used is user-defined and sparse matrices facilitate memory saving when large crossbar arrays are being simulated (using sparse matrices is currently unavailable in this version of XbarSim). Simulation example Next we present a short example of using XbarSim. First we open the model configuration window. In our case we assume applying the same model parameter values shown in Fig. 1. So, through the Preview Simulation Configuration options we select “4. Fixed Pulse” for the applied voltage type and set the amplitude at 1.5V. We press the Preview button and watch the time it took the memristor to switch completely its state from HIGH to LOW resistance. We change the pulse duration from 1.0s to 0.1s to see the R-t graph in more detail and notice that duration of 0.07s is enough for the programming voltage pulses. Hence, the programming pulses should have this duration so as to correctly program the memristors. We then press the Apply button and return to the main window. We set the number of cross-points to e.g. 25 (for a 5×5 array), we click (or better DOUBLE click to be sure) on the All FPM button to have an array of forward polarized memristors (FPMs), and the All zeros(s) button to set them all to ‘0’ logic state. We may click on any cross-point and confirm that its memristance is set to the minimum value by looking at the respective glider position on the bottom left part of the main window. However, if we wish to initialize the array randomly, we simply check the corresponding checkbox and select the desired probability via the glider that shows up in the same place. Through the Access operation options we may choose the operation to perform and the target crosspoint ID. Cross-points are numbered sequentially in a row-wise manner, starting from 0 (e.g. here the first row contains the nodes 0 through 4, the second row the nodes 5 through 9, and so on). We can also select the number of nodes of interest for which we wish to see graph details in the Output window. As said before, we may select any access operation applied to any cross-point and run a single step of simulation just to figure out the time duration (ms) corresponding to a simulation step dt. Anyway, now we will choose to execute a batch simulation file, so we do not make any change to the aforementioned Access operation options but rather go to the Simulation menu and create a sample batch file, which we then fill as shown in Fig. 7. We make no changes to the first part where we notice the array initialization which we made previously via the main window. In our example we wish to perform 9 access operations to write ‘1’ to the nodes with IDs: 2, 6, 8, 10, 12, 14, 16, 18, and 22. We use the write pulse options which we figured out at the beginning via the model configuration window and use a very small resistance value for the resistor connected in series to the voltage source (for write operations this value is omitted by XbarSim as a very small value is used by default. However, an optimal resistance should be used when reading the 10 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015 state of the devices and then this resistance value is stored and used by the XbarSim). We save the changes made to this file and then, via the Simulation menu we select to run a batch simulation file. During the simulation, we will see a “Running Simulation…” notification on the bottom of the main window. When simulation is completed, we get an alert on a pop-up window informing us about the total simulation time.

Fig. 7 XbarSim: Sample simulation batch file for this simulation case.

The resistive state of the array is given in the 2-D array representation included in the Output window, shown in Fig. 8. In case we had selected some nodes of interest via the main window, we would see the details regarding their resistance evolution and the voltage drop on them during the entire simulation. Of course, if we select at the beginning to keep log of the entire array state during simulation in a separate file, then we may have access to the simulation details regarding all the cross-points of the array. At this point, however, we can save the current grid state via the corresponding option in the Simulation menu and see the final state of the array, after simulation is over. A snapshot of this file is given in Fig. 9.

11 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.

XbarSim v.1.0.0 (20150905) documentation file – last updated: 05/09/2015

Fig. 8 XbarSim: 2-D colormap representation of the final resistive state after the conducted simulations.

Fig. 9 XbarSim: Sample of a file describing the stored current array state.

12 Copyright © Ioannis Vourkas, Dimitrios Stathis, Georgios Ch. Sirakoulis 2015. All rights reserved.