\n
## Diagram: Programming Circuit and Weight Error Analysis
### Overview
The image presents a schematic diagram of a programming circuit for memory devices, alongside a flowchart illustrating a weight polarity selection process, and a graph showing weight error analysis for different programming strategies. The diagram appears to relate to analog weight storage using memory cells, likely for neuromorphic computing applications.
### Components/Axes
**Part a (Programming Circuit):**
* **Labels:** "Programming Circuit", "PWM Circuit", "ADC Left", "ADC Right", "Diagonal Selection", "GND", "I<sub>prog</sub>", "BL+", "BL-", "SEL", "SE".
* **Components:** An array of memory cells arranged in a grid. The cells are connected to programming circuitry (I<sub>prog</sub>) and Analog-to-Digital Converters (ADCs) on the left and right. "Diagonal Selection" lines connect to the cells.
* **Flow:** Current (I<sub>prog</sub>) flows from the programming circuit to the memory cells. Signals are read by the ADCs. Diagonal selection appears to control which cells are programmed.
**Part b (Weight Polarity Selection):**
* **Labels:** "Select two devices based on weight polarity", "SET both devices", "Read both devices", "Selection", "Iterative programming", "g<sub>1</sub>", "g<sub>2</sub>", "g<sub>SET</sub>", "g<sub>max</sub>", "g<sub>min</sub>", "G".
* **Flowchart:** A decision-making process based on comparing weight values (g<sub>1</sub>, g<sub>2</sub>) to a target weight (G) and a set value (g<sub>SET</sub>). The flowchart outlines conditions for setting, resetting, and leaving devices unchanged.
* **Equations:**
* g<sub>max</sub> = max(g<sub>1</sub>, g<sub>2</sub><sup>SET</sup>)
* g<sub>min</sub> = min(g<sub>1</sub><sup>SET</sup>, g<sub>2</sub><sup>SET</sup>)
**Part c (Weight Error Analysis):**
* **Axes:**
* X-axis: "Target weight, W" (ranging from approximately -1.0 to 1.0, with increments of 0.1)
* Y-axis: "Weight error (%)" (ranging from approximately 4% to 16%, with increments of 2%)
* **Legend (Top-Right):**
* ODP (Blue Diamonds)
* TDP - Max-fill (Orange Squares)
* TDP - This work (Yellow Triangles)
### Detailed Analysis or Content Details
**Part a (Programming Circuit):**
The circuit consists of multiple identical "Unit cell" blocks. Each unit cell has BL+, BL-, SEL, and SE connections. The diagonal selection lines appear to activate rows of cells. The ADC Left and ADC Right blocks suggest a differential sensing scheme. The PWM circuit likely controls the programming current (I<sub>prog</sub>).
**Part b (Weight Polarity Selection):**
The flowchart describes an iterative programming algorithm. If the maximum weight (g<sub>max</sub>) is less than the target weight (G), both devices are set. If g<sub>max</sub> is greater than G, one device is reset. If g<sub>max</sub> equals G, no further updates are made. The equations define how g<sub>max</sub> and g<sub>min</sub> are calculated based on the individual device weights (g<sub>1</sub>, g<sub>2</sub>) and the set value (g<sub>SET</sub>).
**Part c (Weight Error Analysis):**
* **ODP (Blue Diamonds):** The line starts at approximately ( -1.0, 14%), decreases to approximately (-0.5, 8%), increases to approximately (0.0, 10%), and then decreases to approximately (0.5, 8%), and finally increases to approximately (1.0, 14%).
* **TDP - Max-fill (Orange Squares):** The line starts at approximately (-1.0, 12%), decreases to approximately (-0.5, 6%), increases to approximately (0.0, 8%), and then decreases to approximately (0.5, 6%), and finally increases to approximately (1.0, 12%).
* **TDP - This work (Yellow Triangles):** The line starts at approximately (-1.0, 14%), decreases to approximately (-0.5, 6%), increases to approximately (0.0, 7%), and then decreases to approximately (0.5, 6%), and finally increases to approximately (1.0, 14%).
All three lines exhibit a U-shaped curve, indicating that the weight error is minimized near a target weight of 0 and increases as the target weight moves away from 0 in either direction.
### Key Observations
* The weight error is generally lower for all three methods near a target weight of 0.
* "TDP - This work" and "TDP - Max-fill" show similar performance, with "TDP - Max-fill" having slightly lower error at -0.5 and 0.5.
* ODP has the highest weight error at the extreme target weights (-1.0 and 1.0).
* The iterative programming algorithm in Part b is designed to refine the weights towards the target value.
### Interpretation
The diagram illustrates a system for analog weight storage and programming, potentially for neuromorphic computing. The programming circuit (Part a) provides a mechanism for setting and resetting memory cells. The weight polarity selection algorithm (Part b) ensures that the weights are adjusted iteratively towards the desired target. The weight error analysis (Part c) demonstrates the accuracy of different programming strategies.
The U-shaped error curves suggest that the system has limited dynamic range and that the accuracy degrades as the target weight moves further from the center. The "TDP - Max-fill" strategy appears to offer a slight improvement in accuracy compared to the other methods, particularly near the target weight of 0. The iterative programming approach is crucial for achieving accurate weight storage, as it allows for fine-tuning of the weights based on feedback from the memory devices. The diagonal selection scheme likely helps to reduce interference between adjacent cells during programming. The use of ADCs suggests that the system relies on precise analog-to-digital conversion for weight sensing and control.