Papers
Topics
Authors
Recent
Search
2000 character limit reached

PipeSDFA: Co-Designed SNN Training Accelerator

Updated 7 July 2026
  • The paper introduces PipeSDFA, integrating Spiking Direct Feedback Alignment with a pipelined RRAM in-memory computing accelerator to enable efficient on-device SNN training without weight transposes.
  • It leverages a Timestep–Data–Batch three-level pipeline that decouples error propagation across layers and timesteps, drastically reducing memory traffic and buffer requirements.
  • Evaluations on neuromorphic datasets show under 2% accuracy loss compared to backpropagation, with training time reductions up to 10.5X and energy savings up to 2.1X.

Searching arXiv for PipeSDFA and closely related references to ground the article in the cited literature. PipeSDFA is a full algorithm–hardware co-design for on-device training of Spiking Neural Networks (SNNs) on Resistive Random Access Memory (RRAM)-based In-Memory Computing (IMC) accelerators. It combines a training algorithm, Spiking Direct Feedback Alignment (SDFA), with a pipelined RRAM IMC accelerator whose dataflow is shaped to SDFA’s properties. The design addresses non-differentiable spikes, temporal dynamics, layer-wise sequential error propagation, and edge constraints by replacing weight-transpose-based backpropagation with fixed random feedback matrices and by introducing a Timestep–Data–Batch three-level pipeline. In the reported evaluation, the PipeSDFA training accelerator incurs less than 2% accuracy loss on five datasets compared to baselines, while achieving 1.1X~10.5X and 1.37X~2.1X reductions in training time and energy consumption, respectively compared to PipeLayer (Ren et al., 21 Jul 2025).

1. Definition and problem setting

PipeSDFA is situated in the problem of training SNNs on resource-constrained edge devices. The motivating difficulties are fourfold: non-differentiable spikes, temporal dynamics, layer-wise sequential error propagation, and edge constraints. Standard backpropagation cannot directly differentiate through the spike firing function; surrogate gradients are used, complicating computation. SNNs also unroll over timesteps, so gradients must be accumulated across time, causing large memory footprints for membrane potentials, spikes, and intermediate activations for each layer and timestep. Conventional backpropagation further requires transpose reads or extra hardware to access WlTW_l^T, enforces strict serialization of error flow through backward locking, and leads to complex buffer lifetimes and memory management. On edge devices, limited on-chip memory and energy restrict batch size and precision, making GPU-like training or large batched backpropagation impractical (Ren et al., 21 Jul 2025).

Within that setting, PipeLayer is the immediate prior baseline. PipeLayer exploits pipelining and parallelism but is built around backpropagation, and it loses much of its advantage when batch size is small and when the temporal dimension is large in the SNN case. PipeSDFA addresses these issues by co-designing an algorithm and an accelerator: SDFA uses fixed random feedback matrices instead of weight transposes, decouples error propagation from layer and time dependencies, and reduces temporal dimension in error computation by reusing the same feedback projection at all timesteps; the hardware then exploits those properties with a three-level pipelined dataflow based on an RRAM IMC architecture (Ren et al., 21 Jul 2025).

2. SDFA as the algorithmic basis

The forward model uses standard Integrate-and-Fire (IF) and Leaky Integrate-and-Fire (LIF) neurons. The continuous-time LIF dynamics are written as

CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,

with spike emission and reset behavior

Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}

In the discretized forward pass, layer ll at timestep tt is

hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).

The loss is cross-entropy on the time-averaged output: hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},

L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).

The contrast with conventional backpropagation is central. For ANN BP, the hidden-layer error is

δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.

Direct Feedback Alignment removes both the weight transpose and the layer-wise backward chain: δl=(BlδL)f(hl),\delta_l = \left( B_l \delta_L \right) \odot f^{\prime}(h_l), where CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,0 is random and fixed during training. SDFA adapts this idea specifically to SNNs with two critical modifications: feedback matrices sized independent of timesteps, and temporal reuse of the same feedback projection across timesteps.

For each layer CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,1, the feedback matrix is defined as

CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,2

For convolutional layers, instead of making CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,3 connect to every timestep, SDFA drops CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,4 and CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,5, so

CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,6

The matrices are initialized from a Gaussian distribution,

CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,7

with CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,8 typically 1.

The SDFA backward rule is

CdVmem(t)dt=IextIL,C \frac{dV_{\text{mem}}(t)}{dt} = I_{\text{ext}} - I_L,9

Its important properties are direct feedback, because hidden layers use only Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}0 and local activity; time decoupling, because Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}1 does not depend on timestep Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}2; and surrogate gradients, because Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}3 approximates the spike derivative. Gradient accumulation is then performed as

Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}4

followed after all timesteps by

Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}5

This structure eliminates sequential error propagation, removes the need for Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}6, and reuses the same projected error at all timesteps (Ren et al., 21 Jul 2025).

3. Hardware organization and three-level pipelined dataflow

The accelerator is built around RRAM crossbar arrays for in-memory vector–matrix multiplication. At the architecture level, PipeSDFA contains a Forward Core, an Error Propagation Core, a Backward Core, and buffers. The Forward Core performs spike-based forward computation across layers and stores layer weights in crossbar arrays. The Error Propagation Core implements SDFA’s direct feedback by multiplying Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}7 with fixed random feedback matrices Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}8, without transpose operations. The Backward Core takes Vout(t)={1,Vmem(t)Vth 0,otherwise.V_{\text{out}}(t) = \begin{cases} 1, & V_{\text{mem}}(t) \ge V_{\text{th}} \ 0, & \text{otherwise}. \end{cases}9 and ll0 from Data Buffers and Error Buffers to compute and accumulate ll1 and ll2, and performs weight updates after ll3 timesteps or batch accumulation. Data Buffers hold intermediate activations ll4 across timesteps, and Error Buffers hold error signals and gradients during backward (Ren et al., 21 Jul 2025).

At the tile level, each tile has multiple PE cores, each PE contains several RRAM crossbars plus peripheral circuits, and a NoC connects tiles and global buffers. At the PE level, each PE has ll5 RRAM arrays. Each synapse uses 2 RRAM cells to implement a 4-bit weight, with 2 bits per cell. PipeSDFA extends VW-SDK mapping to SNNs, using flexible rectangular windows such as ll6 and ll7 to match the spatial layout of feature maps and the available crossbar array geometry. The total compute cycles for a mapped layer are

ll8

The defining execution strategy is the Timestep–Data–Batch three-level pipeline. At timestep level, SDFA backward computes ll9 once for the output, computes tt0 per layer once, and reuses it for all timesteps, so the first layer’s gradient can start accumulating immediately. At data level, new data can enter the pipeline every 2 cycles in the example where each sample has 2 timesteps. At batch level, weight update of batch tt1 overlaps with forward and error computations for batch tt2. The cycle-count comparison is explicit. PipeLayer without pipeline has

tt3

PipeLayer with pipeline has

tt4

and PipeSDFA has

tt5

Because SDFA factors out tt6 from error projection and decouples layer dependencies, the scaling is more favorable than PipeLayer when tt7 and batch size are moderate or small (Ren et al., 21 Jul 2025).

4. Algorithm–hardware co-design mechanisms

The principal significance of PipeSDFA is not only that it replaces backpropagation with DFA-style feedback, but that the accelerator is explicitly shaped to the algorithm’s dependency structure. No weights transpose in SDFA means no transpose circuitry. This avoids special drivers or sense amplifiers for transpose-read of crossbars, avoids doubling array power and area as in transpose-enabled SRAM and DRAM Compute-in-Memory designs, and simplifies peripheral circuits and control logic.

Direct feedback and layer independence simplify control and buffer management. In BP-based PipeLayer, earlier layers must keep their activations for much longer, and the required buffer length at layer tt8 is tt9. In PipeSDFA, error computation can be scheduled in a first-allocate-first-release manner, so all layers can use the same buffer size hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).0. This reduces on-chip memory traffic because activations do not need to be kept for long sequences of backward stages.

Temporal reuse of feedback reduces both storage and computation. PipeSDFA computes hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).1 once per layer per batch and reuses it across all timesteps, rather than storing an error vector per timestep per layer. RRAM stochasticity is also used directly for feedback matrices: Monte Carlo simulation of resistance programming showed a Gaussian-like distribution of programmed resistances around a target such as 10 khlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).2, and the resistance range is discretized so each cell encodes a 2-bit value. By combining cells appropriately, the design obtains random feedback weights with Gaussian statistics and programs them once, after which they remain fixed throughout training. The paper further reports that SDFA remains accurate with 4-bit quantization, which enables the 2-cells-per-synapse, 2-bits-per-cell mapping. Event-driven SNN activations are not explicitly exploited as sparsity gating, but a plausible implication is that spike sparsity synergizes with the temporal pipeline to reduce energy (Ren et al., 21 Jul 2025).

5. Accuracy, speed, and energy characteristics

The evaluation covers five neuromorphic datasets: N-MNIST, SHD, Braille letter, DVS-Gesture, and N-Caltech101. The models include MLP-A, MLP-B, MLP-C, and MLP-D with IF or LIF neurons, as well as a ConvNet with hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).3Conv hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).4FC and VGG11 with hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).5Conv hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).6FC. On N-MNIST, SHD, and Braille letter, SDFA stays within a hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).7 gap of BP. For example, on N-MNIST with LIF neurons, MLP-A reports BP hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).8 and SDFA hlt=fl(Wlhl1t+bl).h_l^t = f_l(W_l h_{l-1}^t + b_l).9, MLP-B reports BP hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},0 and SDFA hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},1, MLP-C reports BP hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},2 and SDFA hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},3, and MLP-D reports BP hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},4 and SDFA hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},5. On SHD with IF neurons and MLP-B, BP is hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},6 and SDFA is hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},7. On Braille letter with IF neurons and MLP-B, BP is hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},8 and SDFA is hL=t=1ThLtT,h_L = \frac{\sum_{t=1}^T h_L^t}{T},9 (Ren et al., 21 Jul 2025).

On deeper ConvNets and more complex datasets, SDFA can match or exceed BP. On DVS-Gesture, ConvNet reports BP L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).0 and SDFA L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).1, while VGG11 reports BP L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).2 and SDFA L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).3. On N-Caltech101 with VGG11, BP is L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).4 and SDFA is L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).5. The paper notes that SDFA can match or even exceed BP on several neuromorphic datasets, likely due to regularization effects of random feedback. Convergence on DVS-Gesture with ConvNet is slower and more fluctuating than BP, but reaches comparable accuracy by about 150 epochs. Larger hidden size improves accuracy, increasing timesteps up to a point such as 25 improves accuracy and beyond that may slightly degrade it, and SDFA is robust across a wide range of L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).6.

The performance gains relative to PipeLayer are largest when batch size is small. Speedup figures show L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).7–L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).8 acceleration. For L=1Ni=1Nc=1Cyiclog(y^ic).\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic}\log(\hat{y}_{ic}).9, δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.0, and batch size 1, the speedup is about δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.1 versus PipeLayer; for δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.2, the same δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.3, and batch size 1, the speedup is about δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.4. At realistic small batch sizes δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.5, PipeSDFA never drops below about δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.6 speedup. VW-SDK mapping gives notable speedups for ConvNet convolutional layers on δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.7 arrays and for the entire ConvNet network. In quantization studies, all five network structures maintain good accuracy at δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.8 bits, and at 4-bit network precision even ConvNet retains around δl=(WlTδl+1)f(hl),l=1,,L1.\delta_l = \left( W_l^T \delta_{l+1} \right) \odot f^{\prime}(h_l), \quad l = 1,\dots,L-1.9 accuracy. Energy consumption is reduced by δl=(BlδL)f(hl),\delta_l = \left( B_l \delta_L \right) \odot f^{\prime}(h_l),0–δl=(BlδL)f(hl),\delta_l = \left( B_l \delta_L \right) \odot f^{\prime}(h_l),1 versus PipeLayer, with savings coming predominantly from the more efficient backward pass, simpler buffers, and reduced memory traffic due to SDFA’s decoupling (Ren et al., 21 Jul 2025).

6. Limitations, trade-offs, and terminological scope

PipeSDFA retains the approximation character of DFA-type methods. The paper states that, while SDFA is usually within a 2% gap and sometimes better than BP, pure DFA-type methods are approximate, lack exact gradient alignment, and on some tasks may limit best achievable accuracy versus full BPTT. The study covers MLPs and VGG11-level ConvNets, but does not explore very deep SNNs such as 50+ layers or very large-scale networks. Feedback matrices must be stored for each layer, so extremely deep networks still incur storage cost for δl=(BlδL)f(hl),\delta_l = \left( B_l \delta_L \right) \odot f^{\prime}(h_l),2. The work is also at architecture plus cycle-accurate simulation level; no fabricated chip metrics such as δl=(BlδL)f(hl),\delta_l = \left( B_l \delta_L \right) \odot f^{\prime}(h_l),3, mW, or GHz are provided, and technology node and detailed power breakdown are not given (Ren et al., 21 Jul 2025).

Within the literature provided here, the term “PipeSDFA” has a specific primary meaning: the RRAM-based IMC training accelerator paired with Spiking Direct Feedback Alignment (Ren et al., 21 Jul 2025). Separate papers use “PipeSDFA-like” or “PipeSDFA-type” only as explanatory shorthand in other domains, including pipeline-based speculative decoding (Yu et al., 29 May 2026) and pipe-network simulation or uncertainty-quantification frameworks (Redle et al., 2024, Tokareva et al., 2022). This suggests that the acronym has acquired some informal descriptive use outside its original neuromorphic-training context, but the published method named PipeSDFA is the SNN algorithm–hardware co-design introduced for neuromorphic edge computing (Ren et al., 21 Jul 2025).

7. Position in the neuromorphic training landscape

In the broader landscape of neuromorphic training accelerators, many systems focus on inference-only SNNs trained offline. On-chip training is less common and typically uses STDP, surrogate-gradient backpropagation, ANN-to-SNN conversion, or DFA-based or local learning schemes that remain algorithmic prototypes. PipeSDFA is differentiated by combining an SNN-specific DFA variant with an IMC accelerator, using RRAM for both forward weights and feedback matrices, and introducing a Timestep–Data–Batch three-level pipeline that works efficiently at small batch sizes. The work’s distinctive claim is therefore full-stack co-design: the SDFA algorithm is shaped for SNN temporal dynamics and hardware-friendliness, and the PipeSDFA architecture is tailored to SDFA assumptions (Ren et al., 21 Jul 2025).

That combination has two broader implications. First, PipeSDFA reframes SNN training efficiency around dependency elimination rather than only around faster matrix multiplication. Second, it shows that approximate learning rules such as DFA can become significantly more compelling when the hardware directly monetizes their structural simplifications. Future directions identified implicitly in the paper include extending SDFA to larger or more diverse datasets, recurrent SNNs or liquid state machines, exploiting spike sparsity more aggressively through event-driven gating or zero-skipping, supporting learnable feedback rather than fixed feedback, and integrating hybrid BP/DFA or local learning paradigms. In that sense, PipeSDFA is best understood as a reference design for algorithm–hardware co-optimization of online SNN training under stringent edge constraints (Ren et al., 21 Jul 2025).

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to PipeSDFA.