Tutorial 41: Pre-Silicon Energy Estimation¶
Predict FPGA resource usage, power consumption, and energy per inference in under one second — before running any synthesis tool.
Why This Matters¶
Every SNN paper claims energy efficiency, but most use estimates or omit hardware numbers entirely. SC-NeuroCore's energy estimator gives you concrete numbers for your specific network on your specific FPGA target, instantly. No Vivado. No synthesis. Just answers.
1. Basic Estimation¶
from sc_neurocore.energy import estimate
report = estimate(
layer_sizes=[(16, 8), (8, 4)],
target="ice40",
bitstream_length=256,
)
print(report.summary())
2. Compare FPGA Targets¶
for target in ["ice40", "ecp5", "artix7", "zynq"]:
r = estimate([(16, 8), (8, 4)], target=target)
print(f"{target}: {r.total_luts:,} LUTs, {r.utilization_pct:.0f}%, "
f"{r.total_dynamic_power_mw:.2f} mW")
3. Event-Driven vs Clock-Driven¶
clock = estimate([(16, 8)], target="ice40", event_driven=False)
event = estimate([(16, 8)], target="ice40", event_driven=True)
savings = (1 - event.total_dynamic_power_mw / clock.total_dynamic_power_mw) * 100
print(f"Power reduction: {savings:.0f}%")
4. Does It Fit?¶
report = estimate([(784, 128), (128, 10)], target="ice40")
if report.fits_on_target:
print("Deploy!")
else:
print(f"Too large: {report.utilization_pct:.0f}% utilization")