CORDIC Linear IP
Linear Mode – Parameter Sensitivity & Accuracy Characterization
1. Configuration Under Test
| Parameter | Value |
|---|---|
| Internal Width (WIDTH) | 32 |
| Iterations (ITER) | 16 |
| Fraction Bits (FRAC) | 30 |
| Mult Output Width | 32 |
| Mult Output Shift | 0 |
| Div Output Width | 32 |
| Div Output Shift | 0 |
| Input Range (a,b) | −0.9 to +0.9 |
2. Error Metrics
- Max Error: Maximum absolute deviation across input sweep
- RMS Error: Root-mean-square error across input sweep
- Reference values computed using double-precision multiplication and division
3. Iteration Count Sweep (Convergence Depth)

| ITER | MULT Max Err | MULT RMS Err | DIV Max Err | DIV RMS Err |
|---|---|---|---|---|
| 4 | 1.125000e-01 | 3.762196e-02 | 4.125000e+00 | 8.769315e-01 |
| 8 | ~7.812e-03 | ~2e-03 | ~4.007813e+00 | ~8.3e-01 |
| 16 | 2.747104e-05 | 9.185982e-06 | 4.000031e+00 | 8.303075e-01 |
Observations
- Multiplication error decreases approximately exponentially with iteration depth
- At ITER = 16, multiplication reaches near full Q2.30 precision
- Division max error remains dominated by saturation behavior
- Division RMS error remains ~0.83–0.88 regardless of iteration count
- Increasing iterations improves precision, but does not fix dynamic range limitation
4. Fraction Bits Sweep (Quantization Sensitivity)

| FRAC_BITS | MULT Behavior | DIV Behavior |
|---|---|---|
| 30 | Near full Q2.30 precision | Saturates at ±2.0 |
Observations
- With Q2.30 format, multiplication error floor is ~1e-5 RMS
- Division output is limited by representable range ±2.0
- Precision beyond convergence depth does not reduce division RMS error
- Division accuracy is structurally range-limited, not precision-limited
5. Internal Width Sweep (Datapath Precision)

| WIDTH | ITER | MULT RMS Err | DIV RMS Err |
|---|---|---|---|
| 32 | 16 | 9.185982e-06 | 8.303075e-01 |
Observations
- WIDTH = 32 provides stable convergence for multiplication
- No observable amplitude distortion in multiplication
- Division remains constrained by Q2.30 saturation limits
- Increasing WIDTH without expanding output format does not improve division
6. Multiplication Output Behavior
6.1 Correct Scaling (Reference)

| OUT_WIDTH | OUT_SHIFT | MULT RMS Err |
|---|---|---|
| 32 | 0 | 9.185982e-06 |
Observations
- Q2.30 × Q2.30 → Q2.30 is numerically stable
- Multiplication error floor consistent with fixed-point rounding
- Behavior is deterministic and well-conditioned
7. Division Accuracy Summary

| Configuration | DIV Max Err | DIV RMS Err | ||
|---|---|---|---|---|
| ITER ≥ 16, Q2.30 Format | 4.000031e+00 | 8.303075e-01 | ||
| ITER = 4 | 4.125000e+00 | 8.769315e-01 | ||
| Large | a/b | (>2.0) | Saturated | Dominant |
Observations
- Division saturates at ±2.0 due to Q2.30 range
- Large absolute errors occur when true quotient exceeds representable range
- Errors up to ~4.0 correspond directly to saturation clipping
- Division is numerically stable within range
- Out-of-range behavior is deterministic and repeatable
8. Key Takeaways (Linear Mode)
- ITER = 16 sufficient for full multiplication convergence
- FRAC_BITS = 30 provides near double-precision-level fixed-point accuracy
- WIDTH = 32 is stable and adequate
- Multiplication is high-accuracy and well-conditioned
- Division accuracy is fundamentally limited by ±2.0 saturation
- Wider output format or dynamic scaling required for high-dynamic-range division
- Linear mode multiplication is production-ready
- Linear mode division requires range management for production use