Expand description
fanout — the pit-of-success primitive for antenna-safe wide selects.
A wide mux/select driven by ONE bit is a met1-antenna hazard on an ASIC: that single select
net must fan out across the FULL datapath (every mux bit it gates), and a long, high-fan-out
wire is exactly the metal-1 area-ratio violation antenna checks flag. The GPU’s
SequentialFma datapath (gpu_simt_rtl) solved this for its per-cycle conditional-add partial
product sel ? data : 0 by SLICING it: emit slice (* keep *) copies of the select bit,
each ANDing its OWN width / slice-bit group of the data wire, so NO net’s fan-out exceeds
width / slice. Every copy equals the same one bit, so the concatenation is bit-for-bit the
original select — the value is unchanged; only the physical fan-out is bounded.
That is a GENERAL principle, not a GPU quirk: any wide mux/select driven by a single bit
should route it through bounded_fanout_select so its fan-out is structurally bounded by
width / slice and a met1 antenna is impossible by construction, no diode insertion needed.
The slice knob trades wires for fan-out: smaller slice = each copy gates FEWER bits = lower
fan-out = less antenna, at the cost of MORE (* keep *) copies; larger slice = the reverse.
Functions§
- bounded_
fanout_ select - Emit a fan-out-bounded image of the one-bit select
sel_expr ? data_wire : 0overwidthbits, sliced intoslicegroups.