[libre-riscv-dev] daily kan-ban update 14may2020

Luke Kenneth Casson Leighton lkcl at lkcl.net
Thu May 14 15:43:33 BST 2020


On Thu, May 14, 2020 at 3:23 PM Michael Nolan <mtnolan2640 at gmail.com> wrote:

> Yesterday I worked on connecting the rotator from microwatt up to the
> shift/rotate unit, fixing bugs in the rotator, and testing it.

i'm amazed it worked, and also how elegant the microwatt rotator code is.

> Today I might try working on comparisons, but I'm not sure whether they should
> be a part of the alu or a separate FU

i went through the list this morning, and left some TODOs.

cmpb is different from cmp: cmp is definitely based on add (actually,
subtract - but see the notes from execute1.vhdl):
https://github.com/antonblanchard/microwatt/blob/master/execute1.vhdl#L540

cmp is definitely arithmetic, however cmpb feels like it is a
logical-thing (and is in fixedlogical)
https://github.com/antonblanchard/microwatt/blob/master/execute1.vhdl#L657
https://github.com/antonblanchard/microwatt/blob/master/ppc_fx_insns.vhdl#L735
https://github.com/antonblanchard/microwatt/blob/master/helpers.vhdl#L117


btw, you'll like this: because we are doing a parallel processor,
different Function Units *can* actually cover multiple tasks :)  let's
not go into that right now, however if we convert power_enum Function
into an unary field (1<<0, 1<<1, 1<<2) then we can, in the CSV files,
set multiple bits.

a good example would be AND and OR and XOR: those are prime candidates
to put into *both* the Logical *and* Arithmetic pipelines.  recorded
it for now:
https://bugs.libre-soc.org/show_bug.cgi?id=310

l.



More information about the libre-riscv-dev mailing list