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)

Iteration Sweep

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)

Fraction 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 Sweep

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)

Baseline Multiplication

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

Division Quantization

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