Dear dr Kimmitt and Chris,
thank you very much - this is exactly what I was looking for. My mind
was screaming for help being lost between these two, not knowing where
to start.
At this point I will not claim that I understand completely (I think
Schrodinger was the one who said that "those who claim that they
understand the quantum mechanics, clearly do not"), as there is a long
way for me to go now - investigating the code, as suggested. But what
you achieved with these two explanations is that my mind is at peace now
and I have a feeling of what is where and why, no matter at how high a
level of abstraction.
Thank you very much, both.
I am looking forward to this research and further communication.
Best regards,
Aleksandar Pajkanovic
Дана 21.11.2017, у 17:00, Christopher Celio је написао/ла:
> I hope you won't mind me now completely moving to the second
part of my
> initial query. Can you tell me about the relation between the hardfloat
> submodule and the FPU.scala file?
>
> If all of the FPU is generated based on the HDL code of the hardfloat
> submodule, what does FPU.scala actually do?
>
> Thanks a lot,
>
> Aleksandar
hardfloat is where the parameterized blocks that execute FP operations reside. They do
the "math" stuff, if you will. Blocks like MulAddRecFN.scala (multiply-add in a
recoded format for some set-at-instantiation-time N-bit floating point number).
Rocket's FPU.scala is where you instantiate these units, set their values (say, to
get a double-precision FMA unit), and do all of the yucky plumbing into and out of the
unit. FPU.scala contains the FP register file, it manages the packing and unpacking into
and out of the the recoded format, it manages the condition flags, and more.
-Chris