metadata
license: mit
tags:
- pytorch
- safetensors
- threshold-logic
- neuromorphic
- arithmetic
- adder
threshold-carrysave-adder
4-bit carry-save adder (CSA) as threshold circuit. Adds three 4-bit numbers producing a sum and carry vector, with no carry propagation delay.
Circuit
A[3:0] βββ
B[3:0] βββΌβββΊ CSA βββ¬βββΊ S[3:0] (sum)
C[3:0] βββ ββββΊ Cout[3:0] (carry)
Final result: A + B + C = S + (Cout << 1)
How It Works
Each bit position computed independently (no ripple):
S[i] = A[i] XOR B[i] XOR C[i]
Cout[i] = MAJ(A[i], B[i], C[i])
The carry vector is shifted left by 1 before final addition.
Truth Table (per bit)
| A | B | C | S | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Architecture
| Component | Count | Neurons |
|---|---|---|
| XOR3 (sum) | 4 | 28 |
| MAJ3 (carry) | 4 | 4 |
Total: 32 neurons, 256 parameters, 3 layers
Applications
CSAs are fundamental building blocks in:
- Fast multipliers (Wallace trees, Dadda trees)
- Multi-operand addition
- DSP circuits
- Reducing 3 operands to 2 without carry propagation
Usage
from safetensors.torch import load_file
w = load_file('model.safetensors')
# Example: 15 + 15 + 15 = 45
# S = 13 (1101), Cout = 7 (0111)
# Result = 13 + (7 << 1) = 13 + 14 = 27... wait
# Actually: S + 2*Cout = 13 + 14 = 27, but need final adder
# CSA output needs one final ripple-carry add
Files
threshold-carrysave-adder/
βββ model.safetensors
βββ create_safetensors.py
βββ config.json
βββ README.md
License
MIT