Design a Black-Scholes option Greeks calculator computing Delta, Gamma, and Theta.

Module name: greeks_bundle
Parameters:
  - WIDTH = 32       // Total bit width
  - FRAC  = 16       // Fractional bits (Q16.16 fixed-point)

Ports:
  - input                        clk
  - input                        rst_n        // Active-low synchronous reset
  - input  signed [WIDTH-1:0]    spot_price   // S: spot price (Q16.16)
  - input  signed [WIDTH-1:0]    strike_price // K: strike price (Q16.16)
  - input  signed [WIDTH-1:0]    time_to_expiry // T: time to expiry in years (Q16.16)
  - input  signed [WIDTH-1:0]    volatility   // sigma: annualized volatility (Q16.16)
  - input  signed [WIDTH-1:0]    risk_free_rate // r: risk-free rate (Q16.16)
  - input                        valid_in     // Asserts for one cycle with new inputs
  - output signed [WIDTH-1:0]    delta        // N(d1), range 0 to 1.0 (Q16.16)
  - output signed [WIDTH-1:0]    gamma        // n(d1)/(S*sigma*sqrt(T)) (Q16.16)
  - output signed [WIDTH-1:0]    theta        // annualized theta, negative (Q16.16 signed)
  - output                       valid_out    // Asserts for one cycle when result is ready

Functional specification:
  - Computes three Black-Scholes Greeks sharing intermediate calculations:
    d1 = (ln(S/K) + (r + sigma^2/2)*T) / (sigma * sqrt(T))
    d2 = d1 - sigma * sqrt(T)
    n(x) = exp(-x^2/2) / sqrt(2*pi)   [standard normal PDF]
    N(x) = cumulative standard normal  [CDF, Abramowitz & Stegun]

    Delta = N(d1)
    Gamma = n(d1) / (S * sigma * sqrt(T))
    Theta = -(S * n(d1) * sigma) / (2 * sqrt(T)) - r * K * exp(-r*T) * N(d2)

  - Uses same approximations as BS_CALL_PRICE for ln, sqrt, exp, N(x)
  - Shares intermediates d1, d2, n(d1), N(d1), N(d2), sqrt(T), exp(-rT) across Greeks
  - Sequential, multi-cycle computation
  - All arithmetic in signed Q16.16 fixed-point

Knobs:
  - WIDTH: [24, 32, 48] — precision vs area tradeoff

Critical IO: valid_in -> valid_out (sequential, ~30-50 cycles)
