Subject: [sv-cc] Re: Draft 5 Changes Review Request - part select
From: Andrzej Litwiniuk (Andrzej.Litwiniuk@synopsys.com)
Date: Tue Feb 24 2004 - 15:27:48 PST
David,
Please use Ralph's wording:
"In part select operations, the data is copied to or from the
canonical representation part designated by range [w-1:0] and
the implementation representation part designated by range [w+i-1:i]."
Ralph and I agreed that no other changes are required.
Thanks, Ralph, for rephrasing my wording! I like your version much better.
Regards,
Andrzej
>
> > ...It was intended that a normalized range [n-1:0] would be always
> > used for part select in canonical representation array.
>
> First, thanks for your well-timed remarks, which pinpoint a matter
> that's drawn our recent attention, too. There appear to be at least
> two potential problems: lack of clarity and (depending on interpretation)
> possible lack of symmetry in operations.
>
> 1. Clarity
> 'svGetPartSelectLogic' can write to a canonical array destination,
> rather than just to a 'chunk' (i.e., to "svLogicVec32*", rather than to a
> parameter of type svLogicVec32). The current prototype is:
>
> void svGetPartSelectLogic(svLogicVec32* d,
> const svLogicPackedArrRef s, int i, int w);
>
> >From the comment text as it now stands, we cannot tell whether we are
> writing the contents of implementation array [w+i-1:i] to the corresponding
> bits of the canonical array or to its bits [w-1:0] as you suggest.
>
> 2. Operation Symmetry
> The companion operation, svPutPartSelectLogic, has no such ambiguity.
> Since it copies from a single canonical 'chunk' "svLogicVec32 s", the part
> must run from [w-1:0], with w <= 32. If this were not so, we could start at
> some non-zero lower index and overshoot the chunk's legal upper index.
>
> void svPutPartSelectLogic(svLogicPackedArrRef d,
> const svLogicVec32 s, int i, int w);
>
> 3. Conclusion
> I support your interpretation, which would make the two operations
> symmetrical,
> since both would unambiguously move data to or from a canonical
> representation chunk.
> Therefore, I'd suggest:
>
> a. Changing the svGetPartSelectLogic parameters to use a 'chunk' as
> destination
> (remove the "*") in both E.10.3.2 and F.1:
>
> void svGetPartSelectLogic(svLogicVec32 d,
> const svLogicPackedArrRef s, int i, int w);
>
> > "The selected range in canonical representation will always
> > be [w-1:0] and [w+i-1:i] in implementation representation array."
> > or:
> > "Part select will be copied between [w-1:0] range in canonical
> representation
> > and [w+i-1:i] in implementation representation."
>
> . The content is fine but I'd suggest a somewhat more idiomatic expression:
>
> "In part select operations, the data is copied to or from the
> canonical
> representation part designated by range [w-1:0] and the
> implementation representation part designated by range [w+i-1:i]."
>
> Thanks and hope this is helpful,
> Ralph Duncan
> Mentor Graphics
>
This archive was generated by hypermail 2b28 : Tue Feb 24 2004 - 15:32:46 PST