dau_core.exp_generator¶
Renders the fixed-point exp tile from a declared operating point.
The datapath is dau_core.fixed_point.ExpDatapath and the emitted
SystemVerilog mirrors ExpDatapath.evaluate() step for step, so the
cocotb bench can compare against it with zero tolerance like every other
tile. The operating point – internal precision, table size, polynomial
degree, whether Horner steps round – arrives as configuration, which is why
this is a generator and not a checked-in file: the 256-entry table of
2**(j/256) is a function of those parameters and SystemVerilog cannot
compute it.
The datapath is PIPELINED, one multiply per stage, chosen after measuring what a multiply costs rather than from the estimate this docstring used to quote. Measured on the dpv1 Artix (2026-08-09, the registry’s points): 50 DSP48s at the exact point and 20 at the light one, against 740 on the part. Folding onto a shared multiplier would cut that to roughly a ninth, but at one row per nine cycles against sqrt’s and divide’s one per three – the tile would become the bottleneck of any chain it joined.
Classes¶
Renders |
Module Contents¶
- class dau_core.exp_generator.ExpTileGenerator(/, **data: Any)[source]¶
Bases:
dau_core.generators.CoreGeneratorRenders
dau_fixed_point_expfor 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_fixed_point_exp'¶
- datapath: dau_core.fixed_point.ExpDatapath¶
- 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.