[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
Sat Apr 27 14:07:46 BST 2019
http://bugs.libre-riscv.org/show_bug.cgi?id=64
--- Comment #17 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
jacob let's go through these, in order, one at a time, it's the
only real sane way to get through them all, just with a lot of
patience.
on the "name=" for input data and output data spec, i added this wrapper:
+def _spec(fn, name=None):
+ if name is None:
+ return fn()
+ varnames = dict(inspect.getmembers(fn.__code__))['co_varnames']
+ if 'name' in varnames:
+ return fn(name=name)
+ return fn()
+
+
basically, this keeps the API simple. developers who do not *want*
to add a name prefix are not forced to do so... and do not require
adding "name=None" to the input and output spec function.
https://git.libre-riscv.org/?p=ieee754fpu.git;a=commitdiff;h=8d38dc3d0ead75ff5313a653a2194c82a1ca0572
i modified one of the unit tests and visually inspected the graphviz,
it works well. i_data_INPUTNAME and o_data_OUTPUTNAME, and intermediaries,
all good.
also, chaining (both types: combinatorial and pipelining) have intermediary
names added where (if) ispec/ospec is deployed.
i know i suggested using nmigen-style name-None overriding: it'll get
too complicated. adding name= to input spec and output spec as originally
suggested however _will_ work... i just prefer that it not be forced onto
developers that don't want it (hence the dynamic check)
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list