Skip to main content

Module lower

Module lower 

Source
Expand description

Float-function → analog-netlist lowering — the analog lane’s Futamura moment.

The region unit is a FUNCTION: its float parameters are the plane’s DAC inputs, its Assume statements the declared input ranges, its return the ADC tap. Extraction reuses the digital fabric’s certified if-conversion front-end (decision_fabric_from_source, imported read-only) on a contract-free twin of the source: the Assume range checks are the CONTROL PLANE’s job (the digital host validates a word before driving the DAC), so they are stripped from the analog dataflow — exactly the mixed-signal architecture, not an elision. The declared ranges themselves are read from the ORIGINAL function body.

Every cell the fabric front-end emits is either mapped to an analog tile (FAddF/FSubF → weighted Kirchhoff AnalogCell::Sum, FMulF → AnalogCell::GainConst when one side is a programmed constant, else the four-quadrant AnalogCell::Mul; IntToF of a constant folds) or refused with a NAMED AnaLowerError — fail-closed, never a silently-wrong circuit.

Functions§

analog_netlist_from_source
Lower fn_name in src to an analog tile netlist realizable on target.