[libre-riscv-dev] [Bug 64] data handling / io control / data routing API needed
bugzilla-daemon at libre-riscv.org
bugzilla-daemon at libre-riscv.org
Fri Apr 19 10:16:23 BST 2019
http://bugs.libre-riscv.org/show_bug.cgi?id=64
--- Comment #3 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
Review of singlepipe.py
-----------------------
review of the following revision:
https://git.libre-riscv.org/?p=ieee754fpu.git;a=blob;f=src/add/singlepipe.py;h=fe052be72a3e70fde85e56058cf708ea9e7cd341;hb=25a0ec563bd7837b43a1d04036b2a5945c97023b
RecordObject
------------
not documented. required due to Record not being able to modify fields.
should be moved to its own issue (#66).
PrevControl
-----------
self._o_ready and s_o_ready and use of i_valid_test not documented or
clear. makes a bit of a mess of the code.
effort is designed to allow data processing blocks to have a degree
of control over when they accept incoming data (even if upstream
is otherwise ready)
really not clear.
NextControl
-----------
self.d_valid not documented or clear.
effort is designed to allow data processing blocks to control when
they *send* outgoing data (even if downstream is otherwise ready)
not clear.
Visitor
-------
a mess. needs to be converted to an iterator/generator (yield)
needs __iter__ and __next__ (etc).
Eq
--
would be much simpler when Visitor is converted to a generator.
flatten
-------
needs to be converted to an iterator/generator, and for yield
part to be split out to a separate class/function (similar to
what has been done with eq/Eq/Visitor).
StageCls
--------
name is unclear. postprocess experiment not documented.
Stage
-----
name is again unclear.
RecordBasedStage
----------------
name ("stage") unclear. purpose (actual need) is also unclear.
StageChain
----------
name ("stage") unclear. need for specallocate parameter is not documented
ControlBase
-----------
* name "stage" not clear
* ControlBase allocating i_data / o_data not clear
* connect() function could (does?) overwrite i_data / o_data
* role of set_input not documented (or clear)
* recursive ports() function's purpose not clear (or documented)
* _elaborate rather than just elaborate, reason not clear
* "dynamic" ready/valid (involving stage in signalling) not clear
* addition of _postprocess not been discussed (or evaluated)
BufferedHandshake
-----------------
* known bugs (#57) in interaction with other control-blocks
* *may* be possible to replace with FIFOControl (see below)
* really complex and not obvious what's going on
* name not clear
SimpleHandshake
---------------
* based on wishbone / AXI4 signalling however actual characteristics unknown
* involved in bug #57
* name not clear
UnbufferedPipeline
------------------
* based on "RegStage" from proposal, however actual characteristics unknown
* involved in bug #57
* name not clear
UnbufferedPipeline2
-------------------
* based on "BreakReadyStage" from proposal, actual characteristics unknown
* involved in bug #57
* name not clear
PassThroughStage
----------------
* very useful as a building-block
* use of a single iospecfn however stops any kind of data width processing
(this is good?)
PassThroughHandshake
--------------------
* name not clear
* based on "BreakReadyStage" however actual characteristics unknown
* is not involved in bug #57
RegisterPipeline
----------------
* probably should not be based on UnbufferedPipeline due to known issues #57
* better name needed?
FIFOControl
-----------
* nice class!
* buffered argument has to go (use new Queue)
* use of flatten() on output causes problems for stage postprocess
* comment about "looking like PrevControl" redundant due to removal of code
* i_data requiring a "shape" function is problematic.
Replacement classes
-------------------
all replacement classes need a proper audit and review of their own.
these are the classes with the exact same names, UnbufferedPipeline,
PassThroughHandshake, BufferedHandshake, SimpleHandshake.
should they even *be* replaced, due to the additional complexity
introduced through the use of Queue? the graphviz layouts are a mess,
comparatively speaking.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list