dau_core.normal_cdf_generator¶
Renders the normal-CDF tile from a declared operating point.
Generated for the same reason the exp tile is: its per-segment Taylor coefficients are transcendental constants at the configured internal precision, and SystemVerilog cannot compute them at elaboration.
The emitted SystemVerilog mirrors
dau_core.fixed_point.NormalCdfDatapath.evaluate() step for step, so
the cocotb bench compares against it with zero tolerance like every other
tile. That model is correctly rounded over EVERY representable input, so for
this tile the algorithm and the mathematics coincide.
Pipelined one multiply per stage, which is what the exp measurements forced: a DSP48’s clock-to-out is ~3.5 ns, so a carry chain sitting between two of them overruns 8 ns.
Classes¶
Renders |
Module Contents¶
- class dau_core.normal_cdf_generator.NormalCdfTileGenerator(/, **data: Any)[source]¶
Bases:
dau_core.generators.CoreGeneratorRenders
dau_normal_cdffor one operating point.Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- module: str = 'dau_normal_cdf'¶
- datapath: dau_core.fixed_point.NormalCdfDatapath¶
- property source_name: str¶
- __call__(context: dau_core.generators.RenderContext) dau_core.generators.RenderedCore[source]¶
This method produces the result for the given context.
Instead of passing the context, one can pass an object that pydantic will try to validate as the context. Additionally, if kwargs are passed instead of the context, it will use these to construct the context.