--- license: mit tags: - pytorch - safetensors - threshold-logic - neuromorphic - arithmetic - adder --- # threshold-carryselect-adder 4-bit carry-select adder as threshold circuit. Faster than ripple-carry by pre-computing results for both possible carry values. ## Circuit ``` A[3:0] ──┐ B[3:0] ──┼──► CSel Adder ──┬──► S[3:0] Cin ──┘ └──► Cout ``` ## How It Works ``` Block 0 (bits 0-1): Ripple-carry with actual Cin └──► produces C1 (carry into bit 2) Block 1 (bits 2-3): Pre-compute BOTH possibilities Path A: assume Cin=0 → S2_0, S3_0, Cout_0 Path B: assume Cin=1 → S2_1, S3_1, Cout_1 Final: MUX selects Path A or B based on C1 ``` ## Timing Advantage ``` Ripple-Carry: [FA0]──►[FA1]──►[FA2]──►[FA3] (4 stages) Carry-Select: [FA0]──►[FA1]──┐ [HA2]──►[FA3] ├──►[MUX] (3 stages) [FA2]──►[FA3]──┘ ``` Block 1 computes in parallel with Block 0. ## Architecture | Component | Count | Neurons | |-----------|-------|---------| | Block 0 (2 FAs) | 2 | 14 | | Block 1 cin=0 (HA+FA) | 2 | 11 | | Block 1 cin=1 (2 FAs) | 2 | 14 | | Output MUXes | 3 | 9 | **Total: 48 neurons, 149 parameters, 4 layers** ## Trade-offs - More neurons than ripple-carry (48 vs ~28) - Faster critical path (3 stages vs 4) - Scales well: 8-bit uses 4x2-bit blocks ## Usage ```python from safetensors.torch import load_file w = load_file('model.safetensors') # All 512 test cases verified (16 × 16 × 2) ``` ## Files ``` threshold-carryselect-adder/ ├── model.safetensors ├── create_safetensors.py ├── config.json └── README.md ``` ## License MIT