Does block floating point fix the 16-bit FFT scaling problem in an always-on MFCC front end?
research/accel-frontendbfp
A shared data-chosen exponent for the 16-bit FFT in accel-frontend's MFCC path cuts cepstral error to 0.016 to 0.081 of the spread at -60 to -30 dBFS (one shift per stage: 0.35 to 0.72) for about +0.5% modelled energy, but no better than 18 to 20-bit fixed schedules on loud input (synthetic frames, no Speech Commands)
What it found
accel-frontend found that fixed per-stage FFT shifts in a 16-bit word either floor quiet speech or overflow loud speech. This project gives the 256-point complex FFT one shared exponent chosen from the data: the block is scaled up to the largest peak a butterfly stage can take (13,573, from the (1 + √2) growth bound) and shifted down by 1 after a stage only when needed. Stored words stay within 16 bits (largest 27,770 over all runs), the butterfly adder needs 17. On the same synthetic voiced frames with a −61 dBFS microphone floor (40 frames per point), cepstral error as a share of cepstral spread is 0.081, 0.060, 0.032 and 0.016 at −60, −50, −40 and −30 dBFS, against 0.715, 0.662, 0.533 and 0.351 for one shift per stage and 0.236, 0.198, 0.120 and 0.051 for a 2-shift schedule that needs 11 to 16-bit adders. At −20 dBFS and above it is about 0.012 to 0.017, no better than fixed schedules that use 18 to 20 bits (0.002 to 0.014): 16-bit rounding sets a floor near 0.01 of the spread. The exponent logic adds 4,608 adds per frame (11,009 to 15,617) and no multiplies, about 0.5% of the front end's modelled energy under accel-frontend's 45 nm constants. Preliminary: those constants were typed from memory of Horowitz (2014) and not re-checked; the audio is synthetic (Speech Commands unreachable), so the metric is cepstral distortion and no keyword accuracy is measured.
A figure from its own output

Paper, code and results
More in Task-specific AI accelerators
- Do the accel-* energy constants match Horowitz (2014), and does fixing the array-size term change accel-kws's conclusions?All 34 energy constants in the accel-* projects that have a counterpart in Horowitz's Fig. 1.1.9 are within 4% of it; re-costing accel-kws with the figure's array-size law (energy about the square root of size) moves energy to 0.23 to 0.81 of as built but keeps 17 of 18 front designs (Spearman 0.991)
- Does weight-sharing lookup-table inference beat an int8 MAC engine once small arrays cost less to read?Pricing every array by its own size flips accel-lut's negative result once read energy grows faster than size^0.26 (dense) or size^0.28 (pruned); Horowitz's slope is 0.5 above 8 KB but there is no point below it, so the verdict is conditional
- Is the OpenRAM access energy in SKY130 liberty files an energy at all, and does accel-pdkprice's weight-stationary verdict survive?OpenRAM's clk0 figure is an average power in mW over one cycle of an unstated period, not pJ: the unpacked verdict (register-file WS wins) holds for any period above 3 ns, while the packed verdict flips between 1 and 31 ns, so accel-pdkprice's packed conclusion is conditional
- Once the MFCC front end is counted, does the energy-optimal keyword model change?Joining accel-cascade's committed results with accel-frontend's 46.8 nJ per frame: cascades' classifier-only saving of up to 28% becomes at most 0.42% of whole-system energy, while the most accurate model (about 0.75 test accuracy) costs 23 to 26 times the cheapest classifier but only 5% more system energy (modelled, not measured)
- How big a keyword-spotting model fits a real Tiny Tapeout tile once the hidden layer goes past 64 units?Synthesising the streaming keyword-spotting engine at 96, 128, 192 and 256 hidden units (SKY130 HD, Yosys): area grows about 250 µm² per unit, so H = 128 (0.752 accuracy, 4-bit) needs a 2x2 tile (75,603 µm²) against a 1x2 (36,347 µm²) for H = 64 (0.737): +0.015 accuracy for twice the tile; H = 256 needs 4x2 at 50% utilisation, and its 8-bit layer-2 accumulator overflows 20 bits on a random model.
- Do trained keyword-spotting models fit a Tiny Tapeout tile's 16-bit bias and 20-bit accumulator?All 96 retrained keyword-spotting models fit the Tiny Tapeout engine's 16-bit bias and 20-bit accumulator limits (worst use 43% and 30%), accuracy through the tile contract equals the reference, and 32 trained models run bit-exact in RTL.
All 40 Task-specific AI accelerators projects →
Other research topics
Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1
Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.