Design an order rate limiter using a token bucket algorithm.

Module name: rate_limit
Parameters:
  - MAX_TOKENS    = 8    // Maximum token count (bucket capacity)
  - REFILL_CYCLES = 100  // Clock cycles between token refills

Ports:
  - input  clk, rst_n
  - input  request       // A new request is made
  - output allow         // Request is allowed (tokens available)

Functional specification:
  - Maintains a token counter, initialized to MAX_TOKENS on reset
  - Each request (when request=1) consumes 1 token if available
  - allow = 1 when request is asserted AND tokens > 0
  - Every REFILL_CYCLES clock cycles, one token is added (up to MAX_TOKENS)
  - Refill timer counts continuously from reset
  - If request consumes a token on the same cycle as a refill, both happen
    (consume first, then refill, net effect: token count unchanged)
