coreblocks.func_blocks.fu.unsigned_multiplication package

Submodules

coreblocks.func_blocks.fu.unsigned_multiplication.common module

class coreblocks.func_blocks.fu.unsigned_multiplication.common.DSPMulUnit

Bases: Elaboratable

Module for 1 clock cycle multiplication, designed to be replaced with a DSP block by the synthesis tool.

Attributes
compute: Method(i=[(“i1”, n), (“i2”, n)], o=[(“o”, 2 * n)]), in out

Method for requesting computations and getting results in this same cycle.

__init__(dsp_width: int)
Parameters
dsp_width: int

Bit width of multiplied numbers.

class coreblocks.func_blocks.fu.unsigned_multiplication.common.MulBaseUnsigned

Bases: Elaboratable

Abstract module creating common interface of unsigned multiplication module.

Attributes
issue: Method(i=gen.get(UnsignedMulUnitLayouts).issue), in

Method used for requesting computation.

accept: Method(i=gen.get(UnsignedMulUnitLayouts).accept), out

Method used for getting result of requested computation.

__init__(gen_params: GenParams, dsp_width: int = 32)
Parameters
gen_params: GenParams

Core generation parameters.

coreblocks.func_blocks.fu.unsigned_multiplication.fast_recursive module

class coreblocks.func_blocks.fu.unsigned_multiplication.fast_recursive.RecursiveUnsignedMul

Bases: MulBaseUnsigned

Module with @see{MulBaseUnsigned} interface performing fast recursive multiplication within 1 clock cycle.

__init__(gen_params: GenParams, dsp_width: int = 8)
Parameters
gen_params: GenParams

Core generation parameters.

coreblocks.func_blocks.fu.unsigned_multiplication.pipelined module

class coreblocks.func_blocks.fu.unsigned_multiplication.pipelined.PipelinedUnsignedMul

Bases: MulBaseUnsigned

__init__(gen_params: GenParams, dsp_width: int = 18, dsp_number: int = 7)
Parameters
gen_params: GenParams

Core generation parameters.

coreblocks.func_blocks.fu.unsigned_multiplication.sequence module

class coreblocks.func_blocks.fu.unsigned_multiplication.sequence.SequentialUnsignedMul

Bases: MulBaseUnsigned

Module with @see{MulBaseUnsigned} interface performing sequential multiplication using single DSP unit. It uses classic recursive multiplication algorithm.

__init__(gen_params: GenParams, dsp_width: int = 8)
Parameters
gen_params: GenParams

Core generation parameters.

coreblocks.func_blocks.fu.unsigned_multiplication.shift module

class coreblocks.func_blocks.fu.unsigned_multiplication.shift.ShiftUnsignedMul

Bases: MulBaseUnsigned

Module with @see{MulBaseUnsigned} interface performing cheap multi clock cycle multiplication using Russian Peasants Algorithm.

__init__(gen_params: GenParams)
Parameters
gen_params: GenParams

Core generation parameters.

Module contents