[libre-riscv-dev] div/mod algorithm written in python

Jacob Lifshay programmerjake at gmail.com
Sat Jun 29 11:08:51 BST 2019


just to make clear, the code in algorithm.py is intended to be a golden
model for testing/verification, not for morphing into nmigen. the nmigen
would go in a separate file.

On Sat, Jun 29, 2019, 03:05 Luke Kenneth Casson Leighton <lkcl at lkcl.net>
wrote:

> On Sat, Jun 29, 2019 at 10:46 AM Jacob Lifshay <programmerjake at gmail.com>
> wrote:
> >
> > I completed the integer div/mod algorithm for simulation/testing and will
> > be adding fixed-point sqrt/rsqrt next.
>
>  exccellent.
>
> >  Those are the operations that handle
> > the mantissas for fdiv/fsqrt/frsqrt.
>
>  perfect - just what's needed.  the function "calculate_stage" is what
> goes into div1.py
>
>
> > See:
> >
> https://git.libre-riscv.org/?p=ieee754fpu.git;a=blob;f=src/ieee754/div_rem_sqrt_rsqrt/algorithm.py;h=74b7dec16164390576ab6bd741400e4eaa2a362a;hb=HEAD
> >
> > after the algorithms work in simulation, I'll convert to nmigen and wire
> > into the fp pipeline.
> >
> > I'm planning on having the whole fpdiv pipe in the div_rem_sqrt_rsqrt
> > folder, I just haven't gotten around to it.
>
>  yeh please don't do that - stick to the structure that's already
> pre-defined:
>
>  ieee754/fpvid/*
>  ieee754/fpmul/*
>  ieee754/fpadd/*
>  ieee754/fpsqrt/*
>
> so "calculate_stage" is what is called in ieee754/fpdiv/div1.py,
> taking its data _from_ the self.i object which is in ispec() format -
> these become the input parameters to class UnsignedDivRem - , and
> outputting its data _to_ self.o which is in ospec() format.
>
> that's difficult to do at the moment because
> UnsignedDivRem.calculate_stage overwrites its variables (self.quotient
> |= rather than returning the computed quotient_bit).
>
> once that's sorted, calculate_stage will drop into place nicely.
>
> l.
>
> _______________________________________________
> libre-riscv-dev mailing list
> libre-riscv-dev at lists.libre-riscv.org
> http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
>


More information about the libre-riscv-dev mailing list