[libre-riscv-dev] buffered pipeline

Luke Kenneth Casson Leighton lkcl at lkcl.net
Wed Mar 20 07:57:57 GMT 2019

On Wed, Mar 20, 2019 at 7:34 AM Jacob Lifshay <programmerjake at gmail.com> wrote:
> I'm in the midst of converting the pipeline stages I wrote to using Record.

 jacob, please: i already said that dependence on a specific class or
data structure is undesirable, and restricts options as well as
increases code size.  removal of SignalGroup and replacing it with
Record will not solve that particular problem.

 i've also *already developed* an example that uses Record, and shown
that the pipeline infrastructure and the API associated with it can
support the use of Records.

 remember that i have some code in the IEEE754 FPU which has already
been subdivided into modules that correspond with pipeline stages, so
am already taking that into account in the design of the Buffered
Pipeline code.

 i now have *four* different examples all of which conform to the same
API and, to my eye, i believe are already extremely clear and simple,
and i've found that efforts to further simplify or clarify them have
disadvantages, and actually restrict the flexibility of the API.

 please can you stop for a moment, and take a look at ExampleStage,
ExampleAddStage, ExampleAddRecordStage and LTStage, and let me know if
there's a way that the API which supports *all* of these examples may
be improved?

 bear in mind that both CombPipe and BufferedPipe may be used as
mix-ins with all of those four examples, to create *interoperable*
pipelines with different characteristics, as both CombPipe and
BufferedPipe conform to the *exact* same pipeline / control API.


More information about the libre-riscv-dev mailing list