[Libre-soc-bugs] [Bug 713] PartitionedSignal enhancement to add partition-context-aware lengths

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Mon Oct 11 14:42:56 BST 2021


https://bugs.libre-soc.org/show_bug.cgi?id=713

--- Comment #67 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
ah! i realised a couple of things:

1) setting a fixed width needs to be *optional* not
   mandatory.  we need *both* the option to specify
   that the width is to be per *element* (lane) as
   a fixed quantity *and* the option to set the overall
   width

2) and another option to say that based on the fixed
   width and based on the partition counts the element
   widths should be automatically calculated

def layout(elwid, part_counts, lane_shapes=None,
           fixed_width=None):
    if lane_shapes is None:
        lane_shapes = {}
        for p, c in part_counts.items():
           # calculate width of each partition
           lane_shapes[p] = lane_width // c
    if not isinstance(lane_shapes, Mapping):
        lane_shapes = {i: lane_shapes for i in part_counts}

of course an assert if both lane_shapes and fixed_width
are None.

basically, the actual registers are 64 bit so we *have* to
have a way to declare explicit subdivisions of exactly 64 bit.
but, for intermediary signals you want to say (such as for shift)
with absolute certainty that what you are using to shift is
a fixed width for all elwidths.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list