Skip to main content

Module field_parallel

Module field_parallel 

Source
Expand description

Fully pipelined arithmetic modulo 2^255 - 19.

Values use five little-endian radix-2^51 limbs at module boundaries. Each limb product is a reusable six-stage cell containing six independent 26 x 17 multiplies. Zero-extending these operands fits the DSP48E2’s signed 27 x 18 multiplier. Five cells form a row and five rows form the complete 150-multiply matrix. This hierarchy keeps RHDL compilation bounded while exposing the same DSP-level parallelism as the high-throughput datapath.

Structs§

FieldAddSubIn
Input transaction for FieldAddSubPipe.
FieldAddSubOut
Output transaction from FieldAddSubPipe.
FieldAddSubPipe
Four-stage modular adder/subtractor with one-operation-per-cycle issue.
FieldElement51
Canonical field element in five little-endian radix-2^51 limbs.
FieldMulIn
Input transaction for FieldMulPipe.
FieldMulOut
Output transaction from FieldMulPipe.
FieldMulPipe
Seventeen-stage, initiation-interval-one field multiplier.

Functions§

field_add_kernel
Canonical field addition in a single combinational RHDL kernel.
field_addsub_kernel
State transition for FieldAddSubPipe.
field_eq_kernel
Return true when two canonical field elements are equal.
field_from_words_kernel
Decode four little-endian words into radix-2^51 limbs.
field_mul_kernel
State transition for FieldMulPipe.
field_neg_kernel
Canonical additive inverse.
field_sub_kernel
Canonical field subtraction in a single combinational RHDL kernel.
field_to_words_kernel
Encode canonical radix-2^51 limbs as four little-endian words.