[libre-riscv-dev] partitioned compare and mux

Luke Kenneth Casson Leighton lkcl at lkcl.net
Fri Feb 7 23:07:54 GMT 2020


On Fri, Feb 7, 2020 at 10:30 PM Jacob Lifshay <programmerjake at gmail.com> wrote:
>
> On Fri, Feb 7, 2020, 14:23 Luke Kenneth Casson Leighton <lkcl at lkcl.net>
> wrote:
>
> > ... damn, you're right.  yes.  we'll need to have the ability to
> > drop-in multiple extra carry bits in at various points.
> >
> > oh wait: i know.  yes, if you look at the way that the partitioning
> > works, extended-A is set up to have the partition points (inverted)
> > inserted in, however B very deliberately has *zeros* inserted in.  if
> > instead the "carry_in" is inserted into those points (the carry_in[0]
> > still has to be added in as a "pre-LSB") then that solves that one.
>
>
> we need to make sure that carry isn't accidentally propagated from the
> previous partition,

yes, this bit is where i get confused: this last bit is the one that
needs to become the carry-out... yes, as well as not accidentally
propagated.

> also, if a particular partition is merged with the
> previous partition, the carry in needs to be masked off to avoid
> accidentally adding a carry when there was none.

ok so one of the conditions would be that the carry_in is only
relevant at the beginning of the partition.  i'm tempted to suggest
that if a carry bit _is_ set in the middle of a partition, it would be
a hardware-fault.

i.e. the numbers attempting to be added had been divided up 8-16-8
(partition = 101) and yet the carry_in was set for a 16-16?  i.e. the
carry was not 0N0N?  that would be bad.

l.



More information about the libre-riscv-dev mailing list