[Libre-soc-bugs] [Bug 458] PartitionedSignal needs nmigen constructs "m.If", Switch etc
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Thu Sep 23 20:39:36 BST 2021
https://bugs.libre-soc.org/show_bug.cgi?id=458
--- Comment #6 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
there's a couple of phases here:
1) redirection of Part (similar to operator.add(x, y) calling x.__add__(y)
2) redirection of Mux (same)
3) redirection of Switch (same)
Part:
a) existing Part renamed to InternalPart
https://github.com/nmigen/nmigen/blob/59ef6e6a1c4e389a41148554f2dd492328820ecd/nmigen/hdl/ast.py#L785
any name will do. _InternalPart? _DefaultInternalPart?
the idea here is *not* to disrupt the codebase, minimise
changes, where actually moving the contents *of* Part into
UserValue would flag that we are "making more changes than
it actually is".
if whitequark then asks for the merge, that's great.
b) replacement for Part.
real simple:
def Part(lhs, *args): lhs.__part__(*args)
this is exactly what is done in python operator module,
follow the breadcrumbs.... :)
c) add overrideable function to Value
https://github.com/nmigen/nmigen/blob/59ef6e6a1c4e389a41148554f2dd492328820ecd/nmigen/hdl/ast.py#L133
a case can be made for calling it Value.__part__ because of the convention used
by the python operator module.
d) (later, TODO) write a PartitionedSignal.__part__()
but this can be under a separate bugreport, separate budget.
all of the others (Switch, Mux, Cat as well) can follow the
same pattern. Cat() needs some special consideration.
we have a nmigen repo copy, i suggest making a branch (sigh)
and using that. means we also have to change all the documentation
and scripts (argh) or (argh) work with a separate branch for
anything depending on this... hmm, that might not be needed
because the ieee754 PartitionedSignal class isn't used anywhere
have to see how that goes.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list